diff --git a/.travis.yml b/.travis.yml
index 2e1e55e72c61c9c511f5ad4960a0fe349588504f..aaa0185a7492decdef102e7594fc3f31e40660b2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,11 +22,11 @@ matrix:
   - os: linux
     dist: trusty
     sudo: required
-    env: CPPCHECK=yes CPPCHECK_VERSION=1.69
+    env: CPPCHECK=yes CPPCHECK_VERSION=1.71
   - os: linux
     dist: trusty
     sudo: required
-    env: CPPCHECK=yes CPPCHECK_VERSION=1.71
+    env: CPPCHECK=yes CPPCHECK_VERSION=1.74
 # then check with different optimization flags
   - os: linux
     dist: trusty
@@ -50,7 +50,7 @@ matrix:
     env: PLUMED_CC=mpicc PLUMED_CXX=mpic++  PLUMED_CXXFLAGS=-O3
   allow_failures:
 # I allow this to fail temporarily
-    - env: CPPCHECK=yes CPPCHECK_VERSION=1.71
+    - env: CPPCHECK=yes CPPCHECK_VERSION=1.74
 # Possible additional variables:
 #   VALGRIND=yes to make valgrind tests, only when log contains string [valgrind]
 install:
@@ -97,6 +97,7 @@ install:
 script:
 # we enable crystallization and manyrestraints modules
   - CONFIG_FLAGS="$CONFIG_FLAGS --enable-modules=crystallization:manyrestraints"
+  - if test "$MAKEDOC" == yes ; then CONFIG_FLAGS="$CONFIG_FLAGS --enable-pdfdoc" ; fi
 
 # BUILD:
 # this is done only if PLUMED_CXX is defined
diff --git a/CHANGES/v2.2.txt b/CHANGES/v2.2.txt
index 8133601a2377a433d174762313cd8322591a8cb9..cbb22ca2a6c9c9be5745a2945eed40c909ef1a28 100644
--- a/CHANGES/v2.2.txt
+++ b/CHANGES/v2.2.txt
@@ -5,7 +5,14 @@
 Version 2.2 (Oct 13, 2015)
 ----------------------------
 
-Include all fixes in branch 2.1 indicated in \ref CHANGES-2-1 .
+Version 2.2 contains several improvements with respect to 2.1. Users currently working with 2.1
+should have a look at the section "Changes leading to incompatible behavior" below and
+might need tiny adjustments in their input files. In 2.2 we restored more features of 1.3
+that were missing in 2.1, so users still working with 1.3 could opt for an upgrade.
+A tutorial explaining how to move from PLUMED 1 to PLUMED 2 is available (see \ref moving).
+
+Below you find a list of all the changes with respect to version 2.1.
+Notice that version 2.2 includes already all the fixes in branch 2.1 up to 2.1.4 indicated in \ref CHANGES-2-1 .
 
 Changes from version 2.1 which are relevant for users:
 - Changes leading to incompatible behavior:
@@ -105,7 +112,7 @@ For developers:
 - ./configure is automatically relaunched when changing ./configure or Makefile.conf. This makes it more robust
   to switch between branches.
 
-Unreleased changes (will be included in 2.2.2)
+Version 2.2.2 (Apr 13, 2016)
 ----------------------------------------------
 
 For users:
@@ -116,11 +123,33 @@ For users:
   asks for too many atoms, see \issue{185}.
 - Optimisations (activation of the dependencies, secondary structures, DRMSD)
 - Fixed a performance regression with RMSD=OPTIMAL-FAST
+- Fixed a bug in the normalization of kernel functions (relevant for \ref HISTOGRAM).
+- Fixed a regression introduced in v2.2 that was making \ref METAD with non-MPI multiple walkers crash
+  if reading frequently. See \issue{190}
+- Updated patch for gromacs 5.x. Patches for gromacs 5.0 and 5.1 have been fixed so as to allow
+  patching in runtime mode.
+- Possibility to control manual generation (including pdf) from ./configure. Pdf manual is now off
+  by default. Notice that on travis CI it is still generated.
 
 For developers:
 - Fixed a bug in the interpretation of cmd strings. Namely, an erroneous string was not triggering an error.
   This is harmless for MD codes properly patched, but could have introduced problems in MD codes with typoes
   in cmd strings.
+- ./configure is not automatically relaunched anymore when doing `make clean`.
+
+Unreleased changes (will be included in 2.2.3)
+----------------------------------------------
+
+For users:
+- Updated patches for gromacs 5.1.x and 5.0.x to fix a problem when plumed was trying to write to an already
+  closed gromacs log file.
+- When looking for a value outside the GRID now the error include the name of the responsible 
+  collective variable
+- Numerical check in LatticeReduction made less picky.
+- Added --disable-dependency-tracking to ./configure
+- \ref LOAD now works also when plumed is installed with a suffix.
+
+For developers:
 
 See branch \branch{v2.2} on git repository.
 
diff --git a/Makefile b/Makefile
index 7bb9aaf82202861ceed453f57871b48f55d35c15..9b0e5a4a37899d27d12cbd94a3af80aa57668224 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,6 @@
--include Makefile.conf
+ifneq ($(MAKECMDGOALS),clean)
+ -include Makefile.conf
+endif
 
 
 SRCDIRS := src test
@@ -7,13 +9,19 @@ SUBDIRS := $(SRCDIRS) user-doc developer-doc regtest
 SUBDIRSCLEAN:=$(addsuffix .clean,$(SUBDIRS))
 
      
-.PHONY: all lib clean $(SRCDIRS) doc docclean check cppcheck distclean
+.PHONY: all lib clean $(SRCDIRS) doc docclean check cppcheck distclean all_plus_docs
 
 # if machine dependent configuration has been found:
 ifdef GCCDEP
 all:
 	$(MAKE) lib
 
+# target useful for macports
+# it builds the code then the documentation
+all_plus_docs:
+	$(MAKE) all
+	$(MAKE) docs
+
 lib:
 	$(MAKE)	-C src
 
diff --git a/Makefile.conf.in b/Makefile.conf.in
index adc18cda09788f34cc550884d2dbaa34290ec621..9059e0c269af3cee4543fdb860baec7c70b0f989 100644
--- a/Makefile.conf.in
+++ b/Makefile.conf.in
@@ -13,11 +13,14 @@ SOEXT=@SOEXT@
 LD=@LD@
 LDSO=@LDSO@
 GCCDEP=@CXX@
+disable_dependency_tracking=@disable_dependency_tracking@
 prefix=@prefix@
 program_name=@program_name@
 program_transform_name=@program_transform_name@
 program_can_run_mpi=@program_can_run_mpi@
 program_can_run=@program_can_run@
+make_pdfdoc=@make_pdfdoc@
+make_doc=@make_doc@
 PACKAGE_TARNAME=@program_name@
 LD_RO=@LD_RO@
 exec_prefix=@exec_prefix@
diff --git a/VERSION b/VERSION
index fbc2c38e3ab13db82b499b41a3a2e1cce8864a8d..ea0ddd64fff44581a7e4f0b5b64d6949f5dcad13 100644
--- a/VERSION
+++ b/VERSION
@@ -5,4 +5,4 @@
 # (this is same as gromacs)
 # Notice that "plumed --version" will return only 2.X
 # and "plumed --long-version" will return the full string
-2.2.1
+2.2.2
diff --git a/configure b/configure
index 2586638be2a2438638832454a32a2939007a59a9..2a8bb8a2a995fe309e82fa49dbf36ec69ea8b323 100755
--- a/configure
+++ b/configure
@@ -625,9 +625,12 @@ program_name
 LD_RO
 program_can_run_mpi
 program_can_run
+disable_dependency_tracking
 xxd
+make_pdfdoc
 dot
 doxygen
+make_doc
 LD
 OPENMP_CXXFLAGS
 EGREP
@@ -691,11 +694,14 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_modules
+enable_doc
+enable_pdfdoc
 enable_debug
 enable_basic_warnings
 enable_fussy
 enable_debug_glibcxx
 enable_shared
+enable_dependency_tracking
 enable_cxx_exceptions
 enable_ld_r
 enable_mpi
@@ -1349,11 +1355,15 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-modules        all/none/reset or : separated list such as
                           +crystallization:-bias default: reset
+  --enable-doc            enable documentation, default: yes
+  --enable-pdfdoc         enable pdf version of the manual, default: no
   --enable-debug          enable debugging, default: no
   --enable-basic-warnings enable basic warnings, default: yes
   --enable-fussy          enable fussy warnings, default: no
   --enable-debug-glibcxx  enable enable boundary check, default: no
   --enable-shared         enable shared libs, default: yes
+  --enable-dependency-tracking
+                          enable dependency tracking, default: yes
   --enable-cxx-exceptions enable c++ exceptions, default: no
   --enable-ld-r           enable group object files, default: yes
   --enable-mpi            enable search for mpi, default: yes
@@ -2392,6 +2402,42 @@ fi
 
 # set enable flags for ./configure
 
+doc=
+# Check whether --enable-doc was given.
+if test "${enable_doc+set}" = set; then :
+  enableval=$enable_doc; case "${enableval}" in
+             (yes) doc=true ;;
+             (no)  doc=false ;;
+             (*)   as_fn_error $? "wrong argument to --enable-doc" "$LINENO" 5 ;;
+  esac
+else
+  case "yes" in
+             (yes) doc=true ;;
+             (no)  doc=false ;;
+  esac
+
+fi
+
+
+
+pdfdoc=
+# Check whether --enable-pdfdoc was given.
+if test "${enable_pdfdoc+set}" = set; then :
+  enableval=$enable_pdfdoc; case "${enableval}" in
+             (yes) pdfdoc=true ;;
+             (no)  pdfdoc=false ;;
+             (*)   as_fn_error $? "wrong argument to --enable-pdfdoc" "$LINENO" 5 ;;
+  esac
+else
+  case "no" in
+             (yes) pdfdoc=true ;;
+             (no)  pdfdoc=false ;;
+  esac
+
+fi
+
+
+
 debug=
 # Check whether --enable-debug was given.
 if test "${enable_debug+set}" = set; then :
@@ -2482,6 +2528,24 @@ fi
 
 
 
+dependency_tracking=
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking; case "${enableval}" in
+             (yes) dependency_tracking=true ;;
+             (no)  dependency_tracking=false ;;
+             (*)   as_fn_error $? "wrong argument to --enable-dependency-tracking" "$LINENO" 5 ;;
+  esac
+else
+  case "yes" in
+             (yes) dependency_tracking=true ;;
+             (no)  dependency_tracking=false ;;
+  esac
+
+fi
+
+
+
 cxx_exceptions=
 # Check whether --enable-cxx-exceptions was given.
 if test "${enable_cxx_exceptions+set}" = set; then :
@@ -6532,6 +6596,13 @@ $as_echo "$as_me: WARNING: dynamic library will be disabled" >&2;}
 fi
 #### Options for dynamic library to work properly ####
 
+
+make_doc=no
+if test "$doc" == true
+then
+
+make_doc=yes
+
 ### Look for doxygen
 # Extract the first word of "doxygen", so it can be a program name with args.
 set dummy doxygen; ac_word=$2
@@ -6578,8 +6649,9 @@ then
     { $as_echo "$as_me:${as_lineno-$LINENO}: Doxygen version is fine" >&5
 $as_echo "$as_me: Doxygen version is fine" >&6;}
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen version is <1.8. You might have problems in generating manuals" >&5
-$as_echo "$as_me: WARNING: Doxygen version is <1.8. You might have problems in generating manuals" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen version is <1.8" >&5
+$as_echo "$as_me: WARNING: Doxygen version is <1.8" >&2;}
+    make_doc=no
   fi
   # Extract the first word of "dot", so it can be a program name with args.
 set dummy dot; ac_word=$2
@@ -6623,6 +6695,31 @@ fi
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to see diagrams in the manual" >&5
 $as_echo "$as_me: WARNING: You will not be able to see diagrams in the manual" >&2;}
   fi
+else
+  make_doc=no
+fi
+fi
+
+if test "$make_doc" = yes
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Manuals will be generated" >&5
+$as_echo "$as_me: Manuals will be generated" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Manuals will not be generated" >&5
+$as_echo "$as_me: Manuals will not be generated" >&6;}
+fi
+
+
+make_pdfdoc=""
+if test "$pdfdoc" == true && test "$make_doc" == yes
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will be generated" >&5
+$as_echo "$as_me: A PDF version of the manual will be generated" >&6;}
+  make_pdfdoc=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: A PDF version of the manual will not be generated" >&5
+$as_echo "$as_me: A PDF version of the manual will not be generated" >&6;}
+  make_pdfdoc=no
 fi
 
 ### Look for xxd
@@ -6669,6 +6766,18 @@ then
 fi
 
 
+if test "$dependency_tracking" = true
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: dependency tracking enabled" >&5
+$as_echo "$as_me: dependency tracking enabled" >&6;}
+  disable_dependency_tracking=no
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: dependency tracking disabled" >&5
+$as_echo "$as_me: dependency tracking disabled" >&6;}
+  disable_dependency_tracking=yes
+fi
+
+
 program_can_run=""
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can be run on this machine" >&5
 $as_echo_n "checking whether a program can be run on this machine... " >&6; }
diff --git a/configure.ac b/configure.ac
index c003c4136bd1bb830a4af2c9b6c4cfce2b5713ef..1657d8ac96264f242ef3e448a7d8501cfbfaac41 100644
--- a/configure.ac
+++ b/configure.ac
@@ -156,11 +156,14 @@ AC_ARG_ENABLE([modules],
 
 
 # set enable flags for ./configure
+PLUMED_CONFIG_ENABLE([doc],[doc],[documentation],[yes])
+PLUMED_CONFIG_ENABLE([pdfdoc],[pdfdoc],[pdf version of the manual],[no])
 PLUMED_CONFIG_ENABLE([debug],[debug],[debugging],[no])
 PLUMED_CONFIG_ENABLE([basic_warnings],[basic-warnings],[basic warnings],[yes])
 PLUMED_CONFIG_ENABLE([fussy],[fussy],[fussy warnings],[no])
 PLUMED_CONFIG_ENABLE([debug_glibcxx],[debug-glibcxx],[enable boundary check],[no])
 PLUMED_CONFIG_ENABLE([shared],[shared],[shared libs],[yes])
+PLUMED_CONFIG_ENABLE([dependency_tracking],[dependency-tracking],[dependency tracking],[yes])
 PLUMED_CONFIG_ENABLE([cxx_exceptions],[cxx-exceptions],[c++ exceptions],[no])
 PLUMED_CONFIG_ENABLE([ld_r],[ld-r],[group object files],[yes])
 PLUMED_CONFIG_ENABLE([mpi],[mpi],[search for mpi],[yes])
@@ -534,6 +537,13 @@ then
 fi
 #### Options for dynamic library to work properly ####
 
+AC_SUBST(make_doc)
+make_doc=no
+if test "$doc" == true
+then
+
+make_doc=yes
+
 ### Look for doxygen
 AC_CHECK_PROG([doxygen],[doxygen],[found])
 if test "$doxygen" == found
@@ -543,13 +553,35 @@ then
   then
     AC_MSG_NOTICE([Doxygen version is fine])
   else
-    AC_MSG_WARN([Doxygen version is <1.8. You might have problems in generating manuals])
+    AC_MSG_WARN([Doxygen version is <1.8])
+    make_doc=no
   fi
   AC_CHECK_PROG([dot],[dot],[found])
   if test "$dot" != found
   then
     AC_MSG_WARN([You will not be able to see diagrams in the manual])
   fi
+else
+  make_doc=no
+fi
+fi
+
+if test "$make_doc" = yes
+then
+  AC_MSG_NOTICE([Manuals will be generated])
+else
+  AC_MSG_NOTICE([Manuals will not be generated])
+fi
+
+AC_SUBST(make_pdfdoc)
+make_pdfdoc=""
+if test "$pdfdoc" == true && test "$make_doc" == yes
+then
+  AC_MSG_NOTICE([A PDF version of the manual will be generated])
+  make_pdfdoc=yes
+else
+  AC_MSG_NOTICE([A PDF version of the manual will not be generated])
+  make_pdfdoc=no
 fi
 
 ### Look for xxd
@@ -559,6 +591,16 @@ then
   AC_MSG_ERROR([xxd should be installed for PLUMED to compile properly])
 fi
 
+AC_SUBST(disable_dependency_tracking)
+if test "$dependency_tracking" = true
+then
+  AC_MSG_NOTICE([dependency tracking enabled])
+  disable_dependency_tracking=no
+else
+  AC_MSG_NOTICE([dependency tracking disabled])
+  disable_dependency_tracking=yes
+fi
+
 AC_SUBST(program_can_run)
 program_can_run=""
 AC_MSG_CHECKING([whether a program can be run on this machine])
diff --git a/developer-doc/Makefile b/developer-doc/Makefile
index f62e49febc4f28472d18301879a74d9a9a2eafd7..f83e0c889bce44e5c2855d0ef65b9bfb847f8971 100644
--- a/developer-doc/Makefile
+++ b/developer-doc/Makefile
@@ -1,10 +1,16 @@
+# include the machine dependent configuration
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../Makefile.conf
+endif
 
 .PHONY: all clean
 
 all:
+ifeq ($(make_doc),yes)
 	./extract
 	./go-doxygen
 	cp *png html/
+endif
 
 clean:
 	rm -fr automatic html latex *~ links-to-user-manual.txt
diff --git a/patches/gromacs-5.0.4.config b/patches/gromacs-5.0.7.config
similarity index 100%
rename from patches/gromacs-5.0.4.config
rename to patches/gromacs-5.0.7.config
diff --git a/patches/gromacs-5.0.4.diff/src/gromacs/CMakeLists.txt b/patches/gromacs-5.0.7.diff/src/gromacs/CMakeLists.txt
similarity index 98%
rename from patches/gromacs-5.0.4.diff/src/gromacs/CMakeLists.txt
rename to patches/gromacs-5.0.7.diff/src/gromacs/CMakeLists.txt
index cc97aa80501c8b4ffcf508a7f9fb4df40033131f..5cb7c29fd00b3210478fff2b1cd2ff6968a0d55f 100644
--- a/patches/gromacs-5.0.4.diff/src/gromacs/CMakeLists.txt
+++ b/patches/gromacs-5.0.7.diff/src/gromacs/CMakeLists.txt
@@ -184,6 +184,8 @@ else()
 endif()
 set_source_files_properties(selection/scanner.cpp PROPERTIES COMPILE_FLAGS "${_scanner_cpp_compiler_flags}")
 
+target_link_libraries(libgromacs ${PLUMED_LOAD})
+
 target_link_libraries(libgromacs
                       ${EXTRAE_LIBRARIES}
                       ${GMX_GPU_LIBRARIES}
@@ -191,7 +193,7 @@ target_link_libraries(libgromacs
                       ${TNG_IO_LIBRARIES}
                       ${FFT_LIBRARIES} ${LINEAR_ALGEBRA_LIBRARIES}
                       ${XML_LIBRARIES}
-                      ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS} ${PLUMED_LOAD})
+                      ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS})
 set_target_properties(libgromacs PROPERTIES
                       OUTPUT_NAME "gromacs${GMX_LIBS_SUFFIX}"
                       SOVERSION ${LIBRARY_SOVERSION}
diff --git a/patches/gromacs-5.0.4.diff/src/gromacs/CMakeLists.txt.preplumed b/patches/gromacs-5.0.7.diff/src/gromacs/CMakeLists.txt.preplumed
similarity index 100%
rename from patches/gromacs-5.0.4.diff/src/gromacs/CMakeLists.txt.preplumed
rename to patches/gromacs-5.0.7.diff/src/gromacs/CMakeLists.txt.preplumed
diff --git a/patches/gromacs-5.0.4.diff/src/gromacs/mdlib/force.c b/patches/gromacs-5.0.7.diff/src/gromacs/mdlib/force.c
similarity index 100%
rename from patches/gromacs-5.0.4.diff/src/gromacs/mdlib/force.c
rename to patches/gromacs-5.0.7.diff/src/gromacs/mdlib/force.c
diff --git a/patches/gromacs-5.0.4.diff/src/gromacs/mdlib/force.c.preplumed b/patches/gromacs-5.0.7.diff/src/gromacs/mdlib/force.c.preplumed
similarity index 100%
rename from patches/gromacs-5.0.4.diff/src/gromacs/mdlib/force.c.preplumed
rename to patches/gromacs-5.0.7.diff/src/gromacs/mdlib/force.c.preplumed
diff --git a/patches/gromacs-5.0.4.diff/src/gromacs/mdlib/minimize.c b/patches/gromacs-5.0.7.diff/src/gromacs/mdlib/minimize.c
similarity index 100%
rename from patches/gromacs-5.0.4.diff/src/gromacs/mdlib/minimize.c
rename to patches/gromacs-5.0.7.diff/src/gromacs/mdlib/minimize.c
diff --git a/patches/gromacs-5.0.4.diff/src/gromacs/mdlib/minimize.c.preplumed b/patches/gromacs-5.0.7.diff/src/gromacs/mdlib/minimize.c.preplumed
similarity index 100%
rename from patches/gromacs-5.0.4.diff/src/gromacs/mdlib/minimize.c.preplumed
rename to patches/gromacs-5.0.7.diff/src/gromacs/mdlib/minimize.c.preplumed
diff --git a/patches/gromacs-5.0.4.diff/src/programs/mdrun/md.c b/patches/gromacs-5.0.7.diff/src/programs/mdrun/md.c
similarity index 98%
rename from patches/gromacs-5.0.4.diff/src/programs/mdrun/md.c
rename to patches/gromacs-5.0.7.diff/src/programs/mdrun/md.c
index c881c0170f906b1e8399148f878b71eae5d7af8f..57f06b074dafbe3f6e7a9607afebb0bf45cb9d54 100644
--- a/patches/gromacs-5.0.4.diff/src/programs/mdrun/md.c
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/md.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -203,7 +203,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
     gmx_bool          bVV, bIterativeCase, bFirstIterate, bTemp, bPres, bTrotter;
     gmx_bool          bUpdateDoLR;
     real              dvdl_constr;
-    rvec             *cbuf = NULL;
+    rvec             *cbuf        = NULL;
+    int               cbuf_nalloc = 0;
     matrix            lastbox;
     real              veta_save, scalevir, tracevir;
     real              vetanew = 0;
@@ -259,10 +260,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
        md-vv-avek uses averaged half step velocities for T-control (but full step ekin for P control)
        md uses averaged half step kinetic energies to determine temperature unless defined otherwise by GMX_EKIN_AVE_VEL; */
     bVV = EI_VV(ir->eI);
-    if (bVV) /* to store the initial velocities while computing virial */
-    {
-        snew(cbuf, top_global->natoms);
-    }
     /* all the iteratative cases - only if there are constraints */
     bIterativeCase = ((IR_NPH_TROTTER(ir) || IR_NPT_TROTTER(ir)) && (constr) && (!bRerunMD));
     gmx_iterate_init(&iterate, FALSE); /* The default value of iterate->bIterationActive is set to
@@ -365,6 +362,11 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n");
     }
 
+    if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && fr->nbv && fr->nbv->bUseGPU)
+    {
+        gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto");
+    }
+
     if (DEFORM(*ir))
     {
         tMPI_Thread_mutex_lock(&deform_init_box_mutex);
@@ -551,16 +553,21 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
     nstfep = ir->fepvals->nstdhdl;
     if (ir->bExpanded)
     {
-        nstfep = gmx_greatest_common_divisor(ir->fepvals->nstdhdl, nstfep);
+        nstfep = gmx_greatest_common_divisor(ir->expandedvals->nstexpanded, nstfep);
     }
     if (repl_ex_nst > 0)
     {
         nstfep = gmx_greatest_common_divisor(repl_ex_nst, nstfep);
     }
 
-    /* I'm assuming we need global communication the first time! MRS */
+    /* Be REALLY careful about what flags you set here. You CANNOT assume
+     * this is the first step, since we might be restarting from a checkpoint,
+     * and in that case we should not do any modifications to the state.
+     */
+    bStopCM = (ir->comm_mode != ecmNO && !ir->bContinuation);
+
     cglo_flags = (CGLO_TEMPERATURE | CGLO_GSTAT
-                  | ((ir->comm_mode != ecmNO) ? CGLO_STOPCM : 0)
+                  | (bStopCM ? CGLO_STOPCM : 0)
                   | (bVV ? CGLO_PRESSURE : 0)
                   | (bVV ? CGLO_CONSTRAINT : 0)
                   | (bRerunMD ? CGLO_RERUNMD : 0)
@@ -1187,6 +1194,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         if (bVV && !bStartingFromCpt && !bRerunMD)
         /*  ############### START FIRST UPDATE HALF-STEP FOR VV METHODS############### */
         {
+            rvec *vbuf = NULL;
+
             wallcycle_start(wcycle, ewcUPDATE);
             if (ir->eI == eiVV && bInitStep)
             {
@@ -1196,7 +1205,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                  * revert back to the initial coordinates
                  * so that the input is actually the initial step.
                  */
-                copy_rvecn(state->v, cbuf, 0, state->natoms); /* should make this better for parallelizing? */
+                snew(vbuf, state->natoms);
+                copy_rvecn(state->v, vbuf, 0, state->natoms); /* should make this better for parallelizing? */
             }
             else
             {
@@ -1318,6 +1328,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                                     | (bTemp ? CGLO_TEMPERATURE : 0)
                                     | (bPres ? CGLO_PRESSURE : 0)
                                     | (bPres ? CGLO_CONSTRAINT : 0)
+                                    | (bStopCM ? CGLO_STOPCM : 0)
                                     | ((iterate.bIterationActive) ? CGLO_ITERATE : 0)
                                     | (bFirstIterate ? CGLO_FIRSTITERATE : 0)
                                     | CGLO_SCALEEKIN
@@ -1378,9 +1389,10 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                 }
             }
             /* if it's the initial step, we performed this first step just to get the constraint virial */
-            if (bInitStep && ir->eI == eiVV)
+            if (ir->eI == eiVV && bInitStep)
             {
-                copy_rvecn(cbuf, state->v, 0, state->natoms);
+                copy_rvecn(vbuf, state->v, 0, state->natoms);
+                sfree(vbuf);
             }
             wallcycle_stop(wcycle, ewcUPDATE);
         }
@@ -1636,6 +1648,12 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
 
                 if (ir->eI == eiVVAK)
                 {
+                    /* We probably only need md->homenr, not state->natoms */
+                    if (state->natoms > cbuf_nalloc)
+                    {
+                        cbuf_nalloc = state->natoms;
+                        srenew(cbuf, cbuf_nalloc);
+                    }
                     copy_rvecn(state->x, cbuf, 0, state->natoms);
                 }
                 bUpdateDoLR = (fr->bTwinRange && do_per_step(step, ir->nstcalclr));
diff --git a/patches/gromacs-5.0.4.diff/src/programs/mdrun/md.c.preplumed b/patches/gromacs-5.0.7.diff/src/programs/mdrun/md.c.preplumed
similarity index 98%
rename from patches/gromacs-5.0.4.diff/src/programs/mdrun/md.c.preplumed
rename to patches/gromacs-5.0.7.diff/src/programs/mdrun/md.c.preplumed
index 3d98d597c7d0e9c009e02d816e631b3f36846a25..0b12964ea5f7b09e4cf241c335e3256ed8378d8e 100644
--- a/patches/gromacs-5.0.4.diff/src/programs/mdrun/md.c.preplumed
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/md.c.preplumed
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -197,7 +197,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
     gmx_bool          bVV, bIterativeCase, bFirstIterate, bTemp, bPres, bTrotter;
     gmx_bool          bUpdateDoLR;
     real              dvdl_constr;
-    rvec             *cbuf = NULL;
+    rvec             *cbuf        = NULL;
+    int               cbuf_nalloc = 0;
     matrix            lastbox;
     real              veta_save, scalevir, tracevir;
     real              vetanew = 0;
@@ -247,10 +248,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
        md-vv-avek uses averaged half step velocities for T-control (but full step ekin for P control)
        md uses averaged half step kinetic energies to determine temperature unless defined otherwise by GMX_EKIN_AVE_VEL; */
     bVV = EI_VV(ir->eI);
-    if (bVV) /* to store the initial velocities while computing virial */
-    {
-        snew(cbuf, top_global->natoms);
-    }
     /* all the iteratative cases - only if there are constraints */
     bIterativeCase = ((IR_NPH_TROTTER(ir) || IR_NPT_TROTTER(ir)) && (constr) && (!bRerunMD));
     gmx_iterate_init(&iterate, FALSE); /* The default value of iterate->bIterationActive is set to
@@ -353,6 +350,11 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n");
     }
 
+    if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && fr->nbv && fr->nbv->bUseGPU)
+    {
+        gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto");
+    }
+
     if (DEFORM(*ir))
     {
         tMPI_Thread_mutex_lock(&deform_init_box_mutex);
@@ -539,16 +541,21 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
     nstfep = ir->fepvals->nstdhdl;
     if (ir->bExpanded)
     {
-        nstfep = gmx_greatest_common_divisor(ir->fepvals->nstdhdl, nstfep);
+        nstfep = gmx_greatest_common_divisor(ir->expandedvals->nstexpanded, nstfep);
     }
     if (repl_ex_nst > 0)
     {
         nstfep = gmx_greatest_common_divisor(repl_ex_nst, nstfep);
     }
 
-    /* I'm assuming we need global communication the first time! MRS */
+    /* Be REALLY careful about what flags you set here. You CANNOT assume
+     * this is the first step, since we might be restarting from a checkpoint,
+     * and in that case we should not do any modifications to the state.
+     */
+    bStopCM = (ir->comm_mode != ecmNO && !ir->bContinuation);
+
     cglo_flags = (CGLO_TEMPERATURE | CGLO_GSTAT
-                  | ((ir->comm_mode != ecmNO) ? CGLO_STOPCM : 0)
+                  | (bStopCM ? CGLO_STOPCM : 0)
                   | (bVV ? CGLO_PRESSURE : 0)
                   | (bVV ? CGLO_CONSTRAINT : 0)
                   | (bRerunMD ? CGLO_RERUNMD : 0)
@@ -1089,6 +1096,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         if (bVV && !bStartingFromCpt && !bRerunMD)
         /*  ############### START FIRST UPDATE HALF-STEP FOR VV METHODS############### */
         {
+            rvec *vbuf = NULL;
+
             wallcycle_start(wcycle, ewcUPDATE);
             if (ir->eI == eiVV && bInitStep)
             {
@@ -1098,7 +1107,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                  * revert back to the initial coordinates
                  * so that the input is actually the initial step.
                  */
-                copy_rvecn(state->v, cbuf, 0, state->natoms); /* should make this better for parallelizing? */
+                snew(vbuf, state->natoms);
+                copy_rvecn(state->v, vbuf, 0, state->natoms); /* should make this better for parallelizing? */
             }
             else
             {
@@ -1220,6 +1230,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                                     | (bTemp ? CGLO_TEMPERATURE : 0)
                                     | (bPres ? CGLO_PRESSURE : 0)
                                     | (bPres ? CGLO_CONSTRAINT : 0)
+                                    | (bStopCM ? CGLO_STOPCM : 0)
                                     | ((iterate.bIterationActive) ? CGLO_ITERATE : 0)
                                     | (bFirstIterate ? CGLO_FIRSTITERATE : 0)
                                     | CGLO_SCALEEKIN
@@ -1280,9 +1291,10 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                 }
             }
             /* if it's the initial step, we performed this first step just to get the constraint virial */
-            if (bInitStep && ir->eI == eiVV)
+            if (ir->eI == eiVV && bInitStep)
             {
-                copy_rvecn(cbuf, state->v, 0, state->natoms);
+                copy_rvecn(vbuf, state->v, 0, state->natoms);
+                sfree(vbuf);
             }
             wallcycle_stop(wcycle, ewcUPDATE);
         }
@@ -1538,6 +1550,12 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
 
                 if (ir->eI == eiVVAK)
                 {
+                    /* We probably only need md->homenr, not state->natoms */
+                    if (state->natoms > cbuf_nalloc)
+                    {
+                        cbuf_nalloc = state->natoms;
+                        srenew(cbuf, cbuf_nalloc);
+                    }
                     copy_rvecn(state->x, cbuf, 0, state->natoms);
                 }
                 bUpdateDoLR = (fr->bTwinRange && do_per_step(step, ir->nstcalclr));
diff --git a/patches/gromacs-5.0.4.diff/src/programs/mdrun/mdrun.cpp b/patches/gromacs-5.0.7.diff/src/programs/mdrun/mdrun.cpp
similarity index 99%
rename from patches/gromacs-5.0.4.diff/src/programs/mdrun/mdrun.cpp
rename to patches/gromacs-5.0.7.diff/src/programs/mdrun/mdrun.cpp
index e9fbf485821e175988bb7cddc43b00b0c4f80e8f..eee02d4ee571de612b8a1d6e1747c192b4af509a 100644
--- a/patches/gromacs-5.0.4.diff/src/programs/mdrun/mdrun.cpp
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/mdrun.cpp
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -668,14 +668,14 @@ int gmx_mdrun(int argc, char *argv[])
         gmx_fatal(FARGS, "Replica exchange number of exchanges needs to be positive");
     }
 
-    if (nmultisim > 1)
+    if (nmultisim >= 1)
     {
 #ifndef GMX_THREAD_MPI
         gmx_bool bParFn = (multidir == NULL);
         init_multisystem(cr, nmultisim, multidir, NFILE, fnm, bParFn);
 #else
-        gmx_fatal(FARGS, "mdrun -multi is not supported with the thread library. "
-                  "Please compile GROMACS with MPI support");
+        gmx_fatal(FARGS, "mdrun -multi or -multidir are not supported with the thread-MPI library. "
+                  "Please compile GROMACS with a proper external MPI library.");
 #endif
     }
 
@@ -769,6 +769,9 @@ int gmx_mdrun(int argc, char *argv[])
     {
         gmx_log_open(ftp2fn(efLOG, NFILE, fnm), cr,
                      !bSepPot, Flags & MD_APPENDFILES, &fplog);
+        please_cite(fplog, "Abraham2015");
+        please_cite(fplog, "Pall2015");
+        please_cite(fplog, "Pronk2013");
         please_cite(fplog, "Hess2008b");
         please_cite(fplog, "Spoel2005a");
         please_cite(fplog, "Lindahl2001a");
@@ -821,12 +824,6 @@ int gmx_mdrun(int argc, char *argv[])
                   nmultisim, repl_ex_nst, repl_ex_nex, repl_ex_seed,
                   pforce, cpt_period, max_hours, deviceOptions, imdport, Flags);
 
-    /* PLUMED */
-    if(plumedswitch){
-      plumed_finalize(plumedmain);
-    }
-    /* END PLUMED */
-
     /* Log file has to be closed in mdrunner if we are appending to it
        (fplog not set here) */
     if (MASTER(cr) && !bAppendFiles)
diff --git a/patches/gromacs-5.0.4.diff/src/programs/mdrun/mdrun.cpp.preplumed b/patches/gromacs-5.0.7.diff/src/programs/mdrun/mdrun.cpp.preplumed
similarity index 99%
rename from patches/gromacs-5.0.4.diff/src/programs/mdrun/mdrun.cpp.preplumed
rename to patches/gromacs-5.0.7.diff/src/programs/mdrun/mdrun.cpp.preplumed
index 6bac3f08e7e6709a81be1606711027302cc034f8..e3571f634057cc40debe673695b4da6287b95e13 100644
--- a/patches/gromacs-5.0.4.diff/src/programs/mdrun/mdrun.cpp.preplumed
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/mdrun.cpp.preplumed
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -661,14 +661,14 @@ int gmx_mdrun(int argc, char *argv[])
         gmx_fatal(FARGS, "Replica exchange number of exchanges needs to be positive");
     }
 
-    if (nmultisim > 1)
+    if (nmultisim >= 1)
     {
 #ifndef GMX_THREAD_MPI
         gmx_bool bParFn = (multidir == NULL);
         init_multisystem(cr, nmultisim, multidir, NFILE, fnm, bParFn);
 #else
-        gmx_fatal(FARGS, "mdrun -multi is not supported with the thread library. "
-                  "Please compile GROMACS with MPI support");
+        gmx_fatal(FARGS, "mdrun -multi or -multidir are not supported with the thread-MPI library. "
+                  "Please compile GROMACS with a proper external MPI library.");
 #endif
     }
 
@@ -762,6 +762,9 @@ int gmx_mdrun(int argc, char *argv[])
     {
         gmx_log_open(ftp2fn(efLOG, NFILE, fnm), cr,
                      !bSepPot, Flags & MD_APPENDFILES, &fplog);
+        please_cite(fplog, "Abraham2015");
+        please_cite(fplog, "Pall2015");
+        please_cite(fplog, "Pronk2013");
         please_cite(fplog, "Hess2008b");
         please_cite(fplog, "Spoel2005a");
         please_cite(fplog, "Lindahl2001a");
diff --git a/patches/gromacs-5.0.4.diff/src/programs/mdrun/repl_ex.c b/patches/gromacs-5.0.7.diff/src/programs/mdrun/repl_ex.c
similarity index 99%
rename from patches/gromacs-5.0.4.diff/src/programs/mdrun/repl_ex.c
rename to patches/gromacs-5.0.7.diff/src/programs/mdrun/repl_ex.c
index cfb0b7f354b5277c0a61d02955d1f5c063b8dd8f..af47b1d3b4071d6a2e17b73c6137aeba12ad5447 100644
--- a/patches/gromacs-5.0.4.diff/src/programs/mdrun/repl_ex.c
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/repl_ex.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -415,7 +415,7 @@ gmx_repl_ex_t init_replica_exchange(FILE *fplog,
     snew(re->order, re->nrepl);
     for (i = 0; i < re->nrepl; i++)
     {
-        snew(re->cyclic[i], re->nrepl);
+        snew(re->cyclic[i], re->nrepl+1);
         snew(re->order[i], re->nrepl);
     }
     /* allocate space for the functions storing the data for the replicas */
diff --git a/patches/gromacs-5.0.4.diff/src/programs/mdrun/repl_ex.c.preplumed b/patches/gromacs-5.0.7.diff/src/programs/mdrun/repl_ex.c.preplumed
similarity index 99%
rename from patches/gromacs-5.0.4.diff/src/programs/mdrun/repl_ex.c.preplumed
rename to patches/gromacs-5.0.7.diff/src/programs/mdrun/repl_ex.c.preplumed
index 46a9bc0113cd1cd6755cca7903cc71128c2386f4..5db5d309cd12f340c8a69a72eee95bcf39af6031 100644
--- a/patches/gromacs-5.0.4.diff/src/programs/mdrun/repl_ex.c.preplumed
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/repl_ex.c.preplumed
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -400,7 +400,7 @@ gmx_repl_ex_t init_replica_exchange(FILE *fplog,
     snew(re->order, re->nrepl);
     for (i = 0; i < re->nrepl; i++)
     {
-        snew(re->cyclic[i], re->nrepl);
+        snew(re->cyclic[i], re->nrepl+1);
         snew(re->order[i], re->nrepl);
     }
     /* allocate space for the functions storing the data for the replicas */
diff --git a/patches/gromacs-5.0.7.diff/src/programs/mdrun/runner.c b/patches/gromacs-5.0.7.diff/src/programs/mdrun/runner.c
new file mode 100644
index 0000000000000000000000000000000000000000..f324edbde1b50a2d661aa66b4de9ba7ac2019234
--- /dev/null
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/runner.c
@@ -0,0 +1,1877 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <signal.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <assert.h>
+
+#include "typedefs.h"
+#include "gromacs/utility/smalloc.h"
+#include "sysstuff.h"
+#include "copyrite.h"
+#include "force.h"
+#include "mdrun.h"
+#include "md_logging.h"
+#include "md_support.h"
+#include "network.h"
+#include "names.h"
+#include "disre.h"
+#include "orires.h"
+#include "pme.h"
+#include "mdatoms.h"
+#include "repl_ex.h"
+#include "deform.h"
+#include "qmmm.h"
+#include "domdec.h"
+#include "coulomb.h"
+#include "constr.h"
+#include "mvdata.h"
+#include "checkpoint.h"
+#include "mtop_util.h"
+#include "sighandler.h"
+#include "txtdump.h"
+#include "gmx_detect_hardware.h"
+#include "gmx_omp_nthreads.h"
+#include "gromacs/gmxpreprocess/calc_verletbuf.h"
+#include "gmx_fatal_collective.h"
+#include "membed.h"
+#include "macros.h"
+#include "gmx_thread_affinity.h"
+#include "inputrec.h"
+
+#include "gromacs/fileio/tpxio.h"
+#include "gromacs/mdlib/nbnxn_search.h"
+#include "gromacs/mdlib/nbnxn_consts.h"
+#include "gromacs/timing/wallcycle.h"
+#include "gromacs/utility/gmxmpi.h"
+#include "gromacs/utility/gmxomp.h"
+#include "gromacs/swap/swapcoords.h"
+#include "gromacs/essentialdynamics/edsam.h"
+#include "gromacs/pulling/pull.h"
+#include "gromacs/pulling/pull_rotation.h"
+
+#ifdef GMX_FAHCORE
+#include "corewrap.h"
+#endif
+
+#include "gpu_utils.h"
+#include "nbnxn_cuda_data_mgmt.h"
+
+/* PLUMED */
+#include "../../../Plumed.h"
+extern int    plumedswitch;
+extern plumed plumedmain; 
+/* END PLUMED */
+
+typedef struct {
+    gmx_integrator_t *func;
+} gmx_intp_t;
+
+/* The array should match the eI array in include/types/enums.h */
+const gmx_intp_t    integrator[eiNR] = { {do_md}, {do_steep}, {do_cg}, {do_md}, {do_md}, {do_nm}, {do_lbfgs}, {do_tpi}, {do_tpi}, {do_md}, {do_md}, {do_md}};
+
+gmx_int64_t         deform_init_init_step_tpx;
+matrix              deform_init_box_tpx;
+tMPI_Thread_mutex_t deform_init_box_mutex = TMPI_THREAD_MUTEX_INITIALIZER;
+
+
+#ifdef GMX_THREAD_MPI
+/* The minimum number of atoms per tMPI thread. With fewer atoms than this,
+ * the number of threads will get lowered.
+ */
+#define MIN_ATOMS_PER_MPI_THREAD    90
+#define MIN_ATOMS_PER_GPU           900
+
+struct mdrunner_arglist
+{
+    gmx_hw_opt_t    hw_opt;
+    FILE           *fplog;
+    t_commrec      *cr;
+    int             nfile;
+    const t_filenm *fnm;
+    output_env_t    oenv;
+    gmx_bool        bVerbose;
+    gmx_bool        bCompact;
+    int             nstglobalcomm;
+    ivec            ddxyz;
+    int             dd_node_order;
+    real            rdd;
+    real            rconstr;
+    const char     *dddlb_opt;
+    real            dlb_scale;
+    const char     *ddcsx;
+    const char     *ddcsy;
+    const char     *ddcsz;
+    const char     *nbpu_opt;
+    int             nstlist_cmdline;
+    gmx_int64_t     nsteps_cmdline;
+    int             nstepout;
+    int             resetstep;
+    int             nmultisim;
+    int             repl_ex_nst;
+    int             repl_ex_nex;
+    int             repl_ex_seed;
+    real            pforce;
+    real            cpt_period;
+    real            max_hours;
+    const char     *deviceOptions;
+    int             imdport;
+    unsigned long   Flags;
+};
+
+
+/* The function used for spawning threads. Extracts the mdrunner()
+   arguments from its one argument and calls mdrunner(), after making
+   a commrec. */
+static void mdrunner_start_fn(void *arg)
+{
+    struct mdrunner_arglist *mda = (struct mdrunner_arglist*)arg;
+    struct mdrunner_arglist  mc  = *mda; /* copy the arg list to make sure
+                                            that it's thread-local. This doesn't
+                                            copy pointed-to items, of course,
+                                            but those are all const. */
+    t_commrec *cr;                       /* we need a local version of this */
+    FILE      *fplog = NULL;
+    t_filenm  *fnm;
+
+    fnm = dup_tfn(mc.nfile, mc.fnm);
+
+    cr = reinitialize_commrec_for_this_thread(mc.cr);
+
+    if (MASTER(cr))
+    {
+        fplog = mc.fplog;
+    }
+
+    mdrunner(&mc.hw_opt, fplog, cr, mc.nfile, fnm, mc.oenv,
+             mc.bVerbose, mc.bCompact, mc.nstglobalcomm,
+             mc.ddxyz, mc.dd_node_order, mc.rdd,
+             mc.rconstr, mc.dddlb_opt, mc.dlb_scale,
+             mc.ddcsx, mc.ddcsy, mc.ddcsz,
+             mc.nbpu_opt, mc.nstlist_cmdline,
+             mc.nsteps_cmdline, mc.nstepout, mc.resetstep,
+             mc.nmultisim, mc.repl_ex_nst, mc.repl_ex_nex, mc.repl_ex_seed, mc.pforce,
+             mc.cpt_period, mc.max_hours, mc.deviceOptions, mc.imdport, mc.Flags);
+}
+
+/* called by mdrunner() to start a specific number of threads (including
+   the main thread) for thread-parallel runs. This in turn calls mdrunner()
+   for each thread.
+   All options besides nthreads are the same as for mdrunner(). */
+static t_commrec *mdrunner_start_threads(gmx_hw_opt_t *hw_opt,
+                                         FILE *fplog, t_commrec *cr, int nfile,
+                                         const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+                                         gmx_bool bCompact, int nstglobalcomm,
+                                         ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+                                         const char *dddlb_opt, real dlb_scale,
+                                         const char *ddcsx, const char *ddcsy, const char *ddcsz,
+                                         const char *nbpu_opt, int nstlist_cmdline,
+                                         gmx_int64_t nsteps_cmdline,
+                                         int nstepout, int resetstep,
+                                         int nmultisim, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed,
+                                         real pforce, real cpt_period, real max_hours,
+                                         const char *deviceOptions, unsigned long Flags)
+{
+    int                      ret;
+    struct mdrunner_arglist *mda;
+    t_commrec               *crn; /* the new commrec */
+    t_filenm                *fnmn;
+
+    /* first check whether we even need to start tMPI */
+    if (hw_opt->nthreads_tmpi < 2)
+    {
+        return cr;
+    }
+
+    /* a few small, one-time, almost unavoidable memory leaks: */
+    snew(mda, 1);
+    fnmn = dup_tfn(nfile, fnm);
+
+    /* fill the data structure to pass as void pointer to thread start fn */
+    /* hw_opt contains pointers, which should all be NULL at this stage */
+    mda->hw_opt          = *hw_opt;
+    mda->fplog           = fplog;
+    mda->cr              = cr;
+    mda->nfile           = nfile;
+    mda->fnm             = fnmn;
+    mda->oenv            = oenv;
+    mda->bVerbose        = bVerbose;
+    mda->bCompact        = bCompact;
+    mda->nstglobalcomm   = nstglobalcomm;
+    mda->ddxyz[XX]       = ddxyz[XX];
+    mda->ddxyz[YY]       = ddxyz[YY];
+    mda->ddxyz[ZZ]       = ddxyz[ZZ];
+    mda->dd_node_order   = dd_node_order;
+    mda->rdd             = rdd;
+    mda->rconstr         = rconstr;
+    mda->dddlb_opt       = dddlb_opt;
+    mda->dlb_scale       = dlb_scale;
+    mda->ddcsx           = ddcsx;
+    mda->ddcsy           = ddcsy;
+    mda->ddcsz           = ddcsz;
+    mda->nbpu_opt        = nbpu_opt;
+    mda->nstlist_cmdline = nstlist_cmdline;
+    mda->nsteps_cmdline  = nsteps_cmdline;
+    mda->nstepout        = nstepout;
+    mda->resetstep       = resetstep;
+    mda->nmultisim       = nmultisim;
+    mda->repl_ex_nst     = repl_ex_nst;
+    mda->repl_ex_nex     = repl_ex_nex;
+    mda->repl_ex_seed    = repl_ex_seed;
+    mda->pforce          = pforce;
+    mda->cpt_period      = cpt_period;
+    mda->max_hours       = max_hours;
+    mda->deviceOptions   = deviceOptions;
+    mda->Flags           = Flags;
+
+    /* now spawn new threads that start mdrunner_start_fn(), while
+       the main thread returns, we set thread affinity later */
+    ret = tMPI_Init_fn(TRUE, hw_opt->nthreads_tmpi, TMPI_AFFINITY_NONE,
+                       mdrunner_start_fn, (void*)(mda) );
+    if (ret != TMPI_SUCCESS)
+    {
+        return NULL;
+    }
+
+    crn = reinitialize_commrec_for_this_thread(cr);
+    return crn;
+}
+
+
+static int get_tmpi_omp_thread_division(const gmx_hw_info_t *hwinfo,
+                                        const gmx_hw_opt_t  *hw_opt,
+                                        int                  nthreads_tot,
+                                        int                  ngpu)
+{
+    int nthreads_tmpi;
+
+    /* There are no separate PME nodes here, as we ensured in
+     * check_and_update_hw_opt that nthreads_tmpi>0 with PME nodes
+     * and a conditional ensures we would not have ended up here.
+     * Note that separate PME nodes might be switched on later.
+     */
+    if (ngpu > 0)
+    {
+        nthreads_tmpi = ngpu;
+        if (nthreads_tot > 0 && nthreads_tot < nthreads_tmpi)
+        {
+            nthreads_tmpi = nthreads_tot;
+        }
+    }
+    else if (hw_opt->nthreads_omp > 0)
+    {
+        /* Here we could oversubscribe, when we do, we issue a warning later */
+        nthreads_tmpi = max(1, nthreads_tot/hw_opt->nthreads_omp);
+    }
+    else
+    {
+        /* TODO choose nthreads_omp based on hardware topology
+           when we have a hardware topology detection library */
+        /* In general, when running up to 4 threads, OpenMP should be faster.
+         * Note: on AMD Bulldozer we should avoid running OpenMP over two dies.
+         * On Intel>=Nehalem running OpenMP on a single CPU is always faster,
+         * even on two CPUs it's usually faster (but with many OpenMP threads
+         * it could be faster not to use HT, currently we always use HT).
+         * On Nehalem/Westmere we want to avoid running 16 threads over
+         * two CPUs with HT, so we need a limit<16; thus we use 12.
+         * A reasonable limit for Intel Sandy and Ivy bridge,
+         * not knowing the topology, is 16 threads.
+         * Below we check for Intel and AVX, which for now includes
+         * Sandy/Ivy Bridge, Has/Broadwell. By checking for AVX instead of
+         * model numbers we ensure also future Intel CPUs are covered.
+         */
+        const int nthreads_omp_always_faster             =  4;
+        const int nthreads_omp_always_faster_Nehalem     = 12;
+        const int nthreads_omp_always_faster_Intel_AVX   = 16;
+        gmx_bool  bIntelAVX;
+
+        bIntelAVX =
+            (gmx_cpuid_vendor(hwinfo->cpuid_info) == GMX_CPUID_VENDOR_INTEL &&
+             gmx_cpuid_feature(hwinfo->cpuid_info, GMX_CPUID_FEATURE_X86_AVX));
+
+        if (nthreads_tot <= nthreads_omp_always_faster ||
+            ((gmx_cpuid_is_intel_nehalem(hwinfo->cpuid_info) && nthreads_tot <= nthreads_omp_always_faster_Nehalem) ||
+             (bIntelAVX && nthreads_tot <= nthreads_omp_always_faster_Intel_AVX)))
+        {
+            /* Use pure OpenMP parallelization */
+            nthreads_tmpi = 1;
+        }
+        else
+        {
+            /* Don't use OpenMP parallelization */
+            nthreads_tmpi = nthreads_tot;
+        }
+    }
+
+    return nthreads_tmpi;
+}
+
+
+/* Get the number of threads to use for thread-MPI based on how many
+ * were requested, which algorithms we're using,
+ * and how many particles there are.
+ * At the point we have already called check_and_update_hw_opt.
+ * Thus all options should be internally consistent and consistent
+ * with the hardware, except that ntmpi could be larger than #GPU.
+ */
+static int get_nthreads_mpi(const gmx_hw_info_t *hwinfo,
+                            gmx_hw_opt_t *hw_opt,
+                            t_inputrec *inputrec, gmx_mtop_t *mtop,
+                            const t_commrec *cr,
+                            FILE *fplog)
+{
+    int      nthreads_hw, nthreads_tot_max, nthreads_tmpi, nthreads_new, ngpu;
+    int      min_atoms_per_mpi_thread;
+    char    *env;
+    char     sbuf[STRLEN];
+    gmx_bool bCanUseGPU;
+
+    if (hw_opt->nthreads_tmpi > 0)
+    {
+        /* Trivial, return right away */
+        return hw_opt->nthreads_tmpi;
+    }
+
+    nthreads_hw = hwinfo->nthreads_hw_avail;
+
+    /* How many total (#tMPI*#OpenMP) threads can we start? */
+    if (hw_opt->nthreads_tot > 0)
+    {
+        nthreads_tot_max = hw_opt->nthreads_tot;
+    }
+    else
+    {
+        nthreads_tot_max = nthreads_hw;
+    }
+
+    bCanUseGPU = (inputrec->cutoff_scheme == ecutsVERLET &&
+                  hwinfo->gpu_info.ncuda_dev_compatible > 0);
+    if (bCanUseGPU)
+    {
+        ngpu = hwinfo->gpu_info.ncuda_dev_compatible;
+    }
+    else
+    {
+        ngpu = 0;
+    }
+
+    if (inputrec->cutoff_scheme == ecutsGROUP)
+    {
+        /* We checked this before, but it doesn't hurt to do it once more */
+        assert(hw_opt->nthreads_omp == 1);
+    }
+
+    nthreads_tmpi =
+        get_tmpi_omp_thread_division(hwinfo, hw_opt, nthreads_tot_max, ngpu);
+
+    if (inputrec->eI == eiNM || EI_TPI(inputrec->eI))
+    {
+        /* Dims/steps are divided over the nodes iso splitting the atoms */
+        min_atoms_per_mpi_thread = 0;
+    }
+    else
+    {
+        if (bCanUseGPU)
+        {
+            min_atoms_per_mpi_thread = MIN_ATOMS_PER_GPU;
+        }
+        else
+        {
+            min_atoms_per_mpi_thread = MIN_ATOMS_PER_MPI_THREAD;
+        }
+    }
+
+    /* Check if an algorithm does not support parallel simulation.  */
+    if (nthreads_tmpi != 1 &&
+        ( inputrec->eI == eiLBFGS ||
+          inputrec->coulombtype == eelEWALD ) )
+    {
+        nthreads_tmpi = 1;
+
+        md_print_warn(cr, fplog, "The integration or electrostatics algorithm doesn't support parallel runs. Using a single thread-MPI thread.\n");
+        if (hw_opt->nthreads_tmpi > nthreads_tmpi)
+        {
+            gmx_fatal(FARGS, "You asked for more than 1 thread-MPI thread, but an algorithm doesn't support that");
+        }
+    }
+    else if (mtop->natoms/nthreads_tmpi < min_atoms_per_mpi_thread)
+    {
+        /* the thread number was chosen automatically, but there are too many
+           threads (too few atoms per thread) */
+        nthreads_new = max(1, mtop->natoms/min_atoms_per_mpi_thread);
+
+        /* Avoid partial use of Hyper-Threading */
+        if (gmx_cpuid_x86_smt(hwinfo->cpuid_info) == GMX_CPUID_X86_SMT_ENABLED &&
+            nthreads_new > nthreads_hw/2 && nthreads_new < nthreads_hw)
+        {
+            nthreads_new = nthreads_hw/2;
+        }
+
+        /* Avoid large prime numbers in the thread count */
+        if (nthreads_new >= 6)
+        {
+            /* Use only 6,8,10 with additional factors of 2 */
+            int fac;
+
+            fac = 2;
+            while (3*fac*2 <= nthreads_new)
+            {
+                fac *= 2;
+            }
+
+            nthreads_new = (nthreads_new/fac)*fac;
+        }
+        else
+        {
+            /* Avoid 5 */
+            if (nthreads_new == 5)
+            {
+                nthreads_new = 4;
+            }
+        }
+
+        nthreads_tmpi = nthreads_new;
+
+        fprintf(stderr, "\n");
+        fprintf(stderr, "NOTE: Parallelization is limited by the small number of atoms,\n");
+        fprintf(stderr, "      only starting %d thread-MPI threads.\n", nthreads_tmpi);
+        fprintf(stderr, "      You can use the -nt and/or -ntmpi option to optimize the number of threads.\n\n");
+    }
+
+    return nthreads_tmpi;
+}
+#endif /* GMX_THREAD_MPI */
+
+
+/* We determine the extra cost of the non-bonded kernels compared to
+ * a reference nstlist value of 10 (which is the default in grompp).
+ */
+static const int    nbnxn_reference_nstlist = 10;
+/* The values to try when switching  */
+const int           nstlist_try[] = { 20, 25, 40 };
+#define NNSTL  sizeof(nstlist_try)/sizeof(nstlist_try[0])
+/* Increase nstlist until the non-bonded cost increases more than listfac_ok,
+ * but never more than listfac_max.
+ * A standard (protein+)water system at 300K with PME ewald_rtol=1e-5
+ * needs 1.28 at rcoulomb=0.9 and 1.24 at rcoulomb=1.0 to get to nstlist=40.
+ * Note that both CPU and GPU factors are conservative. Performance should
+ * not go down due to this tuning, except with a relatively slow GPU.
+ * On the other hand, at medium/high parallelization or with fast GPUs
+ * nstlist will not be increased enough to reach optimal performance.
+ */
+/* CPU: pair-search is about a factor 1.5 slower than the non-bonded kernel */
+static const float  nbnxn_cpu_listfac_ok    = 1.05;
+static const float  nbnxn_cpu_listfac_max   = 1.09;
+/* GPU: pair-search is a factor 1.5-3 slower than the non-bonded kernel */
+static const float  nbnxn_gpu_listfac_ok    = 1.20;
+static const float  nbnxn_gpu_listfac_max   = 1.30;
+
+/* Try to increase nstlist when using the Verlet cut-off scheme */
+static void increase_nstlist(FILE *fp, t_commrec *cr,
+                             t_inputrec *ir, int nstlist_cmdline,
+                             const gmx_mtop_t *mtop, matrix box,
+                             gmx_bool bGPU)
+{
+    float                  listfac_ok, listfac_max;
+    int                    nstlist_orig, nstlist_prev;
+    verletbuf_list_setup_t ls;
+    real                   rlist_nstlist10, rlist_inc, rlist_ok, rlist_max;
+    real                   rlist_new, rlist_prev;
+    int                    nstlist_ind = 0;
+    t_state                state_tmp;
+    gmx_bool               bBox, bDD, bCont;
+    const char            *nstl_gpu = "\nFor optimal performance with a GPU nstlist (now %d) should be larger.\nThe optimum depends on your CPU and GPU resources.\nYou might want to try several nstlist values.\n";
+    const char            *nve_err  = "Can not increase nstlist because an NVE ensemble is used";
+    const char            *vbd_err  = "Can not increase nstlist because verlet-buffer-tolerance is not set or used";
+    const char            *box_err  = "Can not increase nstlist because the box is too small";
+    const char            *dd_err   = "Can not increase nstlist because of domain decomposition limitations";
+    char                   buf[STRLEN];
+
+    if (nstlist_cmdline <= 0)
+    {
+        if (ir->nstlist == 1)
+        {
+            /* The user probably set nstlist=1 for a reason,
+             * don't mess with the settings.
+             */
+            return;
+        }
+
+        if (fp != NULL && bGPU && ir->nstlist < nstlist_try[0])
+        {
+            fprintf(fp, nstl_gpu, ir->nstlist);
+        }
+        nstlist_ind = 0;
+        while (nstlist_ind < NNSTL && ir->nstlist >= nstlist_try[nstlist_ind])
+        {
+            nstlist_ind++;
+        }
+        if (nstlist_ind == NNSTL)
+        {
+            /* There are no larger nstlist value to try */
+            return;
+        }
+    }
+
+    if (EI_MD(ir->eI) && ir->etc == etcNO)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", nve_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", nve_err);
+        }
+
+        return;
+    }
+
+    if (ir->verletbuf_tol == 0 && bGPU)
+    {
+        gmx_fatal(FARGS, "You are using an old tpr file with a GPU, please generate a new tpr file with an up to date version of grompp");
+    }
+
+    if (ir->verletbuf_tol < 0)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", vbd_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", vbd_err);
+        }
+
+        return;
+    }
+
+    if (bGPU)
+    {
+        listfac_ok  = nbnxn_gpu_listfac_ok;
+        listfac_max = nbnxn_gpu_listfac_max;
+    }
+    else
+    {
+        listfac_ok  = nbnxn_cpu_listfac_ok;
+        listfac_max = nbnxn_cpu_listfac_max;
+    }
+
+    nstlist_orig = ir->nstlist;
+    if (nstlist_cmdline > 0)
+    {
+        if (fp)
+        {
+            sprintf(buf, "Getting nstlist=%d from command line option",
+                    nstlist_cmdline);
+        }
+        ir->nstlist = nstlist_cmdline;
+    }
+
+    verletbuf_get_list_setup(TRUE, bGPU, &ls);
+
+    /* Allow rlist to make the list a given factor larger than the list
+     * would be with nstlist=10.
+     */
+    nstlist_prev = ir->nstlist;
+    ir->nstlist  = 10;
+    calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL,
+                            &rlist_nstlist10);
+    ir->nstlist  = nstlist_prev;
+
+    /* Determine the pair list size increase due to zero interactions */
+    rlist_inc = nbnxn_get_rlist_effective_inc(ls.cluster_size_j,
+                                              mtop->natoms/det(box));
+    rlist_ok  = (rlist_nstlist10 + rlist_inc)*pow(listfac_ok, 1.0/3.0) - rlist_inc;
+    rlist_max = (rlist_nstlist10 + rlist_inc)*pow(listfac_max, 1.0/3.0) - rlist_inc;
+    if (debug)
+    {
+        fprintf(debug, "nstlist tuning: rlist_inc %.3f rlist_ok %.3f rlist_max %.3f\n",
+                rlist_inc, rlist_ok, rlist_max);
+    }
+
+    nstlist_prev = nstlist_orig;
+    rlist_prev   = ir->rlist;
+    do
+    {
+        if (nstlist_cmdline <= 0)
+        {
+            ir->nstlist = nstlist_try[nstlist_ind];
+        }
+
+        /* Set the pair-list buffer size in ir */
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        /* Does rlist fit in the box? */
+        bBox = (sqr(rlist_new) < max_cutoff2(ir->ePBC, box));
+        bDD  = TRUE;
+        if (bBox && DOMAINDECOMP(cr))
+        {
+            /* Check if rlist fits in the domain decomposition */
+            if (inputrec2nboundeddim(ir) < DIM)
+            {
+                gmx_incons("Changing nstlist with domain decomposition and unbounded dimensions is not implemented yet");
+            }
+            copy_mat(box, state_tmp.box);
+            bDD = change_dd_cutoff(cr, &state_tmp, ir, rlist_new);
+        }
+
+        if (debug)
+        {
+            fprintf(debug, "nstlist %d rlist %.3f bBox %d bDD %d\n",
+                    ir->nstlist, rlist_new, bBox, bDD);
+        }
+
+        bCont = FALSE;
+
+        if (nstlist_cmdline <= 0)
+        {
+            if (bBox && bDD && rlist_new <= rlist_max)
+            {
+                /* Increase nstlist */
+                nstlist_prev = ir->nstlist;
+                rlist_prev   = rlist_new;
+                bCont        = (nstlist_ind+1 < NNSTL && rlist_new < rlist_ok);
+            }
+            else
+            {
+                /* Stick with the previous nstlist */
+                ir->nstlist = nstlist_prev;
+                rlist_new   = rlist_prev;
+                bBox        = TRUE;
+                bDD         = TRUE;
+            }
+        }
+
+        nstlist_ind++;
+    }
+    while (bCont);
+
+    if (!bBox || !bDD)
+    {
+        gmx_warning(!bBox ? box_err : dd_err);
+        if (fp != NULL)
+        {
+            fprintf(fp, "\n%s\n", bBox ? box_err : dd_err);
+        }
+        ir->nstlist = nstlist_orig;
+    }
+    else if (ir->nstlist != nstlist_orig || rlist_new != ir->rlist)
+    {
+        sprintf(buf, "Changing nstlist from %d to %d, rlist from %g to %g",
+                nstlist_orig, ir->nstlist,
+                ir->rlist, rlist_new);
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n\n", buf);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n\n", buf);
+        }
+        ir->rlist     = rlist_new;
+        ir->rlistlong = rlist_new;
+    }
+}
+
+static void prepare_verlet_scheme(FILE                           *fplog,
+                                  t_commrec                      *cr,
+                                  t_inputrec                     *ir,
+                                  int                             nstlist_cmdline,
+                                  const gmx_mtop_t               *mtop,
+                                  matrix                          box,
+                                  gmx_bool                        bUseGPU)
+{
+    /* For NVE simulations, we will retain the initial list buffer */
+    if (ir->verletbuf_tol > 0 && !(EI_MD(ir->eI) && ir->etc == etcNO))
+    {
+        /* Update the Verlet buffer size for the current run setup */
+        verletbuf_list_setup_t ls;
+        real                   rlist_new;
+
+        /* Here we assume SIMD-enabled kernels are being used. But as currently
+         * calc_verlet_buffer_size gives the same results for 4x8 and 4x4
+         * and 4x2 gives a larger buffer than 4x4, this is ok.
+         */
+        verletbuf_get_list_setup(TRUE, bUseGPU, &ls);
+
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        if (rlist_new != ir->rlist)
+        {
+            if (fplog != NULL)
+            {
+                fprintf(fplog, "\nChanging rlist from %g to %g for non-bonded %dx%d atom kernels\n\n",
+                        ir->rlist, rlist_new,
+                        ls.cluster_size_i, ls.cluster_size_j);
+            }
+            ir->rlist     = rlist_new;
+            ir->rlistlong = rlist_new;
+        }
+    }
+
+    if (nstlist_cmdline > 0 && (!EI_DYNAMICS(ir->eI) || ir->verletbuf_tol <= 0))
+    {
+        gmx_fatal(FARGS, "Can not set nstlist without %s",
+                  !EI_DYNAMICS(ir->eI) ? "dynamics" : "verlet-buffer-tolerance");
+    }
+
+    if (EI_DYNAMICS(ir->eI))
+    {
+        /* Set or try nstlist values */
+        increase_nstlist(fplog, cr, ir, nstlist_cmdline, mtop, box, bUseGPU);
+    }
+}
+
+static void convert_to_verlet_scheme(FILE *fplog,
+                                     t_inputrec *ir,
+                                     gmx_mtop_t *mtop, real box_vol)
+{
+    char *conv_mesg = "Converting input file with group cut-off scheme to the Verlet cut-off scheme";
+
+    md_print_warn(NULL, fplog, "%s\n", conv_mesg);
+
+    ir->cutoff_scheme = ecutsVERLET;
+    ir->verletbuf_tol = 0.005;
+
+    if (ir->rcoulomb != ir->rvdw)
+    {
+        gmx_fatal(FARGS, "The VdW and Coulomb cut-offs are different, whereas the Verlet scheme only supports equal cut-offs");
+    }
+
+    if (ir->vdwtype == evdwUSER || EEL_USER(ir->coulombtype))
+    {
+        gmx_fatal(FARGS, "User non-bonded potentials are not (yet) supported with the Verlet scheme");
+    }
+    else if (ir_vdw_switched(ir) || ir_coulomb_switched(ir))
+    {
+        if (ir_vdw_switched(ir) && ir->vdw_modifier == eintmodNONE)
+        {
+            ir->vdwtype = evdwCUT;
+
+            switch (ir->vdwtype)
+            {
+                case evdwSHIFT:  ir->vdw_modifier = eintmodFORCESWITCH; break;
+                case evdwSWITCH: ir->vdw_modifier = eintmodPOTSWITCH; break;
+                default: gmx_fatal(FARGS, "The Verlet scheme does not support Van der Waals interactions of type '%s'", evdw_names[ir->vdwtype]);
+            }
+        }
+        if (ir_coulomb_switched(ir) && ir->coulomb_modifier == eintmodNONE)
+        {
+            if (EEL_FULL(ir->coulombtype))
+            {
+                /* With full electrostatic only PME can be switched */
+                ir->coulombtype      = eelPME;
+                ir->coulomb_modifier = eintmodPOTSHIFT;
+            }
+            else
+            {
+                md_print_warn(NULL, fplog, "NOTE: Replacing %s electrostatics with reaction-field with epsilon-rf=inf\n", eel_names[ir->coulombtype]);
+                ir->coulombtype      = eelRF;
+                ir->epsilon_rf       = 0.0;
+                ir->coulomb_modifier = eintmodPOTSHIFT;
+            }
+        }
+
+        /* We set the pair energy error tolerance to a small number.
+         * Note that this is only for testing. For production the user
+         * should think about this and set the mdp options.
+         */
+        ir->verletbuf_tol = 1e-4;
+    }
+
+    if (inputrec2nboundeddim(ir) != 3)
+    {
+        gmx_fatal(FARGS, "Can only convert old tpr files to the Verlet cut-off scheme with 3D pbc");
+    }
+
+    if (ir->efep != efepNO || ir->implicit_solvent != eisNO)
+    {
+        gmx_fatal(FARGS, "Will not convert old tpr files to the Verlet cut-off scheme with free-energy calculations or implicit solvent");
+    }
+
+    if (EI_DYNAMICS(ir->eI) && !(EI_MD(ir->eI) && ir->etc == etcNO))
+    {
+        verletbuf_list_setup_t ls;
+
+        verletbuf_get_list_setup(TRUE, FALSE, &ls);
+        calc_verlet_buffer_size(mtop, box_vol, ir, -1, &ls, NULL, &ir->rlist);
+    }
+    else
+    {
+        real rlist_fac;
+
+        if (EI_MD(ir->eI))
+        {
+            rlist_fac       = 1 + verlet_buffer_ratio_NVE_T0;
+        }
+        else
+        {
+            rlist_fac       = 1 + verlet_buffer_ratio_nodynamics;
+        }
+        ir->verletbuf_tol   = -1;
+        ir->rlist           = rlist_fac*max(ir->rvdw, ir->rcoulomb);
+    }
+
+    gmx_mtop_remove_chargegroups(mtop);
+}
+
+static void print_hw_opt(FILE *fp, const gmx_hw_opt_t *hw_opt)
+{
+    fprintf(fp, "hw_opt: nt %d ntmpi %d ntomp %d ntomp_pme %d gpu_id '%s'\n",
+            hw_opt->nthreads_tot,
+            hw_opt->nthreads_tmpi,
+            hw_opt->nthreads_omp,
+            hw_opt->nthreads_omp_pme,
+            hw_opt->gpu_opt.gpu_id != NULL ? hw_opt->gpu_opt.gpu_id : "");
+}
+
+/* Checks we can do when we don't (yet) know the cut-off scheme */
+static void check_and_update_hw_opt_1(gmx_hw_opt_t *hw_opt,
+                                      gmx_bool      bIsSimMaster)
+{
+    gmx_omp_nthreads_read_env(&hw_opt->nthreads_omp, bIsSimMaster);
+
+#ifndef GMX_THREAD_MPI
+    if (hw_opt->nthreads_tot > 0)
+    {
+        gmx_fatal(FARGS, "Setting the total number of threads is only supported with thread-MPI and Gromacs was compiled without thread-MPI");
+    }
+    if (hw_opt->nthreads_tmpi > 0)
+    {
+        gmx_fatal(FARGS, "Setting the number of thread-MPI threads is only supported with thread-MPI and Gromacs was compiled without thread-MPI");
+    }
+#endif
+
+#ifndef GMX_OPENMP
+    if (hw_opt->nthreads_omp > 1)
+    {
+        gmx_fatal(FARGS, "More than 1 OpenMP thread requested, but Gromacs was compiled without OpenMP support");
+    }
+    hw_opt->nthreads_omp = 1;
+#endif
+
+    if (hw_opt->nthreads_tot > 0 && hw_opt->nthreads_omp_pme <= 0)
+    {
+        /* We have the same number of OpenMP threads for PP and PME processes,
+         * thus we can perform several consistency checks.
+         */
+        if (hw_opt->nthreads_tmpi > 0 &&
+            hw_opt->nthreads_omp > 0 &&
+            hw_opt->nthreads_tot != hw_opt->nthreads_tmpi*hw_opt->nthreads_omp)
+        {
+            gmx_fatal(FARGS, "The total number of threads requested (%d) does not match the thread-MPI threads (%d) times the OpenMP threads (%d) requested",
+                      hw_opt->nthreads_tot, hw_opt->nthreads_tmpi, hw_opt->nthreads_omp);
+        }
+
+        if (hw_opt->nthreads_tmpi > 0 &&
+            hw_opt->nthreads_tot % hw_opt->nthreads_tmpi != 0)
+        {
+            gmx_fatal(FARGS, "The total number of threads requested (%d) is not divisible by the number of thread-MPI threads requested (%d)",
+                      hw_opt->nthreads_tot, hw_opt->nthreads_tmpi);
+        }
+
+        if (hw_opt->nthreads_omp > 0 &&
+            hw_opt->nthreads_tot % hw_opt->nthreads_omp != 0)
+        {
+            gmx_fatal(FARGS, "The total number of threads requested (%d) is not divisible by the number of OpenMP threads requested (%d)",
+                      hw_opt->nthreads_tot, hw_opt->nthreads_omp);
+        }
+
+        if (hw_opt->nthreads_tmpi > 0 &&
+            hw_opt->nthreads_omp <= 0)
+        {
+            hw_opt->nthreads_omp = hw_opt->nthreads_tot/hw_opt->nthreads_tmpi;
+        }
+    }
+
+#ifndef GMX_OPENMP
+    if (hw_opt->nthreads_omp > 1)
+    {
+        gmx_fatal(FARGS, "OpenMP threads are requested, but Gromacs was compiled without OpenMP support");
+    }
+#endif
+
+    if (hw_opt->nthreads_omp_pme > 0 && hw_opt->nthreads_omp <= 0)
+    {
+        gmx_fatal(FARGS, "You need to specify -ntomp in addition to -ntomp_pme");
+    }
+
+    if (hw_opt->nthreads_tot == 1)
+    {
+        hw_opt->nthreads_tmpi = 1;
+
+        if (hw_opt->nthreads_omp > 1)
+        {
+            gmx_fatal(FARGS, "You requested %d OpenMP threads with %d total threads",
+                      hw_opt->nthreads_tmpi, hw_opt->nthreads_tot);
+        }
+        hw_opt->nthreads_omp = 1;
+    }
+
+    if (hw_opt->nthreads_omp_pme <= 0 && hw_opt->nthreads_omp > 0)
+    {
+        hw_opt->nthreads_omp_pme = hw_opt->nthreads_omp;
+    }
+
+    /* Parse GPU IDs, if provided.
+     * We check consistency with the tMPI thread count later.
+     */
+    gmx_parse_gpu_ids(&hw_opt->gpu_opt);
+
+#ifdef GMX_THREAD_MPI
+    if (hw_opt->gpu_opt.ncuda_dev_use > 0 && hw_opt->nthreads_tmpi == 0)
+    {
+        /* Set the number of MPI threads equal to the number of GPUs */
+        hw_opt->nthreads_tmpi = hw_opt->gpu_opt.ncuda_dev_use;
+
+        if (hw_opt->nthreads_tot > 0 &&
+            hw_opt->nthreads_tmpi > hw_opt->nthreads_tot)
+        {
+            /* We have more GPUs than total threads requested.
+             * We choose to (later) generate a mismatch error,
+             * instead of launching more threads than requested.
+             */
+            hw_opt->nthreads_tmpi = hw_opt->nthreads_tot;
+        }
+    }
+#endif
+
+    if (debug)
+    {
+        print_hw_opt(debug, hw_opt);
+    }
+}
+
+/* Checks we can do when we know the cut-off scheme */
+static void check_and_update_hw_opt_2(gmx_hw_opt_t *hw_opt,
+                                      int           cutoff_scheme)
+{
+    if (cutoff_scheme == ecutsGROUP)
+    {
+        /* We only have OpenMP support for PME only nodes */
+        if (hw_opt->nthreads_omp > 1)
+        {
+            gmx_fatal(FARGS, "OpenMP threads have been requested with cut-off scheme %s, but these are only supported with cut-off scheme %s",
+                      ecutscheme_names[cutoff_scheme],
+                      ecutscheme_names[ecutsVERLET]);
+        }
+        hw_opt->nthreads_omp = 1;
+    }
+
+    if (hw_opt->nthreads_omp_pme <= 0 && hw_opt->nthreads_omp > 0)
+    {
+        hw_opt->nthreads_omp_pme = hw_opt->nthreads_omp;
+    }
+
+    if (debug)
+    {
+        print_hw_opt(debug, hw_opt);
+    }
+}
+
+
+/* Override the value in inputrec with value passed on the command line (if any) */
+static void override_nsteps_cmdline(FILE            *fplog,
+                                    gmx_int64_t      nsteps_cmdline,
+                                    t_inputrec      *ir,
+                                    const t_commrec *cr)
+{
+    char sbuf[STEPSTRSIZE];
+
+    assert(ir);
+    assert(cr);
+
+    /* override with anything else than the default -2 */
+    if (nsteps_cmdline > -2)
+    {
+        char stmp[STRLEN];
+
+        ir->nsteps = nsteps_cmdline;
+        if (EI_DYNAMICS(ir->eI) && nsteps_cmdline != -1)
+        {
+            sprintf(stmp, "Overriding nsteps with value passed on the command line: %s steps, %.3g ps",
+                    gmx_step_str(nsteps_cmdline, sbuf),
+                    fabs(nsteps_cmdline*ir->delta_t));
+        }
+        else
+        {
+            sprintf(stmp, "Overriding nsteps with value passed on the command line: %s steps",
+                    gmx_step_str(nsteps_cmdline, sbuf));
+        }
+
+        md_print_warn(cr, fplog, "%s\n", stmp);
+    }
+}
+
+/* Frees GPU memory and destroys the CUDA context.
+ *
+ * Note that this function needs to be called even if GPUs are not used
+ * in this run because the PME ranks have no knowledge of whether GPUs
+ * are used or not, but all ranks need to enter the barrier below.
+ */
+static void free_gpu_resources(const t_forcerec *fr,
+                               const t_commrec  *cr)
+{
+    gmx_bool bIsPPrankUsingGPU;
+    char     gpu_err_str[STRLEN];
+
+    bIsPPrankUsingGPU = (cr->duty & DUTY_PP) && fr->nbv != NULL && fr->nbv->bUseGPU;
+
+    if (bIsPPrankUsingGPU)
+    {
+        /* free nbnxn data in GPU memory */
+        nbnxn_cuda_free(fr->nbv->cu_nbv);
+
+        /* With tMPI we need to wait for all ranks to finish deallocation before
+         * destroying the context in free_gpu() as some ranks may be sharing
+         * GPU and context.
+         * Note: as only PP ranks need to free GPU resources, so it is safe to
+         * not call the barrier on PME ranks.
+         */
+#ifdef GMX_THREAD_MPI
+        if (PAR(cr))
+        {
+            gmx_barrier(cr);
+        }
+#endif  /* GMX_THREAD_MPI */
+
+        /* uninitialize GPU (by destroying the context) */
+        if (!free_gpu(gpu_err_str))
+        {
+            gmx_warning("On rank %d failed to free GPU #%d: %s",
+                        cr->nodeid, get_current_gpu_device_id(), gpu_err_str);
+        }
+    }
+}
+
+int mdrunner(gmx_hw_opt_t *hw_opt,
+             FILE *fplog, t_commrec *cr, int nfile,
+             const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+             gmx_bool bCompact, int nstglobalcomm,
+             ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+             const char *dddlb_opt, real dlb_scale,
+             const char *ddcsx, const char *ddcsy, const char *ddcsz,
+             const char *nbpu_opt, int nstlist_cmdline,
+             gmx_int64_t nsteps_cmdline, int nstepout, int resetstep,
+             int gmx_unused nmultisim, int repl_ex_nst, int repl_ex_nex,
+             int repl_ex_seed, real pforce, real cpt_period, real max_hours,
+             const char *deviceOptions, int imdport, unsigned long Flags)
+{
+    gmx_bool                  bForceUseGPU, bTryUseGPU, bRerunMD, bCantUseGPU;
+    double                    nodetime = 0, realtime;
+    t_inputrec               *inputrec;
+    t_state                  *state = NULL;
+    matrix                    box;
+    gmx_ddbox_t               ddbox = {0};
+    int                       npme_major, npme_minor;
+    real                      tmpr1, tmpr2;
+    t_nrnb                   *nrnb;
+    gmx_mtop_t               *mtop          = NULL;
+    t_mdatoms                *mdatoms       = NULL;
+    t_forcerec               *fr            = NULL;
+    t_fcdata                 *fcd           = NULL;
+    real                      ewaldcoeff_q  = 0;
+    real                      ewaldcoeff_lj = 0;
+    gmx_pme_t                *pmedata       = NULL;
+    gmx_vsite_t              *vsite         = NULL;
+    gmx_constr_t              constr;
+    int                       i, m, nChargePerturbed = -1, nTypePerturbed = 0, status, nalloc;
+    char                     *gro;
+    gmx_wallcycle_t           wcycle;
+    gmx_bool                  bReadEkin;
+    int                       list;
+    gmx_walltime_accounting_t walltime_accounting = NULL;
+    int                       rc;
+    gmx_int64_t               reset_counters;
+    gmx_edsam_t               ed           = NULL;
+    t_commrec                *cr_old       = cr;
+    int                       nthreads_pme = 1;
+    int                       nthreads_pp  = 1;
+    gmx_membed_t              membed       = NULL;
+    gmx_hw_info_t            *hwinfo       = NULL;
+    /* The master rank decides early on bUseGPU and broadcasts this later */
+    gmx_bool                  bUseGPU      = FALSE;
+
+    /* CAUTION: threads may be started later on in this function, so
+       cr doesn't reflect the final parallel state right now */
+    snew(inputrec, 1);
+    snew(mtop, 1);
+
+    if (Flags & MD_APPENDFILES)
+    {
+        fplog = NULL;
+    }
+
+    bRerunMD     = (Flags & MD_RERUN);
+    bForceUseGPU = (strncmp(nbpu_opt, "gpu", 3) == 0);
+    bTryUseGPU   = (strncmp(nbpu_opt, "auto", 4) == 0) || bForceUseGPU;
+    /* Rerun execution time is dominated by I/O and pair search, so
+     * GPUs are not very useful, plus they do not support more than
+     * one energy group. Don't select them when they can't be used,
+     * unless the user requested it, then fatal_error is called later.
+     *
+     * TODO it would be nice to notify the user that if this check
+     * causes GPUs not to be used that this is what is happening, and
+     * why, but that will be easier to do after some future
+     * cleanup. */
+    bCantUseGPU = bRerunMD && (inputrec->opts.ngener > 1);
+    bTryUseGPU  = bTryUseGPU && !(bCantUseGPU && !bForceUseGPU);
+
+    /* Detect hardware, gather information. This is an operation that is
+     * global for this process (MPI rank). */
+    hwinfo = gmx_detect_hardware(fplog, cr, bTryUseGPU);
+
+
+    snew(state, 1);
+    if (SIMMASTER(cr))
+    {
+        /* Read (nearly) all data required for the simulation */
+        read_tpx_state(ftp2fn(efTPX, nfile, fnm), inputrec, state, NULL, mtop);
+
+        if (inputrec->cutoff_scheme != ecutsVERLET &&
+            ((Flags & MD_TESTVERLET) || getenv("GMX_VERLET_SCHEME") != NULL))
+        {
+            convert_to_verlet_scheme(fplog, inputrec, mtop, det(state->box));
+        }
+
+        if (inputrec->cutoff_scheme == ecutsVERLET)
+        {
+            /* Here the master rank decides if all ranks will use GPUs */
+            bUseGPU = (hwinfo->gpu_info.ncuda_dev_compatible > 0 ||
+                       getenv("GMX_EMULATE_GPU") != NULL);
+
+            /* TODO add GPU kernels for this and replace this check by:
+             * (bUseGPU && (ir->vdwtype == evdwPME &&
+             *               ir->ljpme_combination_rule == eljpmeLB))
+             * update the message text and the content of nbnxn_acceleration_supported.
+             */
+            if (bUseGPU &&
+                !nbnxn_acceleration_supported(fplog, cr, inputrec, bUseGPU))
+            {
+                /* Fallback message printed by nbnxn_acceleration_supported */
+                if (bForceUseGPU)
+                {
+                    gmx_fatal(FARGS, "GPU acceleration requested, but not supported with the given input settings");
+                }
+                bUseGPU = FALSE;
+            }
+
+            prepare_verlet_scheme(fplog, cr,
+                                  inputrec, nstlist_cmdline, mtop, state->box,
+                                  bUseGPU);
+        }
+        else
+        {
+            if (nstlist_cmdline > 0)
+            {
+                gmx_fatal(FARGS, "Can not set nstlist with the group cut-off scheme");
+            }
+
+            if (hwinfo->gpu_info.ncuda_dev_compatible > 0)
+            {
+                md_print_warn(cr, fplog,
+                              "NOTE: GPU(s) found, but the current simulation can not use GPUs\n"
+                              "      To use a GPU, set the mdp option: cutoff-scheme = Verlet\n"
+                              "      (for quick performance testing you can use the -testverlet option)\n");
+            }
+
+            if (bForceUseGPU)
+            {
+                gmx_fatal(FARGS, "GPU requested, but can't be used without cutoff-scheme=Verlet");
+            }
+
+#ifdef GMX_TARGET_BGQ
+            md_print_warn(cr, fplog,
+                          "NOTE: There is no SIMD implementation of the group scheme kernels on\n"
+                          "      BlueGene/Q. You will observe better performance from using the\n"
+                          "      Verlet cut-off scheme.\n");
+#endif
+        }
+
+        if (inputrec->eI == eiSD2)
+        {
+            md_print_warn(cr, fplog, "The stochastic dynamics integrator %s is deprecated, since\n"
+                          "it is slower than integrator %s and is slightly less accurate\n"
+                          "with constraints. Use the %s integrator.",
+                          ei_names[inputrec->eI], ei_names[eiSD1], ei_names[eiSD1]);
+        }
+    }
+
+    /* Check for externally set OpenMP affinity and turn off internal
+     * pinning if any is found. We need to do this check early to tell
+     * thread-MPI whether it should do pinning when spawning threads.
+     * TODO: the above no longer holds, we should move these checks down
+     */
+    gmx_omp_check_thread_affinity(fplog, cr, hw_opt);
+
+    /* Check and update the hardware options for internal consistency */
+    check_and_update_hw_opt_1(hw_opt, SIMMASTER(cr));
+
+    if (SIMMASTER(cr))
+    {
+#ifdef GMX_THREAD_MPI
+        /* Early check for externally set process affinity.
+         * With thread-MPI this is needed as pinning might get turned off,
+         * which needs to be known before starting thread-MPI.
+         * With thread-MPI hw_opt is processed here on the master rank
+         * and passed to the other ranks later, so we only do this on master.
+         */
+        gmx_check_thread_affinity_set(fplog,
+                                      NULL,
+                                      hw_opt, hwinfo->nthreads_hw_avail, FALSE);
+#endif
+
+#ifdef GMX_THREAD_MPI
+        if (cr->npmenodes > 0 && hw_opt->nthreads_tmpi <= 0)
+        {
+            gmx_fatal(FARGS, "You need to explicitly specify the number of MPI threads (-ntmpi) when using separate PME ranks");
+        }
+#endif
+
+        if (hw_opt->nthreads_omp_pme != hw_opt->nthreads_omp &&
+            cr->npmenodes <= 0)
+        {
+            gmx_fatal(FARGS, "You need to explicitly specify the number of PME ranks (-npme) when using different number of OpenMP threads for PP and PME ranks");
+        }
+    }
+
+#ifdef GMX_THREAD_MPI
+    if (SIMMASTER(cr))
+    {
+        /* Since the master knows the cut-off scheme, update hw_opt for this.
+         * This is done later for normal MPI and also once more with tMPI
+         * for all tMPI ranks.
+         */
+        check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+        /* NOW the threads will be started: */
+        hw_opt->nthreads_tmpi = get_nthreads_mpi(hwinfo,
+                                                 hw_opt,
+                                                 inputrec, mtop,
+                                                 cr, fplog);
+        if (hw_opt->nthreads_tot > 0 && hw_opt->nthreads_omp <= 0)
+        {
+            hw_opt->nthreads_omp = hw_opt->nthreads_tot/hw_opt->nthreads_tmpi;
+        }
+
+        if (hw_opt->nthreads_tmpi > 1)
+        {
+            /* now start the threads. */
+            cr = mdrunner_start_threads(hw_opt, fplog, cr_old, nfile, fnm,
+                                        oenv, bVerbose, bCompact, nstglobalcomm,
+                                        ddxyz, dd_node_order, rdd, rconstr,
+                                        dddlb_opt, dlb_scale, ddcsx, ddcsy, ddcsz,
+                                        nbpu_opt, nstlist_cmdline,
+                                        nsteps_cmdline, nstepout, resetstep, nmultisim,
+                                        repl_ex_nst, repl_ex_nex, repl_ex_seed, pforce,
+                                        cpt_period, max_hours, deviceOptions,
+                                        Flags);
+            /* the main thread continues here with a new cr. We don't deallocate
+               the old cr because other threads may still be reading it. */
+            if (cr == NULL)
+            {
+                gmx_comm("Failed to spawn threads");
+            }
+        }
+    }
+#endif
+    /* END OF CAUTION: cr is now reliable */
+
+    /* g_membed initialisation *
+     * Because we change the mtop, init_membed is called before the init_parallel *
+     * (in case we ever want to make it run in parallel) */
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "Initializing membed");
+        }
+        membed = init_membed(fplog, nfile, fnm, mtop, inputrec, state, cr, &cpt_period);
+    }
+
+    if (PAR(cr))
+    {
+        /* now broadcast everything to the non-master nodes/threads: */
+        init_parallel(cr, inputrec, mtop);
+
+        /* The master rank decided on the use of GPUs,
+         * broadcast this information to all ranks.
+         */
+        gmx_bcast_sim(sizeof(bUseGPU), &bUseGPU, cr);
+    }
+
+    if (fplog != NULL)
+    {
+        pr_inputrec(fplog, 0, "Input Parameters", inputrec, FALSE);
+    }
+
+    /* now make sure the state is initialized and propagated */
+    set_state_entries(state, inputrec);
+
+    /* A parallel command line option consistency check that we can
+       only do after any threads have started. */
+    if (!PAR(cr) &&
+        (ddxyz[XX] > 1 || ddxyz[YY] > 1 || ddxyz[ZZ] > 1 || cr->npmenodes > 0))
+    {
+        gmx_fatal(FARGS,
+                  "The -dd or -npme option request a parallel simulation, "
+#ifndef GMX_MPI
+                  "but %s was compiled without threads or MPI enabled"
+#else
+#ifdef GMX_THREAD_MPI
+                  "but the number of threads (option -nt) is 1"
+#else
+                  "but %s was not started through mpirun/mpiexec or only one rank was requested through mpirun/mpiexec"
+#endif
+#endif
+                  , ShortProgram()
+                  );
+    }
+
+    if (bRerunMD &&
+        (EI_ENERGY_MINIMIZATION(inputrec->eI) || eiNM == inputrec->eI))
+    {
+        gmx_fatal(FARGS, "The .mdp file specified an energy mininization or normal mode algorithm, and these are not compatible with mdrun -rerun");
+    }
+
+    if (can_use_allvsall(inputrec, TRUE, cr, fplog) && DOMAINDECOMP(cr))
+    {
+        gmx_fatal(FARGS, "All-vs-all loops do not work with domain decomposition, use a single MPI rank");
+    }
+
+    if (!(EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype)))
+    {
+        if (cr->npmenodes > 0)
+        {
+            gmx_fatal_collective(FARGS, cr, NULL,
+                                 "PME-only ranks are requested, but the system does not use PME for electrostatics or LJ");
+        }
+
+        cr->npmenodes = 0;
+    }
+
+    if (bUseGPU && cr->npmenodes < 0)
+    {
+        /* With GPUs we don't automatically use PME-only ranks. PME ranks can
+         * improve performance with many threads per GPU, since our OpenMP
+         * scaling is bad, but it's difficult to automate the setup.
+         */
+        cr->npmenodes = 0;
+    }
+
+#ifdef GMX_FAHCORE
+    if (MASTER(cr))
+    {
+        fcRegisterSteps(inputrec->nsteps, inputrec->init_step);
+    }
+#endif
+
+    /* NMR restraints must be initialized before load_checkpoint,
+     * since with time averaging the history is added to t_state.
+     * For proper consistency check we therefore need to extend
+     * t_state here.
+     * So the PME-only nodes (if present) will also initialize
+     * the distance restraints.
+     */
+    snew(fcd, 1);
+
+    /* This needs to be called before read_checkpoint to extend the state */
+    init_disres(fplog, mtop, inputrec, cr, fcd, state, repl_ex_nst > 0);
+
+    init_orires(fplog, mtop, state->x, inputrec, cr, &(fcd->orires),
+                state);
+
+    if (DEFORM(*inputrec))
+    {
+        /* Store the deform reference box before reading the checkpoint */
+        if (SIMMASTER(cr))
+        {
+            copy_mat(state->box, box);
+        }
+        if (PAR(cr))
+        {
+            gmx_bcast(sizeof(box), box, cr);
+        }
+        /* Because we do not have the update struct available yet
+         * in which the reference values should be stored,
+         * we store them temporarily in static variables.
+         * This should be thread safe, since they are only written once
+         * and with identical values.
+         */
+        tMPI_Thread_mutex_lock(&deform_init_box_mutex);
+        deform_init_init_step_tpx = inputrec->init_step;
+        copy_mat(box, deform_init_box_tpx);
+        tMPI_Thread_mutex_unlock(&deform_init_box_mutex);
+    }
+
+    if (opt2bSet("-cpi", nfile, fnm))
+    {
+        /* Check if checkpoint file exists before doing continuation.
+         * This way we can use identical input options for the first and subsequent runs...
+         */
+        if (gmx_fexist_master(opt2fn_master("-cpi", nfile, fnm, cr), cr) )
+        {
+            load_checkpoint(opt2fn_master("-cpi", nfile, fnm, cr), &fplog,
+                            cr, ddxyz,
+                            inputrec, state, &bReadEkin,
+                            (Flags & MD_APPENDFILES),
+                            (Flags & MD_APPENDFILESSET));
+
+            if (bReadEkin)
+            {
+                Flags |= MD_READ_EKIN;
+            }
+        }
+    }
+
+    if (((MASTER(cr) || (Flags & MD_SEPPOT)) && (Flags & MD_APPENDFILES))
+#ifdef GMX_THREAD_MPI
+        /* With thread MPI only the master node/thread exists in mdrun.c,
+         * therefore non-master nodes need to open the "seppot" log file here.
+         */
+        || (!MASTER(cr) && (Flags & MD_SEPPOT))
+#endif
+        )
+    {
+        gmx_log_open(ftp2fn(efLOG, nfile, fnm), cr, !(Flags & MD_SEPPOT),
+                     Flags, &fplog);
+    }
+
+    /* override nsteps with value from cmdline */
+    override_nsteps_cmdline(fplog, nsteps_cmdline, inputrec, cr);
+
+    if (SIMMASTER(cr))
+    {
+        copy_mat(state->box, box);
+    }
+
+    if (PAR(cr))
+    {
+        gmx_bcast(sizeof(box), box, cr);
+    }
+
+    /* Essential dynamics */
+    if (opt2bSet("-ei", nfile, fnm))
+    {
+        /* Open input and output files, allocate space for ED data structure */
+        ed = ed_open(mtop->natoms, &state->edsamstate, nfile, fnm, Flags, oenv, cr);
+    }
+
+    if (PAR(cr) && !(EI_TPI(inputrec->eI) ||
+                     inputrec->eI == eiNM))
+    {
+        cr->dd = init_domain_decomposition(fplog, cr, Flags, ddxyz, rdd, rconstr,
+                                           dddlb_opt, dlb_scale,
+                                           ddcsx, ddcsy, ddcsz,
+                                           mtop, inputrec,
+                                           box, state->x,
+                                           &ddbox, &npme_major, &npme_minor);
+
+        make_dd_communicators(fplog, cr, dd_node_order);
+
+        /* Set overallocation to avoid frequent reallocation of arrays */
+        set_over_alloc_dd(TRUE);
+    }
+    else
+    {
+        /* PME, if used, is done on all nodes with 1D decomposition */
+        cr->npmenodes = 0;
+        cr->duty      = (DUTY_PP | DUTY_PME);
+        npme_major    = 1;
+        npme_minor    = 1;
+
+        if (inputrec->ePBC == epbcSCREW)
+        {
+            gmx_fatal(FARGS,
+                      "pbc=%s is only implemented with domain decomposition",
+                      epbc_names[inputrec->ePBC]);
+        }
+    }
+
+    if (PAR(cr))
+    {
+        /* After possible communicator splitting in make_dd_communicators.
+         * we can set up the intra/inter node communication.
+         */
+        gmx_setup_nodecomm(fplog, cr);
+    }
+
+    /* Initialize per-physical-node MPI process/thread ID and counters. */
+    gmx_init_intranode_counters(cr);
+#ifdef GMX_MPI
+    if (MULTISIM(cr))
+    {
+        md_print_info(cr, fplog,
+                      "This is simulation %d out of %d running as a composite Gromacs\n"
+                      "multi-simulation job. Setup for this simulation:\n\n",
+                      cr->ms->sim, cr->ms->nsim);
+    }
+    md_print_info(cr, fplog, "Using %d MPI %s\n",
+                  cr->nnodes,
+#ifdef GMX_THREAD_MPI
+                  cr->nnodes == 1 ? "thread" : "threads"
+#else
+                  cr->nnodes == 1 ? "process" : "processes"
+#endif
+                  );
+    fflush(stderr);
+#endif
+
+    /* Check and update hw_opt for the cut-off scheme */
+    check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+    gmx_omp_nthreads_init(fplog, cr,
+                          hwinfo->nthreads_hw_avail,
+                          hw_opt->nthreads_omp,
+                          hw_opt->nthreads_omp_pme,
+                          (cr->duty & DUTY_PP) == 0,
+                          inputrec->cutoff_scheme == ecutsVERLET);
+
+    if (bUseGPU)
+    {
+        /* Select GPU id's to use */
+        gmx_select_gpu_ids(fplog, cr, &hwinfo->gpu_info, bForceUseGPU,
+                           &hw_opt->gpu_opt);
+    }
+    else
+    {
+        /* Ignore (potentially) manually selected GPUs */
+        hw_opt->gpu_opt.ncuda_dev_use = 0;
+    }
+
+    /* check consistency across ranks of things like SIMD
+     * support and number of GPUs selected */
+    gmx_check_hw_runconf_consistency(fplog, hwinfo, cr, hw_opt, bUseGPU);
+
+    if (DOMAINDECOMP(cr))
+    {
+        /* When we share GPUs over ranks, we need to know this for the DLB */
+        dd_setup_dlb_resource_sharing(cr, hwinfo, hw_opt);
+    }
+
+    /* getting number of PP/PME threads
+       PME: env variable should be read only on one node to make sure it is
+       identical everywhere;
+     */
+    /* TODO nthreads_pp is only used for pinning threads.
+     * This is a temporary solution until we have a hw topology library.
+     */
+    nthreads_pp  = gmx_omp_nthreads_get(emntNonbonded);
+    nthreads_pme = gmx_omp_nthreads_get(emntPME);
+
+    wcycle = wallcycle_init(fplog, resetstep, cr, nthreads_pp, nthreads_pme);
+
+    if (PAR(cr))
+    {
+        /* Master synchronizes its value of reset_counters with all nodes
+         * including PME only nodes */
+        reset_counters = wcycle_get_reset_counters(wcycle);
+        gmx_bcast_sim(sizeof(reset_counters), &reset_counters, cr);
+        wcycle_set_reset_counters(wcycle, reset_counters);
+    }
+
+    snew(nrnb, 1);
+    if (cr->duty & DUTY_PP)
+    {
+        bcast_state(cr, state);
+
+        /* Initiate forcerecord */
+        fr          = mk_forcerec();
+        fr->hwinfo  = hwinfo;
+        fr->gpu_opt = &hw_opt->gpu_opt;
+        init_forcerec(fplog, oenv, fr, fcd, inputrec, mtop, cr, box,
+                      opt2fn("-table", nfile, fnm),
+                      opt2fn("-tabletf", nfile, fnm),
+                      opt2fn("-tablep", nfile, fnm),
+                      opt2fn("-tableb", nfile, fnm),
+                      nbpu_opt,
+                      FALSE,
+                      pforce);
+
+        /* version for PCA_NOT_READ_NODE (see md.c) */
+        /*init_forcerec(fplog,fr,fcd,inputrec,mtop,cr,box,FALSE,
+           "nofile","nofile","nofile","nofile",FALSE,pforce);
+         */
+        fr->bSepDVDL = ((Flags & MD_SEPPOT) == MD_SEPPOT);
+
+        /* Initialize QM-MM */
+        if (fr->bQMMM)
+        {
+            init_QMMMrec(cr, mtop, inputrec, fr);
+        }
+
+        /* Initialize the mdatoms structure.
+         * mdatoms is not filled with atom data,
+         * as this can not be done now with domain decomposition.
+         */
+        mdatoms = init_mdatoms(fplog, mtop, inputrec->efep != efepNO);
+
+        /* Initialize the virtual site communication */
+        vsite = init_vsite(mtop, cr, FALSE);
+
+        calc_shifts(box, fr->shift_vec);
+
+        /* With periodic molecules the charge groups should be whole at start up
+         * and the virtual sites should not be far from their proper positions.
+         */
+        if (!inputrec->bContinuation && MASTER(cr) &&
+            !(inputrec->ePBC != epbcNONE && inputrec->bPeriodicMols))
+        {
+            /* Make molecules whole at start of run */
+            if (fr->ePBC != epbcNONE)
+            {
+                do_pbc_first_mtop(fplog, inputrec->ePBC, box, mtop, state->x);
+            }
+            if (vsite)
+            {
+                /* Correct initial vsite positions are required
+                 * for the initial distribution in the domain decomposition
+                 * and for the initial shell prediction.
+                 */
+                construct_vsites_mtop(vsite, mtop, state->x);
+            }
+        }
+
+        if (EEL_PME(fr->eeltype) || EVDW_PME(fr->vdwtype))
+        {
+            ewaldcoeff_q  = fr->ewaldcoeff_q;
+            ewaldcoeff_lj = fr->ewaldcoeff_lj;
+            pmedata       = &fr->pmedata;
+        }
+        else
+        {
+            pmedata = NULL;
+        }
+    }
+    else
+    {
+        /* This is a PME only node */
+
+        /* We don't need the state */
+        done_state(state);
+
+        ewaldcoeff_q  = calc_ewaldcoeff_q(inputrec->rcoulomb, inputrec->ewald_rtol);
+        ewaldcoeff_lj = calc_ewaldcoeff_lj(inputrec->rvdw, inputrec->ewald_rtol_lj);
+        snew(pmedata, 1);
+    }
+
+    if (hw_opt->thread_affinity != threadaffOFF)
+    {
+        /* Before setting affinity, check whether the affinity has changed
+         * - which indicates that probably the OpenMP library has changed it
+         * since we first checked).
+         */
+        gmx_check_thread_affinity_set(fplog, cr,
+                                      hw_opt, hwinfo->nthreads_hw_avail, TRUE);
+
+        /* Set the CPU affinity */
+        gmx_set_thread_affinity(fplog, cr, hw_opt, hwinfo);
+    }
+
+    /* Initiate PME if necessary,
+     * either on all nodes or on dedicated PME nodes only. */
+    if (EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype))
+    {
+        if (mdatoms)
+        {
+            nChargePerturbed = mdatoms->nChargePerturbed;
+            if (EVDW_PME(inputrec->vdwtype))
+            {
+                nTypePerturbed   = mdatoms->nTypePerturbed;
+            }
+        }
+        if (cr->npmenodes > 0)
+        {
+            /* The PME only nodes need to know nChargePerturbed(FEP on Q) and nTypePerturbed(FEP on LJ)*/
+            gmx_bcast_sim(sizeof(nChargePerturbed), &nChargePerturbed, cr);
+            gmx_bcast_sim(sizeof(nTypePerturbed), &nTypePerturbed, cr);
+        }
+
+        if (cr->duty & DUTY_PME)
+        {
+            status = gmx_pme_init(pmedata, cr, npme_major, npme_minor, inputrec,
+                                  mtop ? mtop->natoms : 0, nChargePerturbed, nTypePerturbed,
+                                  (Flags & MD_REPRODUCIBLE), nthreads_pme);
+            if (status != 0)
+            {
+                gmx_fatal(FARGS, "Error %d initializing PME", status);
+            }
+        }
+    }
+
+
+    if (integrator[inputrec->eI].func == do_md)
+    {
+        /* Turn on signal handling on all nodes */
+        /*
+         * (A user signal from the PME nodes (if any)
+         * is communicated to the PP nodes.
+         */
+        signal_handler_install();
+    }
+
+    if (cr->duty & DUTY_PP)
+    {
+        /* Assumes uniform use of the number of OpenMP threads */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntDefault));
+
+        if (inputrec->ePull != epullNO)
+        {
+            /* Initialize pull code */
+            init_pull(fplog, inputrec, nfile, fnm, mtop, cr, oenv, inputrec->fepvals->init_lambda,
+                      EI_DYNAMICS(inputrec->eI) && MASTER(cr), Flags);
+        }
+
+        if (inputrec->bRot)
+        {
+            /* Initialize enforced rotation code */
+            init_rot(fplog, inputrec, nfile, fnm, cr, state->x, box, mtop, oenv,
+                     bVerbose, Flags);
+        }
+
+        if (inputrec->eSwapCoords != eswapNO)
+        {
+            /* Initialize ion swapping code */
+            init_swapcoords(fplog, bVerbose, inputrec, opt2fn_master("-swap", nfile, fnm, cr),
+                            mtop, state->x, state->box, &state->swapstate, cr, oenv, Flags);
+        }
+
+        constr = init_constraints(fplog, mtop, inputrec, ed, state, cr);
+
+        if (DOMAINDECOMP(cr))
+        {
+            dd_init_bondeds(fplog, cr->dd, mtop, vsite, inputrec,
+                            Flags & MD_DDBONDCHECK, fr->cginfo_mb);
+
+            set_dd_parameters(fplog, cr->dd, dlb_scale, inputrec, &ddbox);
+
+            setup_dd_grid(fplog, cr->dd);
+        }
+
+        /* Now do whatever the user wants us to do (how flexible...) */
+        integrator[inputrec->eI].func(fplog, cr, nfile, fnm,
+                                      oenv, bVerbose, bCompact,
+                                      nstglobalcomm,
+                                      vsite, constr,
+                                      nstepout, inputrec, mtop,
+                                      fcd, state,
+                                      mdatoms, nrnb, wcycle, ed, fr,
+                                      repl_ex_nst, repl_ex_nex, repl_ex_seed,
+                                      membed,
+                                      cpt_period, max_hours,
+                                      deviceOptions,
+                                      imdport,
+                                      Flags,
+                                      walltime_accounting);
+
+        if (inputrec->ePull != epullNO)
+        {
+            finish_pull(inputrec->pull);
+        }
+
+        if (inputrec->bRot)
+        {
+            finish_rot(inputrec->rot);
+        }
+
+    }
+    else
+    {
+        /* do PME only */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntPME));
+        gmx_pmeonly(*pmedata, cr, nrnb, wcycle, walltime_accounting, ewaldcoeff_q, ewaldcoeff_lj, inputrec);
+    }
+
+    wallcycle_stop(wcycle, ewcRUN);
+
+    /* Finish up, write some stuff
+     * if rerunMD, don't write last frame again
+     */
+    finish_run(fplog, cr,
+               inputrec, nrnb, wcycle, walltime_accounting,
+               fr != NULL && fr->nbv != NULL && fr->nbv->bUseGPU ?
+               nbnxn_cuda_get_timings(fr->nbv->cu_nbv) : NULL,
+               EI_DYNAMICS(inputrec->eI) && !MULTISIM(cr));
+
+
+    /* Free GPU memory and context */
+    free_gpu_resources(fr, cr);
+
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        sfree(membed);
+    }
+
+    gmx_hardware_info_free(hwinfo);
+
+    /* Does what it says */
+    print_date_and_time(fplog, cr->nodeid, "Finished mdrun", gmx_gettime());
+    walltime_accounting_destroy(walltime_accounting);
+
+    /* PLUMED */
+    if(plumedswitch){
+      plumed_finalize(plumedmain);
+    }
+    /* END PLUMED */
+
+    /* Close logfile already here if we were appending to it */
+    if (MASTER(cr) && (Flags & MD_APPENDFILES))
+    {
+        gmx_log_close(fplog);
+    }
+
+    rc = (int)gmx_get_stop_condition();
+
+#ifdef GMX_THREAD_MPI
+    /* we need to join all threads. The sub-threads join when they
+       exit this function, but the master thread needs to be told to
+       wait for that. */
+    if (PAR(cr) && MASTER(cr))
+    {
+        tMPI_Finalize();
+    }
+#endif
+
+    return rc;
+}
diff --git a/patches/gromacs-5.0.7.diff/src/programs/mdrun/runner.c.preplumed b/patches/gromacs-5.0.7.diff/src/programs/mdrun/runner.c.preplumed
new file mode 100644
index 0000000000000000000000000000000000000000..b951255d7c875af3938ab8740abf8035d537cf75
--- /dev/null
+++ b/patches/gromacs-5.0.7.diff/src/programs/mdrun/runner.c.preplumed
@@ -0,0 +1,1865 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <signal.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <assert.h>
+
+#include "typedefs.h"
+#include "gromacs/utility/smalloc.h"
+#include "sysstuff.h"
+#include "copyrite.h"
+#include "force.h"
+#include "mdrun.h"
+#include "md_logging.h"
+#include "md_support.h"
+#include "network.h"
+#include "names.h"
+#include "disre.h"
+#include "orires.h"
+#include "pme.h"
+#include "mdatoms.h"
+#include "repl_ex.h"
+#include "deform.h"
+#include "qmmm.h"
+#include "domdec.h"
+#include "coulomb.h"
+#include "constr.h"
+#include "mvdata.h"
+#include "checkpoint.h"
+#include "mtop_util.h"
+#include "sighandler.h"
+#include "txtdump.h"
+#include "gmx_detect_hardware.h"
+#include "gmx_omp_nthreads.h"
+#include "gromacs/gmxpreprocess/calc_verletbuf.h"
+#include "gmx_fatal_collective.h"
+#include "membed.h"
+#include "macros.h"
+#include "gmx_thread_affinity.h"
+#include "inputrec.h"
+
+#include "gromacs/fileio/tpxio.h"
+#include "gromacs/mdlib/nbnxn_search.h"
+#include "gromacs/mdlib/nbnxn_consts.h"
+#include "gromacs/timing/wallcycle.h"
+#include "gromacs/utility/gmxmpi.h"
+#include "gromacs/utility/gmxomp.h"
+#include "gromacs/swap/swapcoords.h"
+#include "gromacs/essentialdynamics/edsam.h"
+#include "gromacs/pulling/pull.h"
+#include "gromacs/pulling/pull_rotation.h"
+
+#ifdef GMX_FAHCORE
+#include "corewrap.h"
+#endif
+
+#include "gpu_utils.h"
+#include "nbnxn_cuda_data_mgmt.h"
+
+typedef struct {
+    gmx_integrator_t *func;
+} gmx_intp_t;
+
+/* The array should match the eI array in include/types/enums.h */
+const gmx_intp_t    integrator[eiNR] = { {do_md}, {do_steep}, {do_cg}, {do_md}, {do_md}, {do_nm}, {do_lbfgs}, {do_tpi}, {do_tpi}, {do_md}, {do_md}, {do_md}};
+
+gmx_int64_t         deform_init_init_step_tpx;
+matrix              deform_init_box_tpx;
+tMPI_Thread_mutex_t deform_init_box_mutex = TMPI_THREAD_MUTEX_INITIALIZER;
+
+
+#ifdef GMX_THREAD_MPI
+/* The minimum number of atoms per tMPI thread. With fewer atoms than this,
+ * the number of threads will get lowered.
+ */
+#define MIN_ATOMS_PER_MPI_THREAD    90
+#define MIN_ATOMS_PER_GPU           900
+
+struct mdrunner_arglist
+{
+    gmx_hw_opt_t    hw_opt;
+    FILE           *fplog;
+    t_commrec      *cr;
+    int             nfile;
+    const t_filenm *fnm;
+    output_env_t    oenv;
+    gmx_bool        bVerbose;
+    gmx_bool        bCompact;
+    int             nstglobalcomm;
+    ivec            ddxyz;
+    int             dd_node_order;
+    real            rdd;
+    real            rconstr;
+    const char     *dddlb_opt;
+    real            dlb_scale;
+    const char     *ddcsx;
+    const char     *ddcsy;
+    const char     *ddcsz;
+    const char     *nbpu_opt;
+    int             nstlist_cmdline;
+    gmx_int64_t     nsteps_cmdline;
+    int             nstepout;
+    int             resetstep;
+    int             nmultisim;
+    int             repl_ex_nst;
+    int             repl_ex_nex;
+    int             repl_ex_seed;
+    real            pforce;
+    real            cpt_period;
+    real            max_hours;
+    const char     *deviceOptions;
+    int             imdport;
+    unsigned long   Flags;
+};
+
+
+/* The function used for spawning threads. Extracts the mdrunner()
+   arguments from its one argument and calls mdrunner(), after making
+   a commrec. */
+static void mdrunner_start_fn(void *arg)
+{
+    struct mdrunner_arglist *mda = (struct mdrunner_arglist*)arg;
+    struct mdrunner_arglist  mc  = *mda; /* copy the arg list to make sure
+                                            that it's thread-local. This doesn't
+                                            copy pointed-to items, of course,
+                                            but those are all const. */
+    t_commrec *cr;                       /* we need a local version of this */
+    FILE      *fplog = NULL;
+    t_filenm  *fnm;
+
+    fnm = dup_tfn(mc.nfile, mc.fnm);
+
+    cr = reinitialize_commrec_for_this_thread(mc.cr);
+
+    if (MASTER(cr))
+    {
+        fplog = mc.fplog;
+    }
+
+    mdrunner(&mc.hw_opt, fplog, cr, mc.nfile, fnm, mc.oenv,
+             mc.bVerbose, mc.bCompact, mc.nstglobalcomm,
+             mc.ddxyz, mc.dd_node_order, mc.rdd,
+             mc.rconstr, mc.dddlb_opt, mc.dlb_scale,
+             mc.ddcsx, mc.ddcsy, mc.ddcsz,
+             mc.nbpu_opt, mc.nstlist_cmdline,
+             mc.nsteps_cmdline, mc.nstepout, mc.resetstep,
+             mc.nmultisim, mc.repl_ex_nst, mc.repl_ex_nex, mc.repl_ex_seed, mc.pforce,
+             mc.cpt_period, mc.max_hours, mc.deviceOptions, mc.imdport, mc.Flags);
+}
+
+/* called by mdrunner() to start a specific number of threads (including
+   the main thread) for thread-parallel runs. This in turn calls mdrunner()
+   for each thread.
+   All options besides nthreads are the same as for mdrunner(). */
+static t_commrec *mdrunner_start_threads(gmx_hw_opt_t *hw_opt,
+                                         FILE *fplog, t_commrec *cr, int nfile,
+                                         const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+                                         gmx_bool bCompact, int nstglobalcomm,
+                                         ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+                                         const char *dddlb_opt, real dlb_scale,
+                                         const char *ddcsx, const char *ddcsy, const char *ddcsz,
+                                         const char *nbpu_opt, int nstlist_cmdline,
+                                         gmx_int64_t nsteps_cmdline,
+                                         int nstepout, int resetstep,
+                                         int nmultisim, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed,
+                                         real pforce, real cpt_period, real max_hours,
+                                         const char *deviceOptions, unsigned long Flags)
+{
+    int                      ret;
+    struct mdrunner_arglist *mda;
+    t_commrec               *crn; /* the new commrec */
+    t_filenm                *fnmn;
+
+    /* first check whether we even need to start tMPI */
+    if (hw_opt->nthreads_tmpi < 2)
+    {
+        return cr;
+    }
+
+    /* a few small, one-time, almost unavoidable memory leaks: */
+    snew(mda, 1);
+    fnmn = dup_tfn(nfile, fnm);
+
+    /* fill the data structure to pass as void pointer to thread start fn */
+    /* hw_opt contains pointers, which should all be NULL at this stage */
+    mda->hw_opt          = *hw_opt;
+    mda->fplog           = fplog;
+    mda->cr              = cr;
+    mda->nfile           = nfile;
+    mda->fnm             = fnmn;
+    mda->oenv            = oenv;
+    mda->bVerbose        = bVerbose;
+    mda->bCompact        = bCompact;
+    mda->nstglobalcomm   = nstglobalcomm;
+    mda->ddxyz[XX]       = ddxyz[XX];
+    mda->ddxyz[YY]       = ddxyz[YY];
+    mda->ddxyz[ZZ]       = ddxyz[ZZ];
+    mda->dd_node_order   = dd_node_order;
+    mda->rdd             = rdd;
+    mda->rconstr         = rconstr;
+    mda->dddlb_opt       = dddlb_opt;
+    mda->dlb_scale       = dlb_scale;
+    mda->ddcsx           = ddcsx;
+    mda->ddcsy           = ddcsy;
+    mda->ddcsz           = ddcsz;
+    mda->nbpu_opt        = nbpu_opt;
+    mda->nstlist_cmdline = nstlist_cmdline;
+    mda->nsteps_cmdline  = nsteps_cmdline;
+    mda->nstepout        = nstepout;
+    mda->resetstep       = resetstep;
+    mda->nmultisim       = nmultisim;
+    mda->repl_ex_nst     = repl_ex_nst;
+    mda->repl_ex_nex     = repl_ex_nex;
+    mda->repl_ex_seed    = repl_ex_seed;
+    mda->pforce          = pforce;
+    mda->cpt_period      = cpt_period;
+    mda->max_hours       = max_hours;
+    mda->deviceOptions   = deviceOptions;
+    mda->Flags           = Flags;
+
+    /* now spawn new threads that start mdrunner_start_fn(), while
+       the main thread returns, we set thread affinity later */
+    ret = tMPI_Init_fn(TRUE, hw_opt->nthreads_tmpi, TMPI_AFFINITY_NONE,
+                       mdrunner_start_fn, (void*)(mda) );
+    if (ret != TMPI_SUCCESS)
+    {
+        return NULL;
+    }
+
+    crn = reinitialize_commrec_for_this_thread(cr);
+    return crn;
+}
+
+
+static int get_tmpi_omp_thread_division(const gmx_hw_info_t *hwinfo,
+                                        const gmx_hw_opt_t  *hw_opt,
+                                        int                  nthreads_tot,
+                                        int                  ngpu)
+{
+    int nthreads_tmpi;
+
+    /* There are no separate PME nodes here, as we ensured in
+     * check_and_update_hw_opt that nthreads_tmpi>0 with PME nodes
+     * and a conditional ensures we would not have ended up here.
+     * Note that separate PME nodes might be switched on later.
+     */
+    if (ngpu > 0)
+    {
+        nthreads_tmpi = ngpu;
+        if (nthreads_tot > 0 && nthreads_tot < nthreads_tmpi)
+        {
+            nthreads_tmpi = nthreads_tot;
+        }
+    }
+    else if (hw_opt->nthreads_omp > 0)
+    {
+        /* Here we could oversubscribe, when we do, we issue a warning later */
+        nthreads_tmpi = max(1, nthreads_tot/hw_opt->nthreads_omp);
+    }
+    else
+    {
+        /* TODO choose nthreads_omp based on hardware topology
+           when we have a hardware topology detection library */
+        /* In general, when running up to 4 threads, OpenMP should be faster.
+         * Note: on AMD Bulldozer we should avoid running OpenMP over two dies.
+         * On Intel>=Nehalem running OpenMP on a single CPU is always faster,
+         * even on two CPUs it's usually faster (but with many OpenMP threads
+         * it could be faster not to use HT, currently we always use HT).
+         * On Nehalem/Westmere we want to avoid running 16 threads over
+         * two CPUs with HT, so we need a limit<16; thus we use 12.
+         * A reasonable limit for Intel Sandy and Ivy bridge,
+         * not knowing the topology, is 16 threads.
+         * Below we check for Intel and AVX, which for now includes
+         * Sandy/Ivy Bridge, Has/Broadwell. By checking for AVX instead of
+         * model numbers we ensure also future Intel CPUs are covered.
+         */
+        const int nthreads_omp_always_faster             =  4;
+        const int nthreads_omp_always_faster_Nehalem     = 12;
+        const int nthreads_omp_always_faster_Intel_AVX   = 16;
+        gmx_bool  bIntelAVX;
+
+        bIntelAVX =
+            (gmx_cpuid_vendor(hwinfo->cpuid_info) == GMX_CPUID_VENDOR_INTEL &&
+             gmx_cpuid_feature(hwinfo->cpuid_info, GMX_CPUID_FEATURE_X86_AVX));
+
+        if (nthreads_tot <= nthreads_omp_always_faster ||
+            ((gmx_cpuid_is_intel_nehalem(hwinfo->cpuid_info) && nthreads_tot <= nthreads_omp_always_faster_Nehalem) ||
+             (bIntelAVX && nthreads_tot <= nthreads_omp_always_faster_Intel_AVX)))
+        {
+            /* Use pure OpenMP parallelization */
+            nthreads_tmpi = 1;
+        }
+        else
+        {
+            /* Don't use OpenMP parallelization */
+            nthreads_tmpi = nthreads_tot;
+        }
+    }
+
+    return nthreads_tmpi;
+}
+
+
+/* Get the number of threads to use for thread-MPI based on how many
+ * were requested, which algorithms we're using,
+ * and how many particles there are.
+ * At the point we have already called check_and_update_hw_opt.
+ * Thus all options should be internally consistent and consistent
+ * with the hardware, except that ntmpi could be larger than #GPU.
+ */
+static int get_nthreads_mpi(const gmx_hw_info_t *hwinfo,
+                            gmx_hw_opt_t *hw_opt,
+                            t_inputrec *inputrec, gmx_mtop_t *mtop,
+                            const t_commrec *cr,
+                            FILE *fplog)
+{
+    int      nthreads_hw, nthreads_tot_max, nthreads_tmpi, nthreads_new, ngpu;
+    int      min_atoms_per_mpi_thread;
+    char    *env;
+    char     sbuf[STRLEN];
+    gmx_bool bCanUseGPU;
+
+    if (hw_opt->nthreads_tmpi > 0)
+    {
+        /* Trivial, return right away */
+        return hw_opt->nthreads_tmpi;
+    }
+
+    nthreads_hw = hwinfo->nthreads_hw_avail;
+
+    /* How many total (#tMPI*#OpenMP) threads can we start? */
+    if (hw_opt->nthreads_tot > 0)
+    {
+        nthreads_tot_max = hw_opt->nthreads_tot;
+    }
+    else
+    {
+        nthreads_tot_max = nthreads_hw;
+    }
+
+    bCanUseGPU = (inputrec->cutoff_scheme == ecutsVERLET &&
+                  hwinfo->gpu_info.ncuda_dev_compatible > 0);
+    if (bCanUseGPU)
+    {
+        ngpu = hwinfo->gpu_info.ncuda_dev_compatible;
+    }
+    else
+    {
+        ngpu = 0;
+    }
+
+    if (inputrec->cutoff_scheme == ecutsGROUP)
+    {
+        /* We checked this before, but it doesn't hurt to do it once more */
+        assert(hw_opt->nthreads_omp == 1);
+    }
+
+    nthreads_tmpi =
+        get_tmpi_omp_thread_division(hwinfo, hw_opt, nthreads_tot_max, ngpu);
+
+    if (inputrec->eI == eiNM || EI_TPI(inputrec->eI))
+    {
+        /* Dims/steps are divided over the nodes iso splitting the atoms */
+        min_atoms_per_mpi_thread = 0;
+    }
+    else
+    {
+        if (bCanUseGPU)
+        {
+            min_atoms_per_mpi_thread = MIN_ATOMS_PER_GPU;
+        }
+        else
+        {
+            min_atoms_per_mpi_thread = MIN_ATOMS_PER_MPI_THREAD;
+        }
+    }
+
+    /* Check if an algorithm does not support parallel simulation.  */
+    if (nthreads_tmpi != 1 &&
+        ( inputrec->eI == eiLBFGS ||
+          inputrec->coulombtype == eelEWALD ) )
+    {
+        nthreads_tmpi = 1;
+
+        md_print_warn(cr, fplog, "The integration or electrostatics algorithm doesn't support parallel runs. Using a single thread-MPI thread.\n");
+        if (hw_opt->nthreads_tmpi > nthreads_tmpi)
+        {
+            gmx_fatal(FARGS, "You asked for more than 1 thread-MPI thread, but an algorithm doesn't support that");
+        }
+    }
+    else if (mtop->natoms/nthreads_tmpi < min_atoms_per_mpi_thread)
+    {
+        /* the thread number was chosen automatically, but there are too many
+           threads (too few atoms per thread) */
+        nthreads_new = max(1, mtop->natoms/min_atoms_per_mpi_thread);
+
+        /* Avoid partial use of Hyper-Threading */
+        if (gmx_cpuid_x86_smt(hwinfo->cpuid_info) == GMX_CPUID_X86_SMT_ENABLED &&
+            nthreads_new > nthreads_hw/2 && nthreads_new < nthreads_hw)
+        {
+            nthreads_new = nthreads_hw/2;
+        }
+
+        /* Avoid large prime numbers in the thread count */
+        if (nthreads_new >= 6)
+        {
+            /* Use only 6,8,10 with additional factors of 2 */
+            int fac;
+
+            fac = 2;
+            while (3*fac*2 <= nthreads_new)
+            {
+                fac *= 2;
+            }
+
+            nthreads_new = (nthreads_new/fac)*fac;
+        }
+        else
+        {
+            /* Avoid 5 */
+            if (nthreads_new == 5)
+            {
+                nthreads_new = 4;
+            }
+        }
+
+        nthreads_tmpi = nthreads_new;
+
+        fprintf(stderr, "\n");
+        fprintf(stderr, "NOTE: Parallelization is limited by the small number of atoms,\n");
+        fprintf(stderr, "      only starting %d thread-MPI threads.\n", nthreads_tmpi);
+        fprintf(stderr, "      You can use the -nt and/or -ntmpi option to optimize the number of threads.\n\n");
+    }
+
+    return nthreads_tmpi;
+}
+#endif /* GMX_THREAD_MPI */
+
+
+/* We determine the extra cost of the non-bonded kernels compared to
+ * a reference nstlist value of 10 (which is the default in grompp).
+ */
+static const int    nbnxn_reference_nstlist = 10;
+/* The values to try when switching  */
+const int           nstlist_try[] = { 20, 25, 40 };
+#define NNSTL  sizeof(nstlist_try)/sizeof(nstlist_try[0])
+/* Increase nstlist until the non-bonded cost increases more than listfac_ok,
+ * but never more than listfac_max.
+ * A standard (protein+)water system at 300K with PME ewald_rtol=1e-5
+ * needs 1.28 at rcoulomb=0.9 and 1.24 at rcoulomb=1.0 to get to nstlist=40.
+ * Note that both CPU and GPU factors are conservative. Performance should
+ * not go down due to this tuning, except with a relatively slow GPU.
+ * On the other hand, at medium/high parallelization or with fast GPUs
+ * nstlist will not be increased enough to reach optimal performance.
+ */
+/* CPU: pair-search is about a factor 1.5 slower than the non-bonded kernel */
+static const float  nbnxn_cpu_listfac_ok    = 1.05;
+static const float  nbnxn_cpu_listfac_max   = 1.09;
+/* GPU: pair-search is a factor 1.5-3 slower than the non-bonded kernel */
+static const float  nbnxn_gpu_listfac_ok    = 1.20;
+static const float  nbnxn_gpu_listfac_max   = 1.30;
+
+/* Try to increase nstlist when using the Verlet cut-off scheme */
+static void increase_nstlist(FILE *fp, t_commrec *cr,
+                             t_inputrec *ir, int nstlist_cmdline,
+                             const gmx_mtop_t *mtop, matrix box,
+                             gmx_bool bGPU)
+{
+    float                  listfac_ok, listfac_max;
+    int                    nstlist_orig, nstlist_prev;
+    verletbuf_list_setup_t ls;
+    real                   rlist_nstlist10, rlist_inc, rlist_ok, rlist_max;
+    real                   rlist_new, rlist_prev;
+    int                    nstlist_ind = 0;
+    t_state                state_tmp;
+    gmx_bool               bBox, bDD, bCont;
+    const char            *nstl_gpu = "\nFor optimal performance with a GPU nstlist (now %d) should be larger.\nThe optimum depends on your CPU and GPU resources.\nYou might want to try several nstlist values.\n";
+    const char            *nve_err  = "Can not increase nstlist because an NVE ensemble is used";
+    const char            *vbd_err  = "Can not increase nstlist because verlet-buffer-tolerance is not set or used";
+    const char            *box_err  = "Can not increase nstlist because the box is too small";
+    const char            *dd_err   = "Can not increase nstlist because of domain decomposition limitations";
+    char                   buf[STRLEN];
+
+    if (nstlist_cmdline <= 0)
+    {
+        if (ir->nstlist == 1)
+        {
+            /* The user probably set nstlist=1 for a reason,
+             * don't mess with the settings.
+             */
+            return;
+        }
+
+        if (fp != NULL && bGPU && ir->nstlist < nstlist_try[0])
+        {
+            fprintf(fp, nstl_gpu, ir->nstlist);
+        }
+        nstlist_ind = 0;
+        while (nstlist_ind < NNSTL && ir->nstlist >= nstlist_try[nstlist_ind])
+        {
+            nstlist_ind++;
+        }
+        if (nstlist_ind == NNSTL)
+        {
+            /* There are no larger nstlist value to try */
+            return;
+        }
+    }
+
+    if (EI_MD(ir->eI) && ir->etc == etcNO)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", nve_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", nve_err);
+        }
+
+        return;
+    }
+
+    if (ir->verletbuf_tol == 0 && bGPU)
+    {
+        gmx_fatal(FARGS, "You are using an old tpr file with a GPU, please generate a new tpr file with an up to date version of grompp");
+    }
+
+    if (ir->verletbuf_tol < 0)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", vbd_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", vbd_err);
+        }
+
+        return;
+    }
+
+    if (bGPU)
+    {
+        listfac_ok  = nbnxn_gpu_listfac_ok;
+        listfac_max = nbnxn_gpu_listfac_max;
+    }
+    else
+    {
+        listfac_ok  = nbnxn_cpu_listfac_ok;
+        listfac_max = nbnxn_cpu_listfac_max;
+    }
+
+    nstlist_orig = ir->nstlist;
+    if (nstlist_cmdline > 0)
+    {
+        if (fp)
+        {
+            sprintf(buf, "Getting nstlist=%d from command line option",
+                    nstlist_cmdline);
+        }
+        ir->nstlist = nstlist_cmdline;
+    }
+
+    verletbuf_get_list_setup(TRUE, bGPU, &ls);
+
+    /* Allow rlist to make the list a given factor larger than the list
+     * would be with nstlist=10.
+     */
+    nstlist_prev = ir->nstlist;
+    ir->nstlist  = 10;
+    calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL,
+                            &rlist_nstlist10);
+    ir->nstlist  = nstlist_prev;
+
+    /* Determine the pair list size increase due to zero interactions */
+    rlist_inc = nbnxn_get_rlist_effective_inc(ls.cluster_size_j,
+                                              mtop->natoms/det(box));
+    rlist_ok  = (rlist_nstlist10 + rlist_inc)*pow(listfac_ok, 1.0/3.0) - rlist_inc;
+    rlist_max = (rlist_nstlist10 + rlist_inc)*pow(listfac_max, 1.0/3.0) - rlist_inc;
+    if (debug)
+    {
+        fprintf(debug, "nstlist tuning: rlist_inc %.3f rlist_ok %.3f rlist_max %.3f\n",
+                rlist_inc, rlist_ok, rlist_max);
+    }
+
+    nstlist_prev = nstlist_orig;
+    rlist_prev   = ir->rlist;
+    do
+    {
+        if (nstlist_cmdline <= 0)
+        {
+            ir->nstlist = nstlist_try[nstlist_ind];
+        }
+
+        /* Set the pair-list buffer size in ir */
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        /* Does rlist fit in the box? */
+        bBox = (sqr(rlist_new) < max_cutoff2(ir->ePBC, box));
+        bDD  = TRUE;
+        if (bBox && DOMAINDECOMP(cr))
+        {
+            /* Check if rlist fits in the domain decomposition */
+            if (inputrec2nboundeddim(ir) < DIM)
+            {
+                gmx_incons("Changing nstlist with domain decomposition and unbounded dimensions is not implemented yet");
+            }
+            copy_mat(box, state_tmp.box);
+            bDD = change_dd_cutoff(cr, &state_tmp, ir, rlist_new);
+        }
+
+        if (debug)
+        {
+            fprintf(debug, "nstlist %d rlist %.3f bBox %d bDD %d\n",
+                    ir->nstlist, rlist_new, bBox, bDD);
+        }
+
+        bCont = FALSE;
+
+        if (nstlist_cmdline <= 0)
+        {
+            if (bBox && bDD && rlist_new <= rlist_max)
+            {
+                /* Increase nstlist */
+                nstlist_prev = ir->nstlist;
+                rlist_prev   = rlist_new;
+                bCont        = (nstlist_ind+1 < NNSTL && rlist_new < rlist_ok);
+            }
+            else
+            {
+                /* Stick with the previous nstlist */
+                ir->nstlist = nstlist_prev;
+                rlist_new   = rlist_prev;
+                bBox        = TRUE;
+                bDD         = TRUE;
+            }
+        }
+
+        nstlist_ind++;
+    }
+    while (bCont);
+
+    if (!bBox || !bDD)
+    {
+        gmx_warning(!bBox ? box_err : dd_err);
+        if (fp != NULL)
+        {
+            fprintf(fp, "\n%s\n", bBox ? box_err : dd_err);
+        }
+        ir->nstlist = nstlist_orig;
+    }
+    else if (ir->nstlist != nstlist_orig || rlist_new != ir->rlist)
+    {
+        sprintf(buf, "Changing nstlist from %d to %d, rlist from %g to %g",
+                nstlist_orig, ir->nstlist,
+                ir->rlist, rlist_new);
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n\n", buf);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n\n", buf);
+        }
+        ir->rlist     = rlist_new;
+        ir->rlistlong = rlist_new;
+    }
+}
+
+static void prepare_verlet_scheme(FILE                           *fplog,
+                                  t_commrec                      *cr,
+                                  t_inputrec                     *ir,
+                                  int                             nstlist_cmdline,
+                                  const gmx_mtop_t               *mtop,
+                                  matrix                          box,
+                                  gmx_bool                        bUseGPU)
+{
+    /* For NVE simulations, we will retain the initial list buffer */
+    if (ir->verletbuf_tol > 0 && !(EI_MD(ir->eI) && ir->etc == etcNO))
+    {
+        /* Update the Verlet buffer size for the current run setup */
+        verletbuf_list_setup_t ls;
+        real                   rlist_new;
+
+        /* Here we assume SIMD-enabled kernels are being used. But as currently
+         * calc_verlet_buffer_size gives the same results for 4x8 and 4x4
+         * and 4x2 gives a larger buffer than 4x4, this is ok.
+         */
+        verletbuf_get_list_setup(TRUE, bUseGPU, &ls);
+
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        if (rlist_new != ir->rlist)
+        {
+            if (fplog != NULL)
+            {
+                fprintf(fplog, "\nChanging rlist from %g to %g for non-bonded %dx%d atom kernels\n\n",
+                        ir->rlist, rlist_new,
+                        ls.cluster_size_i, ls.cluster_size_j);
+            }
+            ir->rlist     = rlist_new;
+            ir->rlistlong = rlist_new;
+        }
+    }
+
+    if (nstlist_cmdline > 0 && (!EI_DYNAMICS(ir->eI) || ir->verletbuf_tol <= 0))
+    {
+        gmx_fatal(FARGS, "Can not set nstlist without %s",
+                  !EI_DYNAMICS(ir->eI) ? "dynamics" : "verlet-buffer-tolerance");
+    }
+
+    if (EI_DYNAMICS(ir->eI))
+    {
+        /* Set or try nstlist values */
+        increase_nstlist(fplog, cr, ir, nstlist_cmdline, mtop, box, bUseGPU);
+    }
+}
+
+static void convert_to_verlet_scheme(FILE *fplog,
+                                     t_inputrec *ir,
+                                     gmx_mtop_t *mtop, real box_vol)
+{
+    char *conv_mesg = "Converting input file with group cut-off scheme to the Verlet cut-off scheme";
+
+    md_print_warn(NULL, fplog, "%s\n", conv_mesg);
+
+    ir->cutoff_scheme = ecutsVERLET;
+    ir->verletbuf_tol = 0.005;
+
+    if (ir->rcoulomb != ir->rvdw)
+    {
+        gmx_fatal(FARGS, "The VdW and Coulomb cut-offs are different, whereas the Verlet scheme only supports equal cut-offs");
+    }
+
+    if (ir->vdwtype == evdwUSER || EEL_USER(ir->coulombtype))
+    {
+        gmx_fatal(FARGS, "User non-bonded potentials are not (yet) supported with the Verlet scheme");
+    }
+    else if (ir_vdw_switched(ir) || ir_coulomb_switched(ir))
+    {
+        if (ir_vdw_switched(ir) && ir->vdw_modifier == eintmodNONE)
+        {
+            ir->vdwtype = evdwCUT;
+
+            switch (ir->vdwtype)
+            {
+                case evdwSHIFT:  ir->vdw_modifier = eintmodFORCESWITCH; break;
+                case evdwSWITCH: ir->vdw_modifier = eintmodPOTSWITCH; break;
+                default: gmx_fatal(FARGS, "The Verlet scheme does not support Van der Waals interactions of type '%s'", evdw_names[ir->vdwtype]);
+            }
+        }
+        if (ir_coulomb_switched(ir) && ir->coulomb_modifier == eintmodNONE)
+        {
+            if (EEL_FULL(ir->coulombtype))
+            {
+                /* With full electrostatic only PME can be switched */
+                ir->coulombtype      = eelPME;
+                ir->coulomb_modifier = eintmodPOTSHIFT;
+            }
+            else
+            {
+                md_print_warn(NULL, fplog, "NOTE: Replacing %s electrostatics with reaction-field with epsilon-rf=inf\n", eel_names[ir->coulombtype]);
+                ir->coulombtype      = eelRF;
+                ir->epsilon_rf       = 0.0;
+                ir->coulomb_modifier = eintmodPOTSHIFT;
+            }
+        }
+
+        /* We set the pair energy error tolerance to a small number.
+         * Note that this is only for testing. For production the user
+         * should think about this and set the mdp options.
+         */
+        ir->verletbuf_tol = 1e-4;
+    }
+
+    if (inputrec2nboundeddim(ir) != 3)
+    {
+        gmx_fatal(FARGS, "Can only convert old tpr files to the Verlet cut-off scheme with 3D pbc");
+    }
+
+    if (ir->efep != efepNO || ir->implicit_solvent != eisNO)
+    {
+        gmx_fatal(FARGS, "Will not convert old tpr files to the Verlet cut-off scheme with free-energy calculations or implicit solvent");
+    }
+
+    if (EI_DYNAMICS(ir->eI) && !(EI_MD(ir->eI) && ir->etc == etcNO))
+    {
+        verletbuf_list_setup_t ls;
+
+        verletbuf_get_list_setup(TRUE, FALSE, &ls);
+        calc_verlet_buffer_size(mtop, box_vol, ir, -1, &ls, NULL, &ir->rlist);
+    }
+    else
+    {
+        real rlist_fac;
+
+        if (EI_MD(ir->eI))
+        {
+            rlist_fac       = 1 + verlet_buffer_ratio_NVE_T0;
+        }
+        else
+        {
+            rlist_fac       = 1 + verlet_buffer_ratio_nodynamics;
+        }
+        ir->verletbuf_tol   = -1;
+        ir->rlist           = rlist_fac*max(ir->rvdw, ir->rcoulomb);
+    }
+
+    gmx_mtop_remove_chargegroups(mtop);
+}
+
+static void print_hw_opt(FILE *fp, const gmx_hw_opt_t *hw_opt)
+{
+    fprintf(fp, "hw_opt: nt %d ntmpi %d ntomp %d ntomp_pme %d gpu_id '%s'\n",
+            hw_opt->nthreads_tot,
+            hw_opt->nthreads_tmpi,
+            hw_opt->nthreads_omp,
+            hw_opt->nthreads_omp_pme,
+            hw_opt->gpu_opt.gpu_id != NULL ? hw_opt->gpu_opt.gpu_id : "");
+}
+
+/* Checks we can do when we don't (yet) know the cut-off scheme */
+static void check_and_update_hw_opt_1(gmx_hw_opt_t *hw_opt,
+                                      gmx_bool      bIsSimMaster)
+{
+    gmx_omp_nthreads_read_env(&hw_opt->nthreads_omp, bIsSimMaster);
+
+#ifndef GMX_THREAD_MPI
+    if (hw_opt->nthreads_tot > 0)
+    {
+        gmx_fatal(FARGS, "Setting the total number of threads is only supported with thread-MPI and Gromacs was compiled without thread-MPI");
+    }
+    if (hw_opt->nthreads_tmpi > 0)
+    {
+        gmx_fatal(FARGS, "Setting the number of thread-MPI threads is only supported with thread-MPI and Gromacs was compiled without thread-MPI");
+    }
+#endif
+
+#ifndef GMX_OPENMP
+    if (hw_opt->nthreads_omp > 1)
+    {
+        gmx_fatal(FARGS, "More than 1 OpenMP thread requested, but Gromacs was compiled without OpenMP support");
+    }
+    hw_opt->nthreads_omp = 1;
+#endif
+
+    if (hw_opt->nthreads_tot > 0 && hw_opt->nthreads_omp_pme <= 0)
+    {
+        /* We have the same number of OpenMP threads for PP and PME processes,
+         * thus we can perform several consistency checks.
+         */
+        if (hw_opt->nthreads_tmpi > 0 &&
+            hw_opt->nthreads_omp > 0 &&
+            hw_opt->nthreads_tot != hw_opt->nthreads_tmpi*hw_opt->nthreads_omp)
+        {
+            gmx_fatal(FARGS, "The total number of threads requested (%d) does not match the thread-MPI threads (%d) times the OpenMP threads (%d) requested",
+                      hw_opt->nthreads_tot, hw_opt->nthreads_tmpi, hw_opt->nthreads_omp);
+        }
+
+        if (hw_opt->nthreads_tmpi > 0 &&
+            hw_opt->nthreads_tot % hw_opt->nthreads_tmpi != 0)
+        {
+            gmx_fatal(FARGS, "The total number of threads requested (%d) is not divisible by the number of thread-MPI threads requested (%d)",
+                      hw_opt->nthreads_tot, hw_opt->nthreads_tmpi);
+        }
+
+        if (hw_opt->nthreads_omp > 0 &&
+            hw_opt->nthreads_tot % hw_opt->nthreads_omp != 0)
+        {
+            gmx_fatal(FARGS, "The total number of threads requested (%d) is not divisible by the number of OpenMP threads requested (%d)",
+                      hw_opt->nthreads_tot, hw_opt->nthreads_omp);
+        }
+
+        if (hw_opt->nthreads_tmpi > 0 &&
+            hw_opt->nthreads_omp <= 0)
+        {
+            hw_opt->nthreads_omp = hw_opt->nthreads_tot/hw_opt->nthreads_tmpi;
+        }
+    }
+
+#ifndef GMX_OPENMP
+    if (hw_opt->nthreads_omp > 1)
+    {
+        gmx_fatal(FARGS, "OpenMP threads are requested, but Gromacs was compiled without OpenMP support");
+    }
+#endif
+
+    if (hw_opt->nthreads_omp_pme > 0 && hw_opt->nthreads_omp <= 0)
+    {
+        gmx_fatal(FARGS, "You need to specify -ntomp in addition to -ntomp_pme");
+    }
+
+    if (hw_opt->nthreads_tot == 1)
+    {
+        hw_opt->nthreads_tmpi = 1;
+
+        if (hw_opt->nthreads_omp > 1)
+        {
+            gmx_fatal(FARGS, "You requested %d OpenMP threads with %d total threads",
+                      hw_opt->nthreads_tmpi, hw_opt->nthreads_tot);
+        }
+        hw_opt->nthreads_omp = 1;
+    }
+
+    if (hw_opt->nthreads_omp_pme <= 0 && hw_opt->nthreads_omp > 0)
+    {
+        hw_opt->nthreads_omp_pme = hw_opt->nthreads_omp;
+    }
+
+    /* Parse GPU IDs, if provided.
+     * We check consistency with the tMPI thread count later.
+     */
+    gmx_parse_gpu_ids(&hw_opt->gpu_opt);
+
+#ifdef GMX_THREAD_MPI
+    if (hw_opt->gpu_opt.ncuda_dev_use > 0 && hw_opt->nthreads_tmpi == 0)
+    {
+        /* Set the number of MPI threads equal to the number of GPUs */
+        hw_opt->nthreads_tmpi = hw_opt->gpu_opt.ncuda_dev_use;
+
+        if (hw_opt->nthreads_tot > 0 &&
+            hw_opt->nthreads_tmpi > hw_opt->nthreads_tot)
+        {
+            /* We have more GPUs than total threads requested.
+             * We choose to (later) generate a mismatch error,
+             * instead of launching more threads than requested.
+             */
+            hw_opt->nthreads_tmpi = hw_opt->nthreads_tot;
+        }
+    }
+#endif
+
+    if (debug)
+    {
+        print_hw_opt(debug, hw_opt);
+    }
+}
+
+/* Checks we can do when we know the cut-off scheme */
+static void check_and_update_hw_opt_2(gmx_hw_opt_t *hw_opt,
+                                      int           cutoff_scheme)
+{
+    if (cutoff_scheme == ecutsGROUP)
+    {
+        /* We only have OpenMP support for PME only nodes */
+        if (hw_opt->nthreads_omp > 1)
+        {
+            gmx_fatal(FARGS, "OpenMP threads have been requested with cut-off scheme %s, but these are only supported with cut-off scheme %s",
+                      ecutscheme_names[cutoff_scheme],
+                      ecutscheme_names[ecutsVERLET]);
+        }
+        hw_opt->nthreads_omp = 1;
+    }
+
+    if (hw_opt->nthreads_omp_pme <= 0 && hw_opt->nthreads_omp > 0)
+    {
+        hw_opt->nthreads_omp_pme = hw_opt->nthreads_omp;
+    }
+
+    if (debug)
+    {
+        print_hw_opt(debug, hw_opt);
+    }
+}
+
+
+/* Override the value in inputrec with value passed on the command line (if any) */
+static void override_nsteps_cmdline(FILE            *fplog,
+                                    gmx_int64_t      nsteps_cmdline,
+                                    t_inputrec      *ir,
+                                    const t_commrec *cr)
+{
+    char sbuf[STEPSTRSIZE];
+
+    assert(ir);
+    assert(cr);
+
+    /* override with anything else than the default -2 */
+    if (nsteps_cmdline > -2)
+    {
+        char stmp[STRLEN];
+
+        ir->nsteps = nsteps_cmdline;
+        if (EI_DYNAMICS(ir->eI) && nsteps_cmdline != -1)
+        {
+            sprintf(stmp, "Overriding nsteps with value passed on the command line: %s steps, %.3g ps",
+                    gmx_step_str(nsteps_cmdline, sbuf),
+                    fabs(nsteps_cmdline*ir->delta_t));
+        }
+        else
+        {
+            sprintf(stmp, "Overriding nsteps with value passed on the command line: %s steps",
+                    gmx_step_str(nsteps_cmdline, sbuf));
+        }
+
+        md_print_warn(cr, fplog, "%s\n", stmp);
+    }
+}
+
+/* Frees GPU memory and destroys the CUDA context.
+ *
+ * Note that this function needs to be called even if GPUs are not used
+ * in this run because the PME ranks have no knowledge of whether GPUs
+ * are used or not, but all ranks need to enter the barrier below.
+ */
+static void free_gpu_resources(const t_forcerec *fr,
+                               const t_commrec  *cr)
+{
+    gmx_bool bIsPPrankUsingGPU;
+    char     gpu_err_str[STRLEN];
+
+    bIsPPrankUsingGPU = (cr->duty & DUTY_PP) && fr->nbv != NULL && fr->nbv->bUseGPU;
+
+    if (bIsPPrankUsingGPU)
+    {
+        /* free nbnxn data in GPU memory */
+        nbnxn_cuda_free(fr->nbv->cu_nbv);
+
+        /* With tMPI we need to wait for all ranks to finish deallocation before
+         * destroying the context in free_gpu() as some ranks may be sharing
+         * GPU and context.
+         * Note: as only PP ranks need to free GPU resources, so it is safe to
+         * not call the barrier on PME ranks.
+         */
+#ifdef GMX_THREAD_MPI
+        if (PAR(cr))
+        {
+            gmx_barrier(cr);
+        }
+#endif  /* GMX_THREAD_MPI */
+
+        /* uninitialize GPU (by destroying the context) */
+        if (!free_gpu(gpu_err_str))
+        {
+            gmx_warning("On rank %d failed to free GPU #%d: %s",
+                        cr->nodeid, get_current_gpu_device_id(), gpu_err_str);
+        }
+    }
+}
+
+int mdrunner(gmx_hw_opt_t *hw_opt,
+             FILE *fplog, t_commrec *cr, int nfile,
+             const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+             gmx_bool bCompact, int nstglobalcomm,
+             ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+             const char *dddlb_opt, real dlb_scale,
+             const char *ddcsx, const char *ddcsy, const char *ddcsz,
+             const char *nbpu_opt, int nstlist_cmdline,
+             gmx_int64_t nsteps_cmdline, int nstepout, int resetstep,
+             int gmx_unused nmultisim, int repl_ex_nst, int repl_ex_nex,
+             int repl_ex_seed, real pforce, real cpt_period, real max_hours,
+             const char *deviceOptions, int imdport, unsigned long Flags)
+{
+    gmx_bool                  bForceUseGPU, bTryUseGPU, bRerunMD, bCantUseGPU;
+    double                    nodetime = 0, realtime;
+    t_inputrec               *inputrec;
+    t_state                  *state = NULL;
+    matrix                    box;
+    gmx_ddbox_t               ddbox = {0};
+    int                       npme_major, npme_minor;
+    real                      tmpr1, tmpr2;
+    t_nrnb                   *nrnb;
+    gmx_mtop_t               *mtop          = NULL;
+    t_mdatoms                *mdatoms       = NULL;
+    t_forcerec               *fr            = NULL;
+    t_fcdata                 *fcd           = NULL;
+    real                      ewaldcoeff_q  = 0;
+    real                      ewaldcoeff_lj = 0;
+    gmx_pme_t                *pmedata       = NULL;
+    gmx_vsite_t              *vsite         = NULL;
+    gmx_constr_t              constr;
+    int                       i, m, nChargePerturbed = -1, nTypePerturbed = 0, status, nalloc;
+    char                     *gro;
+    gmx_wallcycle_t           wcycle;
+    gmx_bool                  bReadEkin;
+    int                       list;
+    gmx_walltime_accounting_t walltime_accounting = NULL;
+    int                       rc;
+    gmx_int64_t               reset_counters;
+    gmx_edsam_t               ed           = NULL;
+    t_commrec                *cr_old       = cr;
+    int                       nthreads_pme = 1;
+    int                       nthreads_pp  = 1;
+    gmx_membed_t              membed       = NULL;
+    gmx_hw_info_t            *hwinfo       = NULL;
+    /* The master rank decides early on bUseGPU and broadcasts this later */
+    gmx_bool                  bUseGPU      = FALSE;
+
+    /* CAUTION: threads may be started later on in this function, so
+       cr doesn't reflect the final parallel state right now */
+    snew(inputrec, 1);
+    snew(mtop, 1);
+
+    if (Flags & MD_APPENDFILES)
+    {
+        fplog = NULL;
+    }
+
+    bRerunMD     = (Flags & MD_RERUN);
+    bForceUseGPU = (strncmp(nbpu_opt, "gpu", 3) == 0);
+    bTryUseGPU   = (strncmp(nbpu_opt, "auto", 4) == 0) || bForceUseGPU;
+    /* Rerun execution time is dominated by I/O and pair search, so
+     * GPUs are not very useful, plus they do not support more than
+     * one energy group. Don't select them when they can't be used,
+     * unless the user requested it, then fatal_error is called later.
+     *
+     * TODO it would be nice to notify the user that if this check
+     * causes GPUs not to be used that this is what is happening, and
+     * why, but that will be easier to do after some future
+     * cleanup. */
+    bCantUseGPU = bRerunMD && (inputrec->opts.ngener > 1);
+    bTryUseGPU  = bTryUseGPU && !(bCantUseGPU && !bForceUseGPU);
+
+    /* Detect hardware, gather information. This is an operation that is
+     * global for this process (MPI rank). */
+    hwinfo = gmx_detect_hardware(fplog, cr, bTryUseGPU);
+
+
+    snew(state, 1);
+    if (SIMMASTER(cr))
+    {
+        /* Read (nearly) all data required for the simulation */
+        read_tpx_state(ftp2fn(efTPX, nfile, fnm), inputrec, state, NULL, mtop);
+
+        if (inputrec->cutoff_scheme != ecutsVERLET &&
+            ((Flags & MD_TESTVERLET) || getenv("GMX_VERLET_SCHEME") != NULL))
+        {
+            convert_to_verlet_scheme(fplog, inputrec, mtop, det(state->box));
+        }
+
+        if (inputrec->cutoff_scheme == ecutsVERLET)
+        {
+            /* Here the master rank decides if all ranks will use GPUs */
+            bUseGPU = (hwinfo->gpu_info.ncuda_dev_compatible > 0 ||
+                       getenv("GMX_EMULATE_GPU") != NULL);
+
+            /* TODO add GPU kernels for this and replace this check by:
+             * (bUseGPU && (ir->vdwtype == evdwPME &&
+             *               ir->ljpme_combination_rule == eljpmeLB))
+             * update the message text and the content of nbnxn_acceleration_supported.
+             */
+            if (bUseGPU &&
+                !nbnxn_acceleration_supported(fplog, cr, inputrec, bUseGPU))
+            {
+                /* Fallback message printed by nbnxn_acceleration_supported */
+                if (bForceUseGPU)
+                {
+                    gmx_fatal(FARGS, "GPU acceleration requested, but not supported with the given input settings");
+                }
+                bUseGPU = FALSE;
+            }
+
+            prepare_verlet_scheme(fplog, cr,
+                                  inputrec, nstlist_cmdline, mtop, state->box,
+                                  bUseGPU);
+        }
+        else
+        {
+            if (nstlist_cmdline > 0)
+            {
+                gmx_fatal(FARGS, "Can not set nstlist with the group cut-off scheme");
+            }
+
+            if (hwinfo->gpu_info.ncuda_dev_compatible > 0)
+            {
+                md_print_warn(cr, fplog,
+                              "NOTE: GPU(s) found, but the current simulation can not use GPUs\n"
+                              "      To use a GPU, set the mdp option: cutoff-scheme = Verlet\n"
+                              "      (for quick performance testing you can use the -testverlet option)\n");
+            }
+
+            if (bForceUseGPU)
+            {
+                gmx_fatal(FARGS, "GPU requested, but can't be used without cutoff-scheme=Verlet");
+            }
+
+#ifdef GMX_TARGET_BGQ
+            md_print_warn(cr, fplog,
+                          "NOTE: There is no SIMD implementation of the group scheme kernels on\n"
+                          "      BlueGene/Q. You will observe better performance from using the\n"
+                          "      Verlet cut-off scheme.\n");
+#endif
+        }
+
+        if (inputrec->eI == eiSD2)
+        {
+            md_print_warn(cr, fplog, "The stochastic dynamics integrator %s is deprecated, since\n"
+                          "it is slower than integrator %s and is slightly less accurate\n"
+                          "with constraints. Use the %s integrator.",
+                          ei_names[inputrec->eI], ei_names[eiSD1], ei_names[eiSD1]);
+        }
+    }
+
+    /* Check for externally set OpenMP affinity and turn off internal
+     * pinning if any is found. We need to do this check early to tell
+     * thread-MPI whether it should do pinning when spawning threads.
+     * TODO: the above no longer holds, we should move these checks down
+     */
+    gmx_omp_check_thread_affinity(fplog, cr, hw_opt);
+
+    /* Check and update the hardware options for internal consistency */
+    check_and_update_hw_opt_1(hw_opt, SIMMASTER(cr));
+
+    if (SIMMASTER(cr))
+    {
+#ifdef GMX_THREAD_MPI
+        /* Early check for externally set process affinity.
+         * With thread-MPI this is needed as pinning might get turned off,
+         * which needs to be known before starting thread-MPI.
+         * With thread-MPI hw_opt is processed here on the master rank
+         * and passed to the other ranks later, so we only do this on master.
+         */
+        gmx_check_thread_affinity_set(fplog,
+                                      NULL,
+                                      hw_opt, hwinfo->nthreads_hw_avail, FALSE);
+#endif
+
+#ifdef GMX_THREAD_MPI
+        if (cr->npmenodes > 0 && hw_opt->nthreads_tmpi <= 0)
+        {
+            gmx_fatal(FARGS, "You need to explicitly specify the number of MPI threads (-ntmpi) when using separate PME ranks");
+        }
+#endif
+
+        if (hw_opt->nthreads_omp_pme != hw_opt->nthreads_omp &&
+            cr->npmenodes <= 0)
+        {
+            gmx_fatal(FARGS, "You need to explicitly specify the number of PME ranks (-npme) when using different number of OpenMP threads for PP and PME ranks");
+        }
+    }
+
+#ifdef GMX_THREAD_MPI
+    if (SIMMASTER(cr))
+    {
+        /* Since the master knows the cut-off scheme, update hw_opt for this.
+         * This is done later for normal MPI and also once more with tMPI
+         * for all tMPI ranks.
+         */
+        check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+        /* NOW the threads will be started: */
+        hw_opt->nthreads_tmpi = get_nthreads_mpi(hwinfo,
+                                                 hw_opt,
+                                                 inputrec, mtop,
+                                                 cr, fplog);
+        if (hw_opt->nthreads_tot > 0 && hw_opt->nthreads_omp <= 0)
+        {
+            hw_opt->nthreads_omp = hw_opt->nthreads_tot/hw_opt->nthreads_tmpi;
+        }
+
+        if (hw_opt->nthreads_tmpi > 1)
+        {
+            /* now start the threads. */
+            cr = mdrunner_start_threads(hw_opt, fplog, cr_old, nfile, fnm,
+                                        oenv, bVerbose, bCompact, nstglobalcomm,
+                                        ddxyz, dd_node_order, rdd, rconstr,
+                                        dddlb_opt, dlb_scale, ddcsx, ddcsy, ddcsz,
+                                        nbpu_opt, nstlist_cmdline,
+                                        nsteps_cmdline, nstepout, resetstep, nmultisim,
+                                        repl_ex_nst, repl_ex_nex, repl_ex_seed, pforce,
+                                        cpt_period, max_hours, deviceOptions,
+                                        Flags);
+            /* the main thread continues here with a new cr. We don't deallocate
+               the old cr because other threads may still be reading it. */
+            if (cr == NULL)
+            {
+                gmx_comm("Failed to spawn threads");
+            }
+        }
+    }
+#endif
+    /* END OF CAUTION: cr is now reliable */
+
+    /* g_membed initialisation *
+     * Because we change the mtop, init_membed is called before the init_parallel *
+     * (in case we ever want to make it run in parallel) */
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "Initializing membed");
+        }
+        membed = init_membed(fplog, nfile, fnm, mtop, inputrec, state, cr, &cpt_period);
+    }
+
+    if (PAR(cr))
+    {
+        /* now broadcast everything to the non-master nodes/threads: */
+        init_parallel(cr, inputrec, mtop);
+
+        /* The master rank decided on the use of GPUs,
+         * broadcast this information to all ranks.
+         */
+        gmx_bcast_sim(sizeof(bUseGPU), &bUseGPU, cr);
+    }
+
+    if (fplog != NULL)
+    {
+        pr_inputrec(fplog, 0, "Input Parameters", inputrec, FALSE);
+    }
+
+    /* now make sure the state is initialized and propagated */
+    set_state_entries(state, inputrec);
+
+    /* A parallel command line option consistency check that we can
+       only do after any threads have started. */
+    if (!PAR(cr) &&
+        (ddxyz[XX] > 1 || ddxyz[YY] > 1 || ddxyz[ZZ] > 1 || cr->npmenodes > 0))
+    {
+        gmx_fatal(FARGS,
+                  "The -dd or -npme option request a parallel simulation, "
+#ifndef GMX_MPI
+                  "but %s was compiled without threads or MPI enabled"
+#else
+#ifdef GMX_THREAD_MPI
+                  "but the number of threads (option -nt) is 1"
+#else
+                  "but %s was not started through mpirun/mpiexec or only one rank was requested through mpirun/mpiexec"
+#endif
+#endif
+                  , ShortProgram()
+                  );
+    }
+
+    if (bRerunMD &&
+        (EI_ENERGY_MINIMIZATION(inputrec->eI) || eiNM == inputrec->eI))
+    {
+        gmx_fatal(FARGS, "The .mdp file specified an energy mininization or normal mode algorithm, and these are not compatible with mdrun -rerun");
+    }
+
+    if (can_use_allvsall(inputrec, TRUE, cr, fplog) && DOMAINDECOMP(cr))
+    {
+        gmx_fatal(FARGS, "All-vs-all loops do not work with domain decomposition, use a single MPI rank");
+    }
+
+    if (!(EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype)))
+    {
+        if (cr->npmenodes > 0)
+        {
+            gmx_fatal_collective(FARGS, cr, NULL,
+                                 "PME-only ranks are requested, but the system does not use PME for electrostatics or LJ");
+        }
+
+        cr->npmenodes = 0;
+    }
+
+    if (bUseGPU && cr->npmenodes < 0)
+    {
+        /* With GPUs we don't automatically use PME-only ranks. PME ranks can
+         * improve performance with many threads per GPU, since our OpenMP
+         * scaling is bad, but it's difficult to automate the setup.
+         */
+        cr->npmenodes = 0;
+    }
+
+#ifdef GMX_FAHCORE
+    if (MASTER(cr))
+    {
+        fcRegisterSteps(inputrec->nsteps, inputrec->init_step);
+    }
+#endif
+
+    /* NMR restraints must be initialized before load_checkpoint,
+     * since with time averaging the history is added to t_state.
+     * For proper consistency check we therefore need to extend
+     * t_state here.
+     * So the PME-only nodes (if present) will also initialize
+     * the distance restraints.
+     */
+    snew(fcd, 1);
+
+    /* This needs to be called before read_checkpoint to extend the state */
+    init_disres(fplog, mtop, inputrec, cr, fcd, state, repl_ex_nst > 0);
+
+    init_orires(fplog, mtop, state->x, inputrec, cr, &(fcd->orires),
+                state);
+
+    if (DEFORM(*inputrec))
+    {
+        /* Store the deform reference box before reading the checkpoint */
+        if (SIMMASTER(cr))
+        {
+            copy_mat(state->box, box);
+        }
+        if (PAR(cr))
+        {
+            gmx_bcast(sizeof(box), box, cr);
+        }
+        /* Because we do not have the update struct available yet
+         * in which the reference values should be stored,
+         * we store them temporarily in static variables.
+         * This should be thread safe, since they are only written once
+         * and with identical values.
+         */
+        tMPI_Thread_mutex_lock(&deform_init_box_mutex);
+        deform_init_init_step_tpx = inputrec->init_step;
+        copy_mat(box, deform_init_box_tpx);
+        tMPI_Thread_mutex_unlock(&deform_init_box_mutex);
+    }
+
+    if (opt2bSet("-cpi", nfile, fnm))
+    {
+        /* Check if checkpoint file exists before doing continuation.
+         * This way we can use identical input options for the first and subsequent runs...
+         */
+        if (gmx_fexist_master(opt2fn_master("-cpi", nfile, fnm, cr), cr) )
+        {
+            load_checkpoint(opt2fn_master("-cpi", nfile, fnm, cr), &fplog,
+                            cr, ddxyz,
+                            inputrec, state, &bReadEkin,
+                            (Flags & MD_APPENDFILES),
+                            (Flags & MD_APPENDFILESSET));
+
+            if (bReadEkin)
+            {
+                Flags |= MD_READ_EKIN;
+            }
+        }
+    }
+
+    if (((MASTER(cr) || (Flags & MD_SEPPOT)) && (Flags & MD_APPENDFILES))
+#ifdef GMX_THREAD_MPI
+        /* With thread MPI only the master node/thread exists in mdrun.c,
+         * therefore non-master nodes need to open the "seppot" log file here.
+         */
+        || (!MASTER(cr) && (Flags & MD_SEPPOT))
+#endif
+        )
+    {
+        gmx_log_open(ftp2fn(efLOG, nfile, fnm), cr, !(Flags & MD_SEPPOT),
+                     Flags, &fplog);
+    }
+
+    /* override nsteps with value from cmdline */
+    override_nsteps_cmdline(fplog, nsteps_cmdline, inputrec, cr);
+
+    if (SIMMASTER(cr))
+    {
+        copy_mat(state->box, box);
+    }
+
+    if (PAR(cr))
+    {
+        gmx_bcast(sizeof(box), box, cr);
+    }
+
+    /* Essential dynamics */
+    if (opt2bSet("-ei", nfile, fnm))
+    {
+        /* Open input and output files, allocate space for ED data structure */
+        ed = ed_open(mtop->natoms, &state->edsamstate, nfile, fnm, Flags, oenv, cr);
+    }
+
+    if (PAR(cr) && !(EI_TPI(inputrec->eI) ||
+                     inputrec->eI == eiNM))
+    {
+        cr->dd = init_domain_decomposition(fplog, cr, Flags, ddxyz, rdd, rconstr,
+                                           dddlb_opt, dlb_scale,
+                                           ddcsx, ddcsy, ddcsz,
+                                           mtop, inputrec,
+                                           box, state->x,
+                                           &ddbox, &npme_major, &npme_minor);
+
+        make_dd_communicators(fplog, cr, dd_node_order);
+
+        /* Set overallocation to avoid frequent reallocation of arrays */
+        set_over_alloc_dd(TRUE);
+    }
+    else
+    {
+        /* PME, if used, is done on all nodes with 1D decomposition */
+        cr->npmenodes = 0;
+        cr->duty      = (DUTY_PP | DUTY_PME);
+        npme_major    = 1;
+        npme_minor    = 1;
+
+        if (inputrec->ePBC == epbcSCREW)
+        {
+            gmx_fatal(FARGS,
+                      "pbc=%s is only implemented with domain decomposition",
+                      epbc_names[inputrec->ePBC]);
+        }
+    }
+
+    if (PAR(cr))
+    {
+        /* After possible communicator splitting in make_dd_communicators.
+         * we can set up the intra/inter node communication.
+         */
+        gmx_setup_nodecomm(fplog, cr);
+    }
+
+    /* Initialize per-physical-node MPI process/thread ID and counters. */
+    gmx_init_intranode_counters(cr);
+#ifdef GMX_MPI
+    if (MULTISIM(cr))
+    {
+        md_print_info(cr, fplog,
+                      "This is simulation %d out of %d running as a composite Gromacs\n"
+                      "multi-simulation job. Setup for this simulation:\n\n",
+                      cr->ms->sim, cr->ms->nsim);
+    }
+    md_print_info(cr, fplog, "Using %d MPI %s\n",
+                  cr->nnodes,
+#ifdef GMX_THREAD_MPI
+                  cr->nnodes == 1 ? "thread" : "threads"
+#else
+                  cr->nnodes == 1 ? "process" : "processes"
+#endif
+                  );
+    fflush(stderr);
+#endif
+
+    /* Check and update hw_opt for the cut-off scheme */
+    check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+    gmx_omp_nthreads_init(fplog, cr,
+                          hwinfo->nthreads_hw_avail,
+                          hw_opt->nthreads_omp,
+                          hw_opt->nthreads_omp_pme,
+                          (cr->duty & DUTY_PP) == 0,
+                          inputrec->cutoff_scheme == ecutsVERLET);
+
+    if (bUseGPU)
+    {
+        /* Select GPU id's to use */
+        gmx_select_gpu_ids(fplog, cr, &hwinfo->gpu_info, bForceUseGPU,
+                           &hw_opt->gpu_opt);
+    }
+    else
+    {
+        /* Ignore (potentially) manually selected GPUs */
+        hw_opt->gpu_opt.ncuda_dev_use = 0;
+    }
+
+    /* check consistency across ranks of things like SIMD
+     * support and number of GPUs selected */
+    gmx_check_hw_runconf_consistency(fplog, hwinfo, cr, hw_opt, bUseGPU);
+
+    if (DOMAINDECOMP(cr))
+    {
+        /* When we share GPUs over ranks, we need to know this for the DLB */
+        dd_setup_dlb_resource_sharing(cr, hwinfo, hw_opt);
+    }
+
+    /* getting number of PP/PME threads
+       PME: env variable should be read only on one node to make sure it is
+       identical everywhere;
+     */
+    /* TODO nthreads_pp is only used for pinning threads.
+     * This is a temporary solution until we have a hw topology library.
+     */
+    nthreads_pp  = gmx_omp_nthreads_get(emntNonbonded);
+    nthreads_pme = gmx_omp_nthreads_get(emntPME);
+
+    wcycle = wallcycle_init(fplog, resetstep, cr, nthreads_pp, nthreads_pme);
+
+    if (PAR(cr))
+    {
+        /* Master synchronizes its value of reset_counters with all nodes
+         * including PME only nodes */
+        reset_counters = wcycle_get_reset_counters(wcycle);
+        gmx_bcast_sim(sizeof(reset_counters), &reset_counters, cr);
+        wcycle_set_reset_counters(wcycle, reset_counters);
+    }
+
+    snew(nrnb, 1);
+    if (cr->duty & DUTY_PP)
+    {
+        bcast_state(cr, state);
+
+        /* Initiate forcerecord */
+        fr          = mk_forcerec();
+        fr->hwinfo  = hwinfo;
+        fr->gpu_opt = &hw_opt->gpu_opt;
+        init_forcerec(fplog, oenv, fr, fcd, inputrec, mtop, cr, box,
+                      opt2fn("-table", nfile, fnm),
+                      opt2fn("-tabletf", nfile, fnm),
+                      opt2fn("-tablep", nfile, fnm),
+                      opt2fn("-tableb", nfile, fnm),
+                      nbpu_opt,
+                      FALSE,
+                      pforce);
+
+        /* version for PCA_NOT_READ_NODE (see md.c) */
+        /*init_forcerec(fplog,fr,fcd,inputrec,mtop,cr,box,FALSE,
+           "nofile","nofile","nofile","nofile",FALSE,pforce);
+         */
+        fr->bSepDVDL = ((Flags & MD_SEPPOT) == MD_SEPPOT);
+
+        /* Initialize QM-MM */
+        if (fr->bQMMM)
+        {
+            init_QMMMrec(cr, mtop, inputrec, fr);
+        }
+
+        /* Initialize the mdatoms structure.
+         * mdatoms is not filled with atom data,
+         * as this can not be done now with domain decomposition.
+         */
+        mdatoms = init_mdatoms(fplog, mtop, inputrec->efep != efepNO);
+
+        /* Initialize the virtual site communication */
+        vsite = init_vsite(mtop, cr, FALSE);
+
+        calc_shifts(box, fr->shift_vec);
+
+        /* With periodic molecules the charge groups should be whole at start up
+         * and the virtual sites should not be far from their proper positions.
+         */
+        if (!inputrec->bContinuation && MASTER(cr) &&
+            !(inputrec->ePBC != epbcNONE && inputrec->bPeriodicMols))
+        {
+            /* Make molecules whole at start of run */
+            if (fr->ePBC != epbcNONE)
+            {
+                do_pbc_first_mtop(fplog, inputrec->ePBC, box, mtop, state->x);
+            }
+            if (vsite)
+            {
+                /* Correct initial vsite positions are required
+                 * for the initial distribution in the domain decomposition
+                 * and for the initial shell prediction.
+                 */
+                construct_vsites_mtop(vsite, mtop, state->x);
+            }
+        }
+
+        if (EEL_PME(fr->eeltype) || EVDW_PME(fr->vdwtype))
+        {
+            ewaldcoeff_q  = fr->ewaldcoeff_q;
+            ewaldcoeff_lj = fr->ewaldcoeff_lj;
+            pmedata       = &fr->pmedata;
+        }
+        else
+        {
+            pmedata = NULL;
+        }
+    }
+    else
+    {
+        /* This is a PME only node */
+
+        /* We don't need the state */
+        done_state(state);
+
+        ewaldcoeff_q  = calc_ewaldcoeff_q(inputrec->rcoulomb, inputrec->ewald_rtol);
+        ewaldcoeff_lj = calc_ewaldcoeff_lj(inputrec->rvdw, inputrec->ewald_rtol_lj);
+        snew(pmedata, 1);
+    }
+
+    if (hw_opt->thread_affinity != threadaffOFF)
+    {
+        /* Before setting affinity, check whether the affinity has changed
+         * - which indicates that probably the OpenMP library has changed it
+         * since we first checked).
+         */
+        gmx_check_thread_affinity_set(fplog, cr,
+                                      hw_opt, hwinfo->nthreads_hw_avail, TRUE);
+
+        /* Set the CPU affinity */
+        gmx_set_thread_affinity(fplog, cr, hw_opt, hwinfo);
+    }
+
+    /* Initiate PME if necessary,
+     * either on all nodes or on dedicated PME nodes only. */
+    if (EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype))
+    {
+        if (mdatoms)
+        {
+            nChargePerturbed = mdatoms->nChargePerturbed;
+            if (EVDW_PME(inputrec->vdwtype))
+            {
+                nTypePerturbed   = mdatoms->nTypePerturbed;
+            }
+        }
+        if (cr->npmenodes > 0)
+        {
+            /* The PME only nodes need to know nChargePerturbed(FEP on Q) and nTypePerturbed(FEP on LJ)*/
+            gmx_bcast_sim(sizeof(nChargePerturbed), &nChargePerturbed, cr);
+            gmx_bcast_sim(sizeof(nTypePerturbed), &nTypePerturbed, cr);
+        }
+
+        if (cr->duty & DUTY_PME)
+        {
+            status = gmx_pme_init(pmedata, cr, npme_major, npme_minor, inputrec,
+                                  mtop ? mtop->natoms : 0, nChargePerturbed, nTypePerturbed,
+                                  (Flags & MD_REPRODUCIBLE), nthreads_pme);
+            if (status != 0)
+            {
+                gmx_fatal(FARGS, "Error %d initializing PME", status);
+            }
+        }
+    }
+
+
+    if (integrator[inputrec->eI].func == do_md)
+    {
+        /* Turn on signal handling on all nodes */
+        /*
+         * (A user signal from the PME nodes (if any)
+         * is communicated to the PP nodes.
+         */
+        signal_handler_install();
+    }
+
+    if (cr->duty & DUTY_PP)
+    {
+        /* Assumes uniform use of the number of OpenMP threads */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntDefault));
+
+        if (inputrec->ePull != epullNO)
+        {
+            /* Initialize pull code */
+            init_pull(fplog, inputrec, nfile, fnm, mtop, cr, oenv, inputrec->fepvals->init_lambda,
+                      EI_DYNAMICS(inputrec->eI) && MASTER(cr), Flags);
+        }
+
+        if (inputrec->bRot)
+        {
+            /* Initialize enforced rotation code */
+            init_rot(fplog, inputrec, nfile, fnm, cr, state->x, box, mtop, oenv,
+                     bVerbose, Flags);
+        }
+
+        if (inputrec->eSwapCoords != eswapNO)
+        {
+            /* Initialize ion swapping code */
+            init_swapcoords(fplog, bVerbose, inputrec, opt2fn_master("-swap", nfile, fnm, cr),
+                            mtop, state->x, state->box, &state->swapstate, cr, oenv, Flags);
+        }
+
+        constr = init_constraints(fplog, mtop, inputrec, ed, state, cr);
+
+        if (DOMAINDECOMP(cr))
+        {
+            dd_init_bondeds(fplog, cr->dd, mtop, vsite, inputrec,
+                            Flags & MD_DDBONDCHECK, fr->cginfo_mb);
+
+            set_dd_parameters(fplog, cr->dd, dlb_scale, inputrec, &ddbox);
+
+            setup_dd_grid(fplog, cr->dd);
+        }
+
+        /* Now do whatever the user wants us to do (how flexible...) */
+        integrator[inputrec->eI].func(fplog, cr, nfile, fnm,
+                                      oenv, bVerbose, bCompact,
+                                      nstglobalcomm,
+                                      vsite, constr,
+                                      nstepout, inputrec, mtop,
+                                      fcd, state,
+                                      mdatoms, nrnb, wcycle, ed, fr,
+                                      repl_ex_nst, repl_ex_nex, repl_ex_seed,
+                                      membed,
+                                      cpt_period, max_hours,
+                                      deviceOptions,
+                                      imdport,
+                                      Flags,
+                                      walltime_accounting);
+
+        if (inputrec->ePull != epullNO)
+        {
+            finish_pull(inputrec->pull);
+        }
+
+        if (inputrec->bRot)
+        {
+            finish_rot(inputrec->rot);
+        }
+
+    }
+    else
+    {
+        /* do PME only */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntPME));
+        gmx_pmeonly(*pmedata, cr, nrnb, wcycle, walltime_accounting, ewaldcoeff_q, ewaldcoeff_lj, inputrec);
+    }
+
+    wallcycle_stop(wcycle, ewcRUN);
+
+    /* Finish up, write some stuff
+     * if rerunMD, don't write last frame again
+     */
+    finish_run(fplog, cr,
+               inputrec, nrnb, wcycle, walltime_accounting,
+               fr != NULL && fr->nbv != NULL && fr->nbv->bUseGPU ?
+               nbnxn_cuda_get_timings(fr->nbv->cu_nbv) : NULL,
+               EI_DYNAMICS(inputrec->eI) && !MULTISIM(cr));
+
+
+    /* Free GPU memory and context */
+    free_gpu_resources(fr, cr);
+
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        sfree(membed);
+    }
+
+    gmx_hardware_info_free(hwinfo);
+
+    /* Does what it says */
+    print_date_and_time(fplog, cr->nodeid, "Finished mdrun", gmx_gettime());
+    walltime_accounting_destroy(walltime_accounting);
+
+    /* Close logfile already here if we were appending to it */
+    if (MASTER(cr) && (Flags & MD_APPENDFILES))
+    {
+        gmx_log_close(fplog);
+    }
+
+    rc = (int)gmx_get_stop_condition();
+
+#ifdef GMX_THREAD_MPI
+    /* we need to join all threads. The sub-threads join when they
+       exit this function, but the master thread needs to be told to
+       wait for that. */
+    if (PAR(cr) && MASTER(cr))
+    {
+        tMPI_Finalize();
+    }
+#endif
+
+    return rc;
+}
diff --git a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt
index 3ff4b77ec68178f49e84e6b9a60dea750d784c94..2af9fdf862dea3a884a4aaf07865bb85b43cc9ba 100644
--- a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt
+++ b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt
@@ -73,7 +73,7 @@ if(GMX_USE_TNG)
                 "TNG >= 1.6.0 not found. "
                 "You can set GMX_EXTERNAL_TNG=OFF to compile TNG.")
         endif()
-        include_directories(${TNG_IO_INCLUDE_DIRS})
+        include_directories(SYSTEM ${TNG_IO_INCLUDE_DIRS})
     endif()
     if(NOT GMX_EXTERNAL_TNG)
         include(${CMAKE_SOURCE_DIR}/src/external/tng_io/BuildTNG.cmake)
@@ -83,7 +83,7 @@ if(GMX_USE_TNG)
 
         if (HAVE_ZLIB)
             list(APPEND GMX_EXTRA_LIBRARIES ${ZLIB_LIBRARIES})
-            include_directories(${ZLIB_INCLUDE_DIRS})
+            include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
         endif()
     endif()
 else()
@@ -199,13 +199,17 @@ else()
 endif()
 set_source_files_properties(selection/scanner.cpp PROPERTIES COMPILE_FLAGS "${_scanner_cpp_compiler_flags}")
 
+target_link_libraries(libgromacs ${PLUMED_LOAD})
+
 target_link_libraries(libgromacs
                       ${EXTRAE_LIBRARIES}
                       ${GMX_EXTRA_LIBRARIES}
                       ${TNG_IO_LIBRARIES}
                       ${FFT_LIBRARIES} ${LINEAR_ALGEBRA_LIBRARIES}
                       ${XML_LIBRARIES}
-                      ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS} ${OPENCL_LIBRARIES} ${PLUMED_LOAD})
+                      ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS} ${OPENCL_LIBRARIES})
+
+
 set_target_properties(libgromacs PROPERTIES
                       OUTPUT_NAME "gromacs${GMX_LIBS_SUFFIX}"
                       SOVERSION ${LIBRARY_SOVERSION_MAJOR}
diff --git a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed
index 26d7111383d96c659540fb93926fc9026e74ec4f..467b0be4c1abb18c0a53a96ed052353a608d4a0f 100644
--- a/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed
+++ b/patches/gromacs-5.1.2.diff/src/gromacs/CMakeLists.txt.preplumed
@@ -71,7 +71,7 @@ if(GMX_USE_TNG)
                 "TNG >= 1.6.0 not found. "
                 "You can set GMX_EXTERNAL_TNG=OFF to compile TNG.")
         endif()
-        include_directories(${TNG_IO_INCLUDE_DIRS})
+        include_directories(SYSTEM ${TNG_IO_INCLUDE_DIRS})
     endif()
     if(NOT GMX_EXTERNAL_TNG)
         include(${CMAKE_SOURCE_DIR}/src/external/tng_io/BuildTNG.cmake)
@@ -81,7 +81,7 @@ if(GMX_USE_TNG)
 
         if (HAVE_ZLIB)
             list(APPEND GMX_EXTRA_LIBRARIES ${ZLIB_LIBRARIES})
-            include_directories(${ZLIB_INCLUDE_DIRS})
+            include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
         endif()
     endif()
 else()
diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp b/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp
index 4c552329584542397e34e6645e136882d4925374..dade566c5e3836dc572000709101488bf1cc4ffa 100644
--- a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp
+++ b/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015,2016, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -184,7 +184,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
     gmx_int64_t     step, step_rel;
     double          elapsed_time;
     double          t, t0, lam0[efptNR];
-    gmx_bool        bGStatEveryStep, bGStat, bCalcVir, bCalcEner;
+    gmx_bool        bGStatEveryStep, bGStat, bCalcVir, bCalcEnerStep, bCalcEner;
     gmx_bool        bNS, bNStList, bSimAnn, bStopCM, bRerunMD, bNotLastFrame = FALSE,
                     bFirstStep, bStateFromCP, bStateFromTPX, bInitStep, bLastStep,
                     bBornRadii, bStartingFromCpt;
@@ -354,11 +354,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n");
     }
 
-    if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && usingGpu(fr->nbv))
-    {
-        gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto");
-    }
-
     if (DEFORM(*ir))
     {
         tMPI_Thread_mutex_lock(&deform_init_box_mutex);
@@ -551,6 +546,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
             {
                 gmx_fatal(FARGS, "nstexpanded should be divisible by nstcalclr");
             }
+            nstfep = gmx_greatest_common_divisor(ir->expandedvals->nstexpanded, nstfep);
         }
         if (repl_ex_nst > 0)
         {
@@ -976,7 +972,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
             bBornRadii = TRUE;
         }
 
-        do_log     = do_per_step(step, ir->nstlog) || bFirstStep || bLastStep;
+        /* do_log triggers energy and virial calculation. Because this leads
+         * to different code paths, forces can be different. Thus for exact
+         * continuation we should avoid extra log output.
+         * Note that the || bLastStep can result in non-exact continuation
+         * beyond the last step. But we don't consider that to be an issue.
+         */
+        do_log     = do_per_step(step, ir->nstlog) || (bFirstStep && !bStateFromCP) || bLastStep;
         do_verbose = bVerbose &&
             (step % stepout == 0 || bFirstStep || bLastStep);
 
@@ -1147,21 +1149,18 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                but the virial needs to be calculated on both the current step and the 'next' step. Future
                reorganization may be able to get rid of one of the bCalcVir=TRUE steps. */
 
-            bCalcEner = do_per_step(step-1, ir->nstcalcenergy);
-            bCalcVir  = bCalcEner ||
+            /* TODO: This is probably not what we want, we will write to energy file one step after nstcalcenergy steps. */
+            bCalcEnerStep = do_per_step(step - 1, ir->nstcalcenergy);
+            bCalcVir      = bCalcEnerStep ||
                 (ir->epc != epcNO && (do_per_step(step, ir->nstpcouple) || do_per_step(step-1, ir->nstpcouple)));
         }
         else
         {
-            bCalcEner = do_per_step(step, ir->nstcalcenergy);
-            bCalcVir  = bCalcEner ||
+            bCalcEnerStep = do_per_step(step, ir->nstcalcenergy);
+            bCalcVir      = bCalcEnerStep ||
                 (ir->epc != epcNO && do_per_step(step, ir->nstpcouple));
         }
-
-        /* Do we need global communication ? */
-        bGStat = (bCalcVir || bCalcEner || bStopCM ||
-                  do_per_step(step, nstglobalcomm) ||
-                  (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm)));
+        bCalcEner = bCalcEnerStep;
 
         do_ene = (do_per_step(step, ir->nstenergy) || bLastStep);
 
@@ -1169,9 +1168,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         {
             bCalcVir  = TRUE;
             bCalcEner = TRUE;
-            bGStat    = TRUE;
         }
 
+        /* Do we need global communication ? */
+        bGStat = (bCalcVir || bCalcEner || bStopCM ||
+                  do_per_step(step, nstglobalcomm) ||
+                  (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm)));
+
         /* these CGLO_ options remain the same throughout the iteration */
         cglo_flags = ((bRerunMD ? CGLO_RERUNMD : 0) |
                       (bGStat ? CGLO_GSTAT : 0)
@@ -1353,6 +1356,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                                 | (bTemp ? CGLO_TEMPERATURE : 0)
                                 | (bPres ? CGLO_PRESSURE : 0)
                                 | (bPres ? CGLO_CONSTRAINT : 0)
+                                | (bStopCM ? CGLO_STOPCM : 0)
                                 | CGLO_SCALEEKIN
                                 );
                 /* explanation of above:
@@ -1455,8 +1459,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         /* Check if IMD step and do IMD communication, if bIMD is TRUE. */
         bIMDstep = do_IMD(ir->bIMD, step, cr, bNS, state->box, state->x, ir, t, wcycle);
 
-        /* kludge -- virial is lost with restart for NPT control. Must restart */
-        if (bStartingFromCpt && bVV)
+        /* kludge -- virial is lost with restart for MTTK NPT control. Must reload (saved earlier). */
+        if (bStartingFromCpt && bTrotter)
         {
             copy_mat(state->svir_prev, shake_vir);
             copy_mat(state->fvir_prev, force_vir);
@@ -1531,26 +1535,21 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
             gs.sig[eglsCHKPT] = 1;
         }
 
-        /* at the start of step, randomize or scale the velocities (trotter done elsewhere) */
-        if (EI_VV(ir->eI))
+        /* at the start of step, randomize or scale the velocities ((if vv. Restriction of Andersen controlled
+           in preprocessing */
+
+        if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */
         {
-            if (!bInitStep)
-            {
-                update_tcouple(step, ir, state, ekind, &MassQ, mdatoms);
-            }
-            if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */
+            gmx_bool bIfRandomize;
+            bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr);
+            /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */
+            if (constr && bIfRandomize)
             {
-                gmx_bool bIfRandomize;
-                bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr);
-                /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */
-                if (constr && bIfRandomize)
-                {
-                    update_constraints(fplog, step, NULL, ir, mdatoms,
-                                       state, fr->bMolPBC, graph, f,
-                                       &top->idef, tmp_vir,
-                                       cr, nrnb, wcycle, upd, constr,
-                                       TRUE, bCalcVir);
-                }
+                update_constraints(fplog, step, NULL, ir, mdatoms,
+                                   state, fr->bMolPBC, graph, f,
+                                   &top->idef, tmp_vir,
+                                   cr, nrnb, wcycle, upd, constr,
+                                   TRUE, bCalcVir);
             }
         }
         /* #########   START SECOND UPDATE STEP ################# */
@@ -1780,36 +1779,32 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         /* Output stuff */
         if (MASTER(cr))
         {
-            gmx_bool do_dr, do_or;
-
             if (fplog && do_log && bDoExpanded)
             {
                 /* only needed if doing expanded ensemble */
                 PrintFreeEnergyInfoToFile(fplog, ir->fepvals, ir->expandedvals, ir->bSimTemp ? ir->simtempvals : NULL,
                                           &state_global->dfhist, state->fep_state, ir->nstlog, step);
             }
-            if (!(bStartingFromCpt && (EI_VV(ir->eI))))
+            if (bCalcEner)
             {
-                if (bCalcEner)
-                {
-                    upd_mdebin(mdebin, bDoDHDL, TRUE,
-                               t, mdatoms->tmass, enerd, state,
-                               ir->fepvals, ir->expandedvals, lastbox,
-                               shake_vir, force_vir, total_vir, pres,
-                               ekind, mu_tot, constr);
-                }
-                else
-                {
-                    upd_mdebin_step(mdebin);
-                }
+                upd_mdebin(mdebin, bDoDHDL, bCalcEnerStep,
+                           t, mdatoms->tmass, enerd, state,
+                           ir->fepvals, ir->expandedvals, lastbox,
+                           shake_vir, force_vir, total_vir, pres,
+                           ekind, mu_tot, constr);
+            }
+            else
+            {
+                upd_mdebin_step(mdebin);
+            }
 
-                do_dr  = do_per_step(step, ir->nstdisreout);
-                do_or  = do_per_step(step, ir->nstorireout);
+            gmx_bool do_dr  = do_per_step(step, ir->nstdisreout);
+            gmx_bool do_or  = do_per_step(step, ir->nstorireout);
+
+            print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL,
+                       step, t,
+                       eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts));
 
-                print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL,
-                           step, t,
-                           eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts));
-            }
             if (ir->bPull)
             {
                 pull_print_output(ir->pull_work, step, t);
@@ -1947,7 +1942,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                  * until after load balancing completes,
                  * e.g. https://gerrit.gromacs.org/#/c/4964/2 */
                 gmx_fatal(FARGS, "PME tuning was still active when attempting to "
-                          "reset mdrun counters at step " GMX_PRId64 ". Try "
+                          "reset mdrun counters at step %" GMX_PRId64 ". Try "
                           "resetting counters later in the run, e.g. with gmx "
                           "mdrun -resetstep.", step);
             }
diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed b/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed
index 4f33d897e950a2793d76d963e8451ed0d6c8dd96..ce25ac7e90d312d3671b4f1ccd495775caeee445 100644
--- a/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed
+++ b/patches/gromacs-5.1.2.diff/src/programs/mdrun/md.cpp.preplumed
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015,2016, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -174,7 +174,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
     gmx_int64_t     step, step_rel;
     double          elapsed_time;
     double          t, t0, lam0[efptNR];
-    gmx_bool        bGStatEveryStep, bGStat, bCalcVir, bCalcEner;
+    gmx_bool        bGStatEveryStep, bGStat, bCalcVir, bCalcEnerStep, bCalcEner;
     gmx_bool        bNS, bNStList, bSimAnn, bStopCM, bRerunMD, bNotLastFrame = FALSE,
                     bFirstStep, bStateFromCP, bStateFromTPX, bInitStep, bLastStep,
                     bBornRadii, bStartingFromCpt;
@@ -338,11 +338,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n");
     }
 
-    if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && usingGpu(fr->nbv))
-    {
-        gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto");
-    }
-
     if (DEFORM(*ir))
     {
         tMPI_Thread_mutex_lock(&deform_init_box_mutex);
@@ -535,6 +530,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
             {
                 gmx_fatal(FARGS, "nstexpanded should be divisible by nstcalclr");
             }
+            nstfep = gmx_greatest_common_divisor(ir->expandedvals->nstexpanded, nstfep);
         }
         if (repl_ex_nst > 0)
         {
@@ -914,7 +910,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
             bBornRadii = TRUE;
         }
 
-        do_log     = do_per_step(step, ir->nstlog) || bFirstStep || bLastStep;
+        /* do_log triggers energy and virial calculation. Because this leads
+         * to different code paths, forces can be different. Thus for exact
+         * continuation we should avoid extra log output.
+         * Note that the || bLastStep can result in non-exact continuation
+         * beyond the last step. But we don't consider that to be an issue.
+         */
+        do_log     = do_per_step(step, ir->nstlog) || (bFirstStep && !bStateFromCP) || bLastStep;
         do_verbose = bVerbose &&
             (step % stepout == 0 || bFirstStep || bLastStep);
 
@@ -1001,21 +1003,18 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                but the virial needs to be calculated on both the current step and the 'next' step. Future
                reorganization may be able to get rid of one of the bCalcVir=TRUE steps. */
 
-            bCalcEner = do_per_step(step-1, ir->nstcalcenergy);
-            bCalcVir  = bCalcEner ||
+            /* TODO: This is probably not what we want, we will write to energy file one step after nstcalcenergy steps. */
+            bCalcEnerStep = do_per_step(step - 1, ir->nstcalcenergy);
+            bCalcVir      = bCalcEnerStep ||
                 (ir->epc != epcNO && (do_per_step(step, ir->nstpcouple) || do_per_step(step-1, ir->nstpcouple)));
         }
         else
         {
-            bCalcEner = do_per_step(step, ir->nstcalcenergy);
-            bCalcVir  = bCalcEner ||
+            bCalcEnerStep = do_per_step(step, ir->nstcalcenergy);
+            bCalcVir      = bCalcEnerStep ||
                 (ir->epc != epcNO && do_per_step(step, ir->nstpcouple));
         }
-
-        /* Do we need global communication ? */
-        bGStat = (bCalcVir || bCalcEner || bStopCM ||
-                  do_per_step(step, nstglobalcomm) ||
-                  (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm)));
+        bCalcEner = bCalcEnerStep;
 
         do_ene = (do_per_step(step, ir->nstenergy) || bLastStep);
 
@@ -1023,9 +1022,13 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         {
             bCalcVir  = TRUE;
             bCalcEner = TRUE;
-            bGStat    = TRUE;
         }
 
+        /* Do we need global communication ? */
+        bGStat = (bCalcVir || bCalcEner || bStopCM ||
+                  do_per_step(step, nstglobalcomm) ||
+                  (bVV && IR_NVT_TROTTER(ir) && do_per_step(step-1, nstglobalcomm)));
+
         /* these CGLO_ options remain the same throughout the iteration */
         cglo_flags = ((bRerunMD ? CGLO_RERUNMD : 0) |
                       (bGStat ? CGLO_GSTAT : 0)
@@ -1172,6 +1175,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                                 | (bTemp ? CGLO_TEMPERATURE : 0)
                                 | (bPres ? CGLO_PRESSURE : 0)
                                 | (bPres ? CGLO_CONSTRAINT : 0)
+                                | (bStopCM ? CGLO_STOPCM : 0)
                                 | CGLO_SCALEEKIN
                                 );
                 /* explanation of above:
@@ -1274,8 +1278,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         /* Check if IMD step and do IMD communication, if bIMD is TRUE. */
         bIMDstep = do_IMD(ir->bIMD, step, cr, bNS, state->box, state->x, ir, t, wcycle);
 
-        /* kludge -- virial is lost with restart for NPT control. Must restart */
-        if (bStartingFromCpt && bVV)
+        /* kludge -- virial is lost with restart for MTTK NPT control. Must reload (saved earlier). */
+        if (bStartingFromCpt && bTrotter)
         {
             copy_mat(state->svir_prev, shake_vir);
             copy_mat(state->fvir_prev, force_vir);
@@ -1350,26 +1354,21 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
             gs.sig[eglsCHKPT] = 1;
         }
 
-        /* at the start of step, randomize or scale the velocities (trotter done elsewhere) */
-        if (EI_VV(ir->eI))
+        /* at the start of step, randomize or scale the velocities ((if vv. Restriction of Andersen controlled
+           in preprocessing */
+
+        if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */
         {
-            if (!bInitStep)
-            {
-                update_tcouple(step, ir, state, ekind, &MassQ, mdatoms);
-            }
-            if (ETC_ANDERSEN(ir->etc)) /* keep this outside of update_tcouple because of the extra info required to pass */
+            gmx_bool bIfRandomize;
+            bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr);
+            /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */
+            if (constr && bIfRandomize)
             {
-                gmx_bool bIfRandomize;
-                bIfRandomize = update_randomize_velocities(ir, step, cr, mdatoms, state, upd, constr);
-                /* if we have constraints, we have to remove the kinetic energy parallel to the bonds */
-                if (constr && bIfRandomize)
-                {
-                    update_constraints(fplog, step, NULL, ir, mdatoms,
-                                       state, fr->bMolPBC, graph, f,
-                                       &top->idef, tmp_vir,
-                                       cr, nrnb, wcycle, upd, constr,
-                                       TRUE, bCalcVir);
-                }
+                update_constraints(fplog, step, NULL, ir, mdatoms,
+                                   state, fr->bMolPBC, graph, f,
+                                   &top->idef, tmp_vir,
+                                   cr, nrnb, wcycle, upd, constr,
+                                   TRUE, bCalcVir);
             }
         }
         /* #########   START SECOND UPDATE STEP ################# */
@@ -1599,36 +1598,32 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
         /* Output stuff */
         if (MASTER(cr))
         {
-            gmx_bool do_dr, do_or;
-
             if (fplog && do_log && bDoExpanded)
             {
                 /* only needed if doing expanded ensemble */
                 PrintFreeEnergyInfoToFile(fplog, ir->fepvals, ir->expandedvals, ir->bSimTemp ? ir->simtempvals : NULL,
                                           &state_global->dfhist, state->fep_state, ir->nstlog, step);
             }
-            if (!(bStartingFromCpt && (EI_VV(ir->eI))))
+            if (bCalcEner)
             {
-                if (bCalcEner)
-                {
-                    upd_mdebin(mdebin, bDoDHDL, TRUE,
-                               t, mdatoms->tmass, enerd, state,
-                               ir->fepvals, ir->expandedvals, lastbox,
-                               shake_vir, force_vir, total_vir, pres,
-                               ekind, mu_tot, constr);
-                }
-                else
-                {
-                    upd_mdebin_step(mdebin);
-                }
+                upd_mdebin(mdebin, bDoDHDL, bCalcEnerStep,
+                           t, mdatoms->tmass, enerd, state,
+                           ir->fepvals, ir->expandedvals, lastbox,
+                           shake_vir, force_vir, total_vir, pres,
+                           ekind, mu_tot, constr);
+            }
+            else
+            {
+                upd_mdebin_step(mdebin);
+            }
 
-                do_dr  = do_per_step(step, ir->nstdisreout);
-                do_or  = do_per_step(step, ir->nstorireout);
+            gmx_bool do_dr  = do_per_step(step, ir->nstdisreout);
+            gmx_bool do_or  = do_per_step(step, ir->nstorireout);
+
+            print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL,
+                       step, t,
+                       eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts));
 
-                print_ebin(mdoutf_get_fp_ene(outf), do_ene, do_dr, do_or, do_log ? fplog : NULL,
-                           step, t,
-                           eprNORMAL, bCompact, mdebin, fcd, groups, &(ir->opts));
-            }
             if (ir->bPull)
             {
                 pull_print_output(ir->pull_work, step, t);
@@ -1766,7 +1761,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[],
                  * until after load balancing completes,
                  * e.g. https://gerrit.gromacs.org/#/c/4964/2 */
                 gmx_fatal(FARGS, "PME tuning was still active when attempting to "
-                          "reset mdrun counters at step " GMX_PRId64 ". Try "
+                          "reset mdrun counters at step %" GMX_PRId64 ". Try "
                           "resetting counters later in the run, e.g. with gmx "
                           "mdrun -resetstep.", step);
             }
diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/mdrun.cpp b/patches/gromacs-5.1.2.diff/src/programs/mdrun/mdrun.cpp
index e249f8d9ae7ea0b6ebc46bc96e2411a30c718784..2575eae72a2c1493d5e84e8900f697df498b9a77 100644
--- a/patches/gromacs-5.1.2.diff/src/programs/mdrun/mdrun.cpp
+++ b/patches/gromacs-5.1.2.diff/src/programs/mdrun/mdrun.cpp
@@ -590,12 +590,6 @@ int gmx_mdrun(int argc, char *argv[])
                   nmultisim, repl_ex_nst, repl_ex_nex, repl_ex_seed,
                   pforce, cpt_period, max_hours, imdport, Flags);
 
-    /* PLUMED */
-    if(plumedswitch){
-      plumed_finalize(plumedmain);
-    }
-    /* END PLUMED */
-
     /* Log file has to be closed in mdrunner if we are appending to it
        (fplog not set here) */
     if (MASTER(cr) && !bDoAppendFiles)
diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/runner.cpp b/patches/gromacs-5.1.2.diff/src/programs/mdrun/runner.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..398697eb4abb23cae573f7ced640bd882eba932f
--- /dev/null
+++ b/patches/gromacs-5.1.2.diff/src/programs/mdrun/runner.cpp
@@ -0,0 +1,1363 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2011,2012,2013,2014,2015,2016, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+
+#include "gmxpre.h"
+
+#include "config.h"
+
+#include <assert.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <algorithm>
+
+#include "gromacs/domdec/domdec.h"
+#include "gromacs/essentialdynamics/edsam.h"
+#include "gromacs/ewald/pme.h"
+#include "gromacs/fileio/tpxio.h"
+#include "gromacs/gmxlib/gpu_utils/gpu_utils.h"
+#include "gromacs/legacyheaders/checkpoint.h"
+#include "gromacs/legacyheaders/constr.h"
+#include "gromacs/legacyheaders/copyrite.h"
+#include "gromacs/legacyheaders/disre.h"
+#include "gromacs/legacyheaders/force.h"
+#include "gromacs/legacyheaders/gmx_detect_hardware.h"
+#include "gromacs/legacyheaders/gmx_omp_nthreads.h"
+#include "gromacs/legacyheaders/gmx_thread_affinity.h"
+#include "gromacs/legacyheaders/inputrec.h"
+#include "gromacs/legacyheaders/main.h"
+#include "gromacs/legacyheaders/md_logging.h"
+#include "gromacs/legacyheaders/md_support.h"
+#include "gromacs/legacyheaders/mdatoms.h"
+#include "gromacs/legacyheaders/mdrun.h"
+#include "gromacs/legacyheaders/names.h"
+#include "gromacs/legacyheaders/network.h"
+#include "gromacs/legacyheaders/oenv.h"
+#include "gromacs/legacyheaders/orires.h"
+#include "gromacs/legacyheaders/qmmm.h"
+#include "gromacs/legacyheaders/sighandler.h"
+#include "gromacs/legacyheaders/txtdump.h"
+#include "gromacs/legacyheaders/typedefs.h"
+#include "gromacs/math/calculate-ewald-splitting-coefficient.h"
+#include "gromacs/math/vec.h"
+#include "gromacs/mdlib/calc_verletbuf.h"
+#include "gromacs/mdlib/nbnxn_search.h"
+#include "gromacs/pbcutil/pbc.h"
+#include "gromacs/pulling/pull.h"
+#include "gromacs/pulling/pull_rotation.h"
+#include "gromacs/swap/swapcoords.h"
+#include "gromacs/timing/wallcycle.h"
+#include "gromacs/topology/mtop_util.h"
+#include "gromacs/utility/gmxassert.h"
+#include "gromacs/utility/gmxmpi.h"
+#include "gromacs/utility/smalloc.h"
+
+#include "deform.h"
+#include "membed.h"
+#include "repl_ex.h"
+#include "resource-division.h"
+
+/* PLUMED */
+#include "../../../Plumed.h"
+extern int    plumedswitch;
+extern plumed plumedmain;
+/* END PLUMED */
+
+#ifdef GMX_FAHCORE
+#include "corewrap.h"
+#endif
+
+typedef struct {
+    gmx_integrator_t *func;
+} gmx_intp_t;
+
+/* The array should match the eI array in include/types/enums.h */
+const gmx_intp_t    integrator[eiNR] = { {do_md}, {do_steep}, {do_cg}, {do_md}, {do_md}, {do_nm}, {do_lbfgs}, {do_tpi}, {do_tpi}, {do_md}, {do_md}, {do_md}};
+
+gmx_int64_t         deform_init_init_step_tpx;
+matrix              deform_init_box_tpx;
+tMPI_Thread_mutex_t deform_init_box_mutex = TMPI_THREAD_MUTEX_INITIALIZER;
+
+
+#ifdef GMX_THREAD_MPI
+/* The minimum number of atoms per tMPI thread. With fewer atoms than this,
+ * the number of threads will get lowered.
+ */
+#define MIN_ATOMS_PER_MPI_THREAD    90
+#define MIN_ATOMS_PER_GPU           900
+
+struct mdrunner_arglist
+{
+    gmx_hw_opt_t    hw_opt;
+    FILE           *fplog;
+    t_commrec      *cr;
+    int             nfile;
+    const t_filenm *fnm;
+    output_env_t    oenv;
+    gmx_bool        bVerbose;
+    gmx_bool        bCompact;
+    int             nstglobalcomm;
+    ivec            ddxyz;
+    int             dd_node_order;
+    real            rdd;
+    real            rconstr;
+    const char     *dddlb_opt;
+    real            dlb_scale;
+    const char     *ddcsx;
+    const char     *ddcsy;
+    const char     *ddcsz;
+    const char     *nbpu_opt;
+    int             nstlist_cmdline;
+    gmx_int64_t     nsteps_cmdline;
+    int             nstepout;
+    int             resetstep;
+    int             nmultisim;
+    int             repl_ex_nst;
+    int             repl_ex_nex;
+    int             repl_ex_seed;
+    real            pforce;
+    real            cpt_period;
+    real            max_hours;
+    int             imdport;
+    unsigned long   Flags;
+};
+
+
+/* The function used for spawning threads. Extracts the mdrunner()
+   arguments from its one argument and calls mdrunner(), after making
+   a commrec. */
+static void mdrunner_start_fn(void *arg)
+{
+    struct mdrunner_arglist *mda = (struct mdrunner_arglist*)arg;
+    struct mdrunner_arglist  mc  = *mda; /* copy the arg list to make sure
+                                            that it's thread-local. This doesn't
+                                            copy pointed-to items, of course,
+                                            but those are all const. */
+    t_commrec *cr;                       /* we need a local version of this */
+    FILE      *fplog = NULL;
+    t_filenm  *fnm;
+
+    fnm = dup_tfn(mc.nfile, mc.fnm);
+
+    cr = reinitialize_commrec_for_this_thread(mc.cr);
+
+    if (MASTER(cr))
+    {
+        fplog = mc.fplog;
+    }
+
+    mdrunner(&mc.hw_opt, fplog, cr, mc.nfile, fnm, mc.oenv,
+             mc.bVerbose, mc.bCompact, mc.nstglobalcomm,
+             mc.ddxyz, mc.dd_node_order, mc.rdd,
+             mc.rconstr, mc.dddlb_opt, mc.dlb_scale,
+             mc.ddcsx, mc.ddcsy, mc.ddcsz,
+             mc.nbpu_opt, mc.nstlist_cmdline,
+             mc.nsteps_cmdline, mc.nstepout, mc.resetstep,
+             mc.nmultisim, mc.repl_ex_nst, mc.repl_ex_nex, mc.repl_ex_seed, mc.pforce,
+             mc.cpt_period, mc.max_hours, mc.imdport, mc.Flags);
+}
+
+/* called by mdrunner() to start a specific number of threads (including
+   the main thread) for thread-parallel runs. This in turn calls mdrunner()
+   for each thread.
+   All options besides nthreads are the same as for mdrunner(). */
+static t_commrec *mdrunner_start_threads(gmx_hw_opt_t *hw_opt,
+                                         FILE *fplog, t_commrec *cr, int nfile,
+                                         const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+                                         gmx_bool bCompact, int nstglobalcomm,
+                                         ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+                                         const char *dddlb_opt, real dlb_scale,
+                                         const char *ddcsx, const char *ddcsy, const char *ddcsz,
+                                         const char *nbpu_opt, int nstlist_cmdline,
+                                         gmx_int64_t nsteps_cmdline,
+                                         int nstepout, int resetstep,
+                                         int nmultisim, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed,
+                                         real pforce, real cpt_period, real max_hours,
+                                         unsigned long Flags)
+{
+    int                      ret;
+    struct mdrunner_arglist *mda;
+    t_commrec               *crn; /* the new commrec */
+    t_filenm                *fnmn;
+
+    /* first check whether we even need to start tMPI */
+    if (hw_opt->nthreads_tmpi < 2)
+    {
+        return cr;
+    }
+
+    /* a few small, one-time, almost unavoidable memory leaks: */
+    snew(mda, 1);
+    fnmn = dup_tfn(nfile, fnm);
+
+    /* fill the data structure to pass as void pointer to thread start fn */
+    /* hw_opt contains pointers, which should all be NULL at this stage */
+    mda->hw_opt          = *hw_opt;
+    mda->fplog           = fplog;
+    mda->cr              = cr;
+    mda->nfile           = nfile;
+    mda->fnm             = fnmn;
+    mda->oenv            = oenv;
+    mda->bVerbose        = bVerbose;
+    mda->bCompact        = bCompact;
+    mda->nstglobalcomm   = nstglobalcomm;
+    mda->ddxyz[XX]       = ddxyz[XX];
+    mda->ddxyz[YY]       = ddxyz[YY];
+    mda->ddxyz[ZZ]       = ddxyz[ZZ];
+    mda->dd_node_order   = dd_node_order;
+    mda->rdd             = rdd;
+    mda->rconstr         = rconstr;
+    mda->dddlb_opt       = dddlb_opt;
+    mda->dlb_scale       = dlb_scale;
+    mda->ddcsx           = ddcsx;
+    mda->ddcsy           = ddcsy;
+    mda->ddcsz           = ddcsz;
+    mda->nbpu_opt        = nbpu_opt;
+    mda->nstlist_cmdline = nstlist_cmdline;
+    mda->nsteps_cmdline  = nsteps_cmdline;
+    mda->nstepout        = nstepout;
+    mda->resetstep       = resetstep;
+    mda->nmultisim       = nmultisim;
+    mda->repl_ex_nst     = repl_ex_nst;
+    mda->repl_ex_nex     = repl_ex_nex;
+    mda->repl_ex_seed    = repl_ex_seed;
+    mda->pforce          = pforce;
+    mda->cpt_period      = cpt_period;
+    mda->max_hours       = max_hours;
+    mda->Flags           = Flags;
+
+    /* now spawn new threads that start mdrunner_start_fn(), while
+       the main thread returns, we set thread affinity later */
+    ret = tMPI_Init_fn(TRUE, hw_opt->nthreads_tmpi, TMPI_AFFINITY_NONE,
+                       mdrunner_start_fn, (void*)(mda) );
+    if (ret != TMPI_SUCCESS)
+    {
+        return NULL;
+    }
+
+    crn = reinitialize_commrec_for_this_thread(cr);
+    return crn;
+}
+
+#endif /* GMX_THREAD_MPI */
+
+
+/* We determine the extra cost of the non-bonded kernels compared to
+ * a reference nstlist value of 10 (which is the default in grompp).
+ */
+static const int    nbnxnReferenceNstlist = 10;
+/* The values to try when switching  */
+const int           nstlist_try[] = { 20, 25, 40 };
+#define NNSTL  sizeof(nstlist_try)/sizeof(nstlist_try[0])
+/* Increase nstlist until the non-bonded cost increases more than listfac_ok,
+ * but never more than listfac_max.
+ * A standard (protein+)water system at 300K with PME ewald_rtol=1e-5
+ * needs 1.28 at rcoulomb=0.9 and 1.24 at rcoulomb=1.0 to get to nstlist=40.
+ * Note that both CPU and GPU factors are conservative. Performance should
+ * not go down due to this tuning, except with a relatively slow GPU.
+ * On the other hand, at medium/high parallelization or with fast GPUs
+ * nstlist will not be increased enough to reach optimal performance.
+ */
+/* CPU: pair-search is about a factor 1.5 slower than the non-bonded kernel */
+static const float  nbnxn_cpu_listfac_ok    = 1.05;
+static const float  nbnxn_cpu_listfac_max   = 1.09;
+/* GPU: pair-search is a factor 1.5-3 slower than the non-bonded kernel */
+static const float  nbnxn_gpu_listfac_ok    = 1.20;
+static const float  nbnxn_gpu_listfac_max   = 1.30;
+
+/* Try to increase nstlist when using the Verlet cut-off scheme */
+static void increase_nstlist(FILE *fp, t_commrec *cr,
+                             t_inputrec *ir, int nstlist_cmdline,
+                             const gmx_mtop_t *mtop, matrix box,
+                             gmx_bool bGPU)
+{
+    float                  listfac_ok, listfac_max;
+    int                    nstlist_orig, nstlist_prev;
+    verletbuf_list_setup_t ls;
+    real                   rlistWithReferenceNstlist, rlist_inc, rlist_ok, rlist_max;
+    real                   rlist_new, rlist_prev;
+    size_t                 nstlist_ind = 0;
+    t_state                state_tmp;
+    gmx_bool               bBox, bDD, bCont;
+    const char            *nstl_gpu = "\nFor optimal performance with a GPU nstlist (now %d) should be larger.\nThe optimum depends on your CPU and GPU resources.\nYou might want to try several nstlist values.\n";
+    const char            *nve_err  = "Can not increase nstlist because an NVE ensemble is used";
+    const char            *vbd_err  = "Can not increase nstlist because verlet-buffer-tolerance is not set or used";
+    const char            *box_err  = "Can not increase nstlist because the box is too small";
+    const char            *dd_err   = "Can not increase nstlist because of domain decomposition limitations";
+    char                   buf[STRLEN];
+    const float            oneThird = 1.0f / 3.0f;
+
+    if (nstlist_cmdline <= 0)
+    {
+        if (ir->nstlist == 1)
+        {
+            /* The user probably set nstlist=1 for a reason,
+             * don't mess with the settings.
+             */
+            return;
+        }
+
+        if (fp != NULL && bGPU && ir->nstlist < nstlist_try[0])
+        {
+            fprintf(fp, nstl_gpu, ir->nstlist);
+        }
+        nstlist_ind = 0;
+        while (nstlist_ind < NNSTL && ir->nstlist >= nstlist_try[nstlist_ind])
+        {
+            nstlist_ind++;
+        }
+        if (nstlist_ind == NNSTL)
+        {
+            /* There are no larger nstlist value to try */
+            return;
+        }
+    }
+
+    if (EI_MD(ir->eI) && ir->etc == etcNO)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", nve_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", nve_err);
+        }
+
+        return;
+    }
+
+    if (ir->verletbuf_tol == 0 && bGPU)
+    {
+        gmx_fatal(FARGS, "You are using an old tpr file with a GPU, please generate a new tpr file with an up to date version of grompp");
+    }
+
+    if (ir->verletbuf_tol < 0)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", vbd_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", vbd_err);
+        }
+
+        return;
+    }
+
+    if (bGPU)
+    {
+        listfac_ok  = nbnxn_gpu_listfac_ok;
+        listfac_max = nbnxn_gpu_listfac_max;
+    }
+    else
+    {
+        listfac_ok  = nbnxn_cpu_listfac_ok;
+        listfac_max = nbnxn_cpu_listfac_max;
+    }
+
+    nstlist_orig = ir->nstlist;
+    if (nstlist_cmdline > 0)
+    {
+        if (fp)
+        {
+            sprintf(buf, "Getting nstlist=%d from command line option",
+                    nstlist_cmdline);
+        }
+        ir->nstlist = nstlist_cmdline;
+    }
+
+    verletbuf_get_list_setup(TRUE, bGPU, &ls);
+
+    /* Allow rlist to make the list a given factor larger than the list
+     * would be with the reference value for nstlist (10).
+     */
+    nstlist_prev = ir->nstlist;
+    ir->nstlist  = nbnxnReferenceNstlist;
+    calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL,
+                            &rlistWithReferenceNstlist);
+    ir->nstlist  = nstlist_prev;
+
+    /* Determine the pair list size increase due to zero interactions */
+    rlist_inc = nbnxn_get_rlist_effective_inc(ls.cluster_size_j,
+                                              mtop->natoms/det(box));
+    rlist_ok  = (rlistWithReferenceNstlist + rlist_inc)*pow(listfac_ok, oneThird) - rlist_inc;
+    rlist_max = (rlistWithReferenceNstlist + rlist_inc)*pow(listfac_max, oneThird) - rlist_inc;
+    if (debug)
+    {
+        fprintf(debug, "nstlist tuning: rlist_inc %.3f rlist_ok %.3f rlist_max %.3f\n",
+                rlist_inc, rlist_ok, rlist_max);
+    }
+
+    nstlist_prev = nstlist_orig;
+    rlist_prev   = ir->rlist;
+    do
+    {
+        if (nstlist_cmdline <= 0)
+        {
+            ir->nstlist = nstlist_try[nstlist_ind];
+        }
+
+        /* Set the pair-list buffer size in ir */
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        /* Does rlist fit in the box? */
+        bBox = (sqr(rlist_new) < max_cutoff2(ir->ePBC, box));
+        bDD  = TRUE;
+        if (bBox && DOMAINDECOMP(cr))
+        {
+            /* Check if rlist fits in the domain decomposition */
+            if (inputrec2nboundeddim(ir) < DIM)
+            {
+                gmx_incons("Changing nstlist with domain decomposition and unbounded dimensions is not implemented yet");
+            }
+            copy_mat(box, state_tmp.box);
+            bDD = change_dd_cutoff(cr, &state_tmp, ir, rlist_new);
+        }
+
+        if (debug)
+        {
+            fprintf(debug, "nstlist %d rlist %.3f bBox %d bDD %d\n",
+                    ir->nstlist, rlist_new, bBox, bDD);
+        }
+
+        bCont = FALSE;
+
+        if (nstlist_cmdline <= 0)
+        {
+            if (bBox && bDD && rlist_new <= rlist_max)
+            {
+                /* Increase nstlist */
+                nstlist_prev = ir->nstlist;
+                rlist_prev   = rlist_new;
+                bCont        = (nstlist_ind+1 < NNSTL && rlist_new < rlist_ok);
+            }
+            else
+            {
+                /* Stick with the previous nstlist */
+                ir->nstlist = nstlist_prev;
+                rlist_new   = rlist_prev;
+                bBox        = TRUE;
+                bDD         = TRUE;
+            }
+        }
+
+        nstlist_ind++;
+    }
+    while (bCont);
+
+    if (!bBox || !bDD)
+    {
+        gmx_warning(!bBox ? box_err : dd_err);
+        if (fp != NULL)
+        {
+            fprintf(fp, "\n%s\n", bBox ? box_err : dd_err);
+        }
+        ir->nstlist = nstlist_orig;
+    }
+    else if (ir->nstlist != nstlist_orig || rlist_new != ir->rlist)
+    {
+        sprintf(buf, "Changing nstlist from %d to %d, rlist from %g to %g",
+                nstlist_orig, ir->nstlist,
+                ir->rlist, rlist_new);
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n\n", buf);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n\n", buf);
+        }
+        ir->rlist     = rlist_new;
+        ir->rlistlong = rlist_new;
+    }
+}
+
+static void prepare_verlet_scheme(FILE                           *fplog,
+                                  t_commrec                      *cr,
+                                  t_inputrec                     *ir,
+                                  int                             nstlist_cmdline,
+                                  const gmx_mtop_t               *mtop,
+                                  matrix                          box,
+                                  gmx_bool                        bUseGPU)
+{
+    /* For NVE simulations, we will retain the initial list buffer */
+    if (EI_DYNAMICS(ir->eI) &&
+        ir->verletbuf_tol > 0 &&
+        !(EI_MD(ir->eI) && ir->etc == etcNO))
+    {
+        /* Update the Verlet buffer size for the current run setup */
+        verletbuf_list_setup_t ls;
+        real                   rlist_new;
+
+        /* Here we assume SIMD-enabled kernels are being used. But as currently
+         * calc_verlet_buffer_size gives the same results for 4x8 and 4x4
+         * and 4x2 gives a larger buffer than 4x4, this is ok.
+         */
+        verletbuf_get_list_setup(TRUE, bUseGPU, &ls);
+
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        if (rlist_new != ir->rlist)
+        {
+            if (fplog != NULL)
+            {
+                fprintf(fplog, "\nChanging rlist from %g to %g for non-bonded %dx%d atom kernels\n\n",
+                        ir->rlist, rlist_new,
+                        ls.cluster_size_i, ls.cluster_size_j);
+            }
+            ir->rlist     = rlist_new;
+            ir->rlistlong = rlist_new;
+        }
+    }
+
+    if (nstlist_cmdline > 0 && (!EI_DYNAMICS(ir->eI) || ir->verletbuf_tol <= 0))
+    {
+        gmx_fatal(FARGS, "Can not set nstlist without %s",
+                  !EI_DYNAMICS(ir->eI) ? "dynamics" : "verlet-buffer-tolerance");
+    }
+
+    if (EI_DYNAMICS(ir->eI))
+    {
+        /* Set or try nstlist values */
+        increase_nstlist(fplog, cr, ir, nstlist_cmdline, mtop, box, bUseGPU);
+    }
+}
+
+/* Override the value in inputrec with value passed on the command line (if any) */
+static void override_nsteps_cmdline(FILE            *fplog,
+                                    gmx_int64_t      nsteps_cmdline,
+                                    t_inputrec      *ir,
+                                    const t_commrec *cr)
+{
+    assert(ir);
+    assert(cr);
+
+    /* override with anything else than the default -2 */
+    if (nsteps_cmdline > -2)
+    {
+        char sbuf_steps[STEPSTRSIZE];
+        char sbuf_msg[STRLEN];
+
+        ir->nsteps = nsteps_cmdline;
+        if (EI_DYNAMICS(ir->eI) && nsteps_cmdline != -1)
+        {
+            sprintf(sbuf_msg, "Overriding nsteps with value passed on the command line: %s steps, %.3g ps",
+                    gmx_step_str(nsteps_cmdline, sbuf_steps),
+                    fabs(nsteps_cmdline*ir->delta_t));
+        }
+        else
+        {
+            sprintf(sbuf_msg, "Overriding nsteps with value passed on the command line: %s steps",
+                    gmx_step_str(nsteps_cmdline, sbuf_steps));
+        }
+
+        md_print_warn(cr, fplog, "%s\n", sbuf_msg);
+    }
+    else if (nsteps_cmdline < -2)
+    {
+        gmx_fatal(FARGS, "Invalid nsteps value passed on the command line: %d",
+                  nsteps_cmdline);
+    }
+    /* Do nothing if nsteps_cmdline == -2 */
+}
+
+int mdrunner(gmx_hw_opt_t *hw_opt,
+             FILE *fplog, t_commrec *cr, int nfile,
+             const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+             gmx_bool bCompact, int nstglobalcomm,
+             ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+             const char *dddlb_opt, real dlb_scale,
+             const char *ddcsx, const char *ddcsy, const char *ddcsz,
+             const char *nbpu_opt, int nstlist_cmdline,
+             gmx_int64_t nsteps_cmdline, int nstepout, int resetstep,
+             int gmx_unused nmultisim, int repl_ex_nst, int repl_ex_nex,
+             int repl_ex_seed, real pforce, real cpt_period, real max_hours,
+             int imdport, unsigned long Flags)
+{
+    gmx_bool                  bForceUseGPU, bTryUseGPU, bRerunMD;
+    t_inputrec               *inputrec;
+    t_state                  *state = NULL;
+    matrix                    box;
+    gmx_ddbox_t               ddbox = {0};
+    int                       npme_major, npme_minor;
+    t_nrnb                   *nrnb;
+    gmx_mtop_t               *mtop          = NULL;
+    t_mdatoms                *mdatoms       = NULL;
+    t_forcerec               *fr            = NULL;
+    t_fcdata                 *fcd           = NULL;
+    real                      ewaldcoeff_q  = 0;
+    real                      ewaldcoeff_lj = 0;
+    struct gmx_pme_t        **pmedata       = NULL;
+    gmx_vsite_t              *vsite         = NULL;
+    gmx_constr_t              constr;
+    int                       nChargePerturbed = -1, nTypePerturbed = 0, status;
+    gmx_wallcycle_t           wcycle;
+    gmx_bool                  bReadEkin;
+    gmx_walltime_accounting_t walltime_accounting = NULL;
+    int                       rc;
+    gmx_int64_t               reset_counters;
+    gmx_edsam_t               ed           = NULL;
+    int                       nthreads_pme = 1;
+    int                       nthreads_pp  = 1;
+    gmx_membed_t              membed       = NULL;
+    gmx_hw_info_t            *hwinfo       = NULL;
+    /* The master rank decides early on bUseGPU and broadcasts this later */
+    gmx_bool                  bUseGPU      = FALSE;
+
+    /* CAUTION: threads may be started later on in this function, so
+       cr doesn't reflect the final parallel state right now */
+    snew(inputrec, 1);
+    snew(mtop, 1);
+
+    if (Flags & MD_APPENDFILES)
+    {
+        fplog = NULL;
+    }
+
+    bRerunMD     = (Flags & MD_RERUN);
+    bForceUseGPU = (strncmp(nbpu_opt, "gpu", 3) == 0);
+    bTryUseGPU   = (strncmp(nbpu_opt, "auto", 4) == 0) || bForceUseGPU;
+
+    /* Detect hardware, gather information. This is an operation that is
+     * global for this process (MPI rank). */
+    hwinfo = gmx_detect_hardware(fplog, cr, bTryUseGPU);
+
+    gmx_print_detected_hardware(fplog, cr, hwinfo);
+
+    if (fplog != NULL)
+    {
+        /* Print references after all software/hardware printing */
+        please_cite(fplog, "Abraham2015");
+        please_cite(fplog, "Pall2015");
+        please_cite(fplog, "Pronk2013");
+        please_cite(fplog, "Hess2008b");
+        please_cite(fplog, "Spoel2005a");
+        please_cite(fplog, "Lindahl2001a");
+        please_cite(fplog, "Berendsen95a");
+    }
+
+    snew(state, 1);
+    if (SIMMASTER(cr))
+    {
+        /* Read (nearly) all data required for the simulation */
+        read_tpx_state(ftp2fn(efTPR, nfile, fnm), inputrec, state, NULL, mtop);
+
+        if (inputrec->cutoff_scheme == ecutsVERLET)
+        {
+            /* Here the master rank decides if all ranks will use GPUs */
+            bUseGPU = (hwinfo->gpu_info.n_dev_compatible > 0 ||
+                       getenv("GMX_EMULATE_GPU") != NULL);
+
+            /* TODO add GPU kernels for this and replace this check by:
+             * (bUseGPU && (ir->vdwtype == evdwPME &&
+             *               ir->ljpme_combination_rule == eljpmeLB))
+             * update the message text and the content of nbnxn_acceleration_supported.
+             */
+            if (bUseGPU &&
+                !nbnxn_gpu_acceleration_supported(fplog, cr, inputrec, bRerunMD))
+            {
+                /* Fallback message printed by nbnxn_acceleration_supported */
+                if (bForceUseGPU)
+                {
+                    gmx_fatal(FARGS, "GPU acceleration requested, but not supported with the given input settings");
+                }
+                bUseGPU = FALSE;
+            }
+
+            prepare_verlet_scheme(fplog, cr,
+                                  inputrec, nstlist_cmdline, mtop, state->box,
+                                  bUseGPU);
+        }
+        else
+        {
+            if (nstlist_cmdline > 0)
+            {
+                gmx_fatal(FARGS, "Can not set nstlist with the group cut-off scheme");
+            }
+
+            if (hwinfo->gpu_info.n_dev_compatible > 0)
+            {
+                md_print_warn(cr, fplog,
+                              "NOTE: GPU(s) found, but the current simulation can not use GPUs\n"
+                              "      To use a GPU, set the mdp option: cutoff-scheme = Verlet\n");
+            }
+
+            if (bForceUseGPU)
+            {
+                gmx_fatal(FARGS, "GPU requested, but can't be used without cutoff-scheme=Verlet");
+            }
+
+#ifdef GMX_TARGET_BGQ
+            md_print_warn(cr, fplog,
+                          "NOTE: There is no SIMD implementation of the group scheme kernels on\n"
+                          "      BlueGene/Q. You will observe better performance from using the\n"
+                          "      Verlet cut-off scheme.\n");
+#endif
+        }
+
+        if (inputrec->eI == eiSD2)
+        {
+            md_print_warn(cr, fplog, "The stochastic dynamics integrator %s is deprecated, since\n"
+                          "it is slower than integrator %s and is slightly less accurate\n"
+                          "with constraints. Use the %s integrator.",
+                          ei_names[inputrec->eI], ei_names[eiSD1], ei_names[eiSD1]);
+        }
+    }
+
+    /* Check and update the hardware options for internal consistency */
+    check_and_update_hw_opt_1(hw_opt, cr);
+
+    /* Early check for externally set process affinity. */
+    gmx_check_thread_affinity_set(fplog, cr,
+                                  hw_opt, hwinfo->nthreads_hw_avail, FALSE);
+
+#ifdef GMX_THREAD_MPI
+    if (SIMMASTER(cr))
+    {
+        if (cr->npmenodes > 0 && hw_opt->nthreads_tmpi <= 0)
+        {
+            gmx_fatal(FARGS, "You need to explicitly specify the number of MPI threads (-ntmpi) when using separate PME ranks");
+        }
+
+        /* Since the master knows the cut-off scheme, update hw_opt for this.
+         * This is done later for normal MPI and also once more with tMPI
+         * for all tMPI ranks.
+         */
+        check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+        /* NOW the threads will be started: */
+        hw_opt->nthreads_tmpi = get_nthreads_mpi(hwinfo,
+                                                 hw_opt,
+                                                 inputrec, mtop,
+                                                 cr, fplog, bUseGPU);
+
+        if (hw_opt->nthreads_tmpi > 1)
+        {
+            t_commrec *cr_old       = cr;
+            /* now start the threads. */
+            cr = mdrunner_start_threads(hw_opt, fplog, cr_old, nfile, fnm,
+                                        oenv, bVerbose, bCompact, nstglobalcomm,
+                                        ddxyz, dd_node_order, rdd, rconstr,
+                                        dddlb_opt, dlb_scale, ddcsx, ddcsy, ddcsz,
+                                        nbpu_opt, nstlist_cmdline,
+                                        nsteps_cmdline, nstepout, resetstep, nmultisim,
+                                        repl_ex_nst, repl_ex_nex, repl_ex_seed, pforce,
+                                        cpt_period, max_hours,
+                                        Flags);
+            /* the main thread continues here with a new cr. We don't deallocate
+               the old cr because other threads may still be reading it. */
+            if (cr == NULL)
+            {
+                gmx_comm("Failed to spawn threads");
+            }
+        }
+    }
+#endif
+    /* END OF CAUTION: cr is now reliable */
+
+    /* g_membed initialisation *
+     * Because we change the mtop, init_membed is called before the init_parallel *
+     * (in case we ever want to make it run in parallel) */
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "Initializing membed");
+        }
+        membed = init_membed(fplog, nfile, fnm, mtop, inputrec, state, cr, &cpt_period);
+    }
+
+    if (PAR(cr))
+    {
+        /* now broadcast everything to the non-master nodes/threads: */
+        init_parallel(cr, inputrec, mtop);
+
+        /* The master rank decided on the use of GPUs,
+         * broadcast this information to all ranks.
+         */
+        gmx_bcast_sim(sizeof(bUseGPU), &bUseGPU, cr);
+    }
+
+    if (fplog != NULL)
+    {
+        pr_inputrec(fplog, 0, "Input Parameters", inputrec, FALSE);
+        fprintf(fplog, "\n");
+    }
+
+    /* now make sure the state is initialized and propagated */
+    set_state_entries(state, inputrec);
+
+    /* A parallel command line option consistency check that we can
+       only do after any threads have started. */
+    if (!PAR(cr) &&
+        (ddxyz[XX] > 1 || ddxyz[YY] > 1 || ddxyz[ZZ] > 1 || cr->npmenodes > 0))
+    {
+        gmx_fatal(FARGS,
+                  "The -dd or -npme option request a parallel simulation, "
+#ifndef GMX_MPI
+                  "but %s was compiled without threads or MPI enabled"
+#else
+#ifdef GMX_THREAD_MPI
+                  "but the number of threads (option -nt) is 1"
+#else
+                  "but %s was not started through mpirun/mpiexec or only one rank was requested through mpirun/mpiexec"
+#endif
+#endif
+                  , output_env_get_program_display_name(oenv)
+                  );
+    }
+
+    if (bRerunMD &&
+        (EI_ENERGY_MINIMIZATION(inputrec->eI) || eiNM == inputrec->eI))
+    {
+        gmx_fatal(FARGS, "The .mdp file specified an energy mininization or normal mode algorithm, and these are not compatible with mdrun -rerun");
+    }
+
+    if (can_use_allvsall(inputrec, TRUE, cr, fplog) && DOMAINDECOMP(cr))
+    {
+        gmx_fatal(FARGS, "All-vs-all loops do not work with domain decomposition, use a single MPI rank");
+    }
+
+    if (!(EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype)))
+    {
+        if (cr->npmenodes > 0)
+        {
+            gmx_fatal_collective(FARGS, cr, NULL,
+                                 "PME-only ranks are requested, but the system does not use PME for electrostatics or LJ");
+        }
+
+        cr->npmenodes = 0;
+    }
+
+    if (bUseGPU && cr->npmenodes < 0)
+    {
+        /* With GPUs we don't automatically use PME-only ranks. PME ranks can
+         * improve performance with many threads per GPU, since our OpenMP
+         * scaling is bad, but it's difficult to automate the setup.
+         */
+        cr->npmenodes = 0;
+    }
+
+#ifdef GMX_FAHCORE
+    if (MASTER(cr))
+    {
+        fcRegisterSteps(inputrec->nsteps, inputrec->init_step);
+    }
+#endif
+
+    /* NMR restraints must be initialized before load_checkpoint,
+     * since with time averaging the history is added to t_state.
+     * For proper consistency check we therefore need to extend
+     * t_state here.
+     * So the PME-only nodes (if present) will also initialize
+     * the distance restraints.
+     */
+    snew(fcd, 1);
+
+    /* This needs to be called before read_checkpoint to extend the state */
+    init_disres(fplog, mtop, inputrec, cr, fcd, state, repl_ex_nst > 0);
+
+    init_orires(fplog, mtop, state->x, inputrec, cr, &(fcd->orires),
+                state);
+
+    if (DEFORM(*inputrec))
+    {
+        /* Store the deform reference box before reading the checkpoint */
+        if (SIMMASTER(cr))
+        {
+            copy_mat(state->box, box);
+        }
+        if (PAR(cr))
+        {
+            gmx_bcast(sizeof(box), box, cr);
+        }
+        /* Because we do not have the update struct available yet
+         * in which the reference values should be stored,
+         * we store them temporarily in static variables.
+         * This should be thread safe, since they are only written once
+         * and with identical values.
+         */
+        tMPI_Thread_mutex_lock(&deform_init_box_mutex);
+        deform_init_init_step_tpx = inputrec->init_step;
+        copy_mat(box, deform_init_box_tpx);
+        tMPI_Thread_mutex_unlock(&deform_init_box_mutex);
+    }
+
+    if (opt2bSet("-cpi", nfile, fnm))
+    {
+        /* Check if checkpoint file exists before doing continuation.
+         * This way we can use identical input options for the first and subsequent runs...
+         */
+        if (gmx_fexist_master(opt2fn_master("-cpi", nfile, fnm, cr), cr) )
+        {
+            load_checkpoint(opt2fn_master("-cpi", nfile, fnm, cr), &fplog,
+                            cr, ddxyz,
+                            inputrec, state, &bReadEkin,
+                            (Flags & MD_APPENDFILES),
+                            (Flags & MD_APPENDFILESSET));
+
+            if (bReadEkin)
+            {
+                Flags |= MD_READ_EKIN;
+            }
+        }
+    }
+
+    if (MASTER(cr) && (Flags & MD_APPENDFILES))
+    {
+        gmx_log_open(ftp2fn(efLOG, nfile, fnm), cr,
+                     Flags, &fplog);
+    }
+
+    /* override nsteps with value from cmdline */
+    override_nsteps_cmdline(fplog, nsteps_cmdline, inputrec, cr);
+
+    if (SIMMASTER(cr))
+    {
+        copy_mat(state->box, box);
+    }
+
+    if (PAR(cr))
+    {
+        gmx_bcast(sizeof(box), box, cr);
+    }
+
+    /* Essential dynamics */
+    if (opt2bSet("-ei", nfile, fnm))
+    {
+        /* Open input and output files, allocate space for ED data structure */
+        ed = ed_open(mtop->natoms, &state->edsamstate, nfile, fnm, Flags, oenv, cr);
+    }
+
+    if (PAR(cr) && !(EI_TPI(inputrec->eI) ||
+                     inputrec->eI == eiNM))
+    {
+        cr->dd = init_domain_decomposition(fplog, cr, Flags, ddxyz, rdd, rconstr,
+                                           dddlb_opt, dlb_scale,
+                                           ddcsx, ddcsy, ddcsz,
+                                           mtop, inputrec,
+                                           box, state->x,
+                                           &ddbox, &npme_major, &npme_minor);
+
+        make_dd_communicators(fplog, cr, dd_node_order);
+
+        /* Set overallocation to avoid frequent reallocation of arrays */
+        set_over_alloc_dd(TRUE);
+    }
+    else
+    {
+        /* PME, if used, is done on all nodes with 1D decomposition */
+        cr->npmenodes = 0;
+        cr->duty      = (DUTY_PP | DUTY_PME);
+        npme_major    = 1;
+        npme_minor    = 1;
+
+        if (inputrec->ePBC == epbcSCREW)
+        {
+            gmx_fatal(FARGS,
+                      "pbc=%s is only implemented with domain decomposition",
+                      epbc_names[inputrec->ePBC]);
+        }
+    }
+
+    if (PAR(cr))
+    {
+        /* After possible communicator splitting in make_dd_communicators.
+         * we can set up the intra/inter node communication.
+         */
+        gmx_setup_nodecomm(fplog, cr);
+    }
+
+    /* Initialize per-physical-node MPI process/thread ID and counters. */
+    gmx_init_intranode_counters(cr);
+#ifdef GMX_MPI
+    if (MULTISIM(cr))
+    {
+        md_print_info(cr, fplog,
+                      "This is simulation %d out of %d running as a composite GROMACS\n"
+                      "multi-simulation job. Setup for this simulation:\n\n",
+                      cr->ms->sim, cr->ms->nsim);
+    }
+    md_print_info(cr, fplog, "Using %d MPI %s\n",
+                  cr->nnodes,
+#ifdef GMX_THREAD_MPI
+                  cr->nnodes == 1 ? "thread" : "threads"
+#else
+                  cr->nnodes == 1 ? "process" : "processes"
+#endif
+                  );
+    fflush(stderr);
+#endif
+
+    /* Check and update hw_opt for the cut-off scheme */
+    check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+    /* Check and update hw_opt for the number of MPI ranks */
+    check_and_update_hw_opt_3(hw_opt);
+
+    gmx_omp_nthreads_init(fplog, cr,
+                          hwinfo->nthreads_hw_avail,
+                          hw_opt->nthreads_omp,
+                          hw_opt->nthreads_omp_pme,
+                          (cr->duty & DUTY_PP) == 0,
+                          inputrec->cutoff_scheme == ecutsVERLET);
+
+#ifndef NDEBUG
+    if (integrator[inputrec->eI].func != do_tpi &&
+        inputrec->cutoff_scheme == ecutsVERLET)
+    {
+        gmx_feenableexcept();
+    }
+#endif
+
+    if (bUseGPU)
+    {
+        /* Select GPU id's to use */
+        gmx_select_gpu_ids(fplog, cr, &hwinfo->gpu_info, bForceUseGPU,
+                           &hw_opt->gpu_opt);
+    }
+    else
+    {
+        /* Ignore (potentially) manually selected GPUs */
+        hw_opt->gpu_opt.n_dev_use = 0;
+    }
+
+    /* check consistency across ranks of things like SIMD
+     * support and number of GPUs selected */
+    gmx_check_hw_runconf_consistency(fplog, hwinfo, cr, hw_opt, bUseGPU);
+
+    /* Now that we know the setup is consistent, check for efficiency */
+    check_resource_division_efficiency(hwinfo, hw_opt, Flags & MD_NTOMPSET,
+                                       cr, fplog);
+
+    if (DOMAINDECOMP(cr))
+    {
+        /* When we share GPUs over ranks, we need to know this for the DLB */
+        dd_setup_dlb_resource_sharing(cr, hwinfo, hw_opt);
+    }
+
+    /* getting number of PP/PME threads
+       PME: env variable should be read only on one node to make sure it is
+       identical everywhere;
+     */
+    /* TODO nthreads_pp is only used for pinning threads.
+     * This is a temporary solution until we have a hw topology library.
+     */
+    nthreads_pp  = gmx_omp_nthreads_get(emntNonbonded);
+    nthreads_pme = gmx_omp_nthreads_get(emntPME);
+
+    wcycle = wallcycle_init(fplog, resetstep, cr, nthreads_pp, nthreads_pme);
+
+    if (PAR(cr))
+    {
+        /* Master synchronizes its value of reset_counters with all nodes
+         * including PME only nodes */
+        reset_counters = wcycle_get_reset_counters(wcycle);
+        gmx_bcast_sim(sizeof(reset_counters), &reset_counters, cr);
+        wcycle_set_reset_counters(wcycle, reset_counters);
+    }
+
+    snew(nrnb, 1);
+    if (cr->duty & DUTY_PP)
+    {
+        bcast_state(cr, state);
+
+        /* Initiate forcerecord */
+        fr          = mk_forcerec();
+        fr->hwinfo  = hwinfo;
+        fr->gpu_opt = &hw_opt->gpu_opt;
+        init_forcerec(fplog, oenv, fr, fcd, inputrec, mtop, cr, box,
+                      opt2fn("-table", nfile, fnm),
+                      opt2fn("-tabletf", nfile, fnm),
+                      opt2fn("-tablep", nfile, fnm),
+                      opt2fn("-tableb", nfile, fnm),
+                      nbpu_opt,
+                      FALSE,
+                      pforce);
+
+        /* version for PCA_NOT_READ_NODE (see md.c) */
+        /*init_forcerec(fplog,fr,fcd,inputrec,mtop,cr,box,FALSE,
+           "nofile","nofile","nofile","nofile",FALSE,pforce);
+         */
+
+        /* Initialize QM-MM */
+        if (fr->bQMMM)
+        {
+            init_QMMMrec(cr, mtop, inputrec, fr);
+        }
+
+        /* Initialize the mdatoms structure.
+         * mdatoms is not filled with atom data,
+         * as this can not be done now with domain decomposition.
+         */
+        mdatoms = init_mdatoms(fplog, mtop, inputrec->efep != efepNO);
+
+        /* Initialize the virtual site communication */
+        vsite = init_vsite(mtop, cr, FALSE);
+
+        calc_shifts(box, fr->shift_vec);
+
+        /* With periodic molecules the charge groups should be whole at start up
+         * and the virtual sites should not be far from their proper positions.
+         */
+        if (!inputrec->bContinuation && MASTER(cr) &&
+            !(inputrec->ePBC != epbcNONE && inputrec->bPeriodicMols))
+        {
+            /* Make molecules whole at start of run */
+            if (fr->ePBC != epbcNONE)
+            {
+                do_pbc_first_mtop(fplog, inputrec->ePBC, box, mtop, state->x);
+            }
+            if (vsite)
+            {
+                /* Correct initial vsite positions are required
+                 * for the initial distribution in the domain decomposition
+                 * and for the initial shell prediction.
+                 */
+                construct_vsites_mtop(vsite, mtop, state->x);
+            }
+        }
+
+        if (EEL_PME(fr->eeltype) || EVDW_PME(fr->vdwtype))
+        {
+            ewaldcoeff_q  = fr->ewaldcoeff_q;
+            ewaldcoeff_lj = fr->ewaldcoeff_lj;
+            pmedata       = &fr->pmedata;
+        }
+        else
+        {
+            pmedata = NULL;
+        }
+    }
+    else
+    {
+        /* This is a PME only node */
+
+        /* We don't need the state */
+        done_state(state);
+
+        ewaldcoeff_q  = calc_ewaldcoeff_q(inputrec->rcoulomb, inputrec->ewald_rtol);
+        ewaldcoeff_lj = calc_ewaldcoeff_lj(inputrec->rvdw, inputrec->ewald_rtol_lj);
+        snew(pmedata, 1);
+    }
+
+    if (hw_opt->thread_affinity != threadaffOFF)
+    {
+        /* Before setting affinity, check whether the affinity has changed
+         * - which indicates that probably the OpenMP library has changed it
+         * since we first checked).
+         */
+        gmx_check_thread_affinity_set(fplog, cr,
+                                      hw_opt, hwinfo->nthreads_hw_avail, TRUE);
+
+        /* Set the CPU affinity */
+        gmx_set_thread_affinity(fplog, cr, hw_opt, hwinfo);
+    }
+
+    /* Initiate PME if necessary,
+     * either on all nodes or on dedicated PME nodes only. */
+    if (EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype))
+    {
+        if (mdatoms)
+        {
+            nChargePerturbed = mdatoms->nChargePerturbed;
+            if (EVDW_PME(inputrec->vdwtype))
+            {
+                nTypePerturbed   = mdatoms->nTypePerturbed;
+            }
+        }
+        if (cr->npmenodes > 0)
+        {
+            /* The PME only nodes need to know nChargePerturbed(FEP on Q) and nTypePerturbed(FEP on LJ)*/
+            gmx_bcast_sim(sizeof(nChargePerturbed), &nChargePerturbed, cr);
+            gmx_bcast_sim(sizeof(nTypePerturbed), &nTypePerturbed, cr);
+        }
+
+        if (cr->duty & DUTY_PME)
+        {
+            status = gmx_pme_init(pmedata, cr, npme_major, npme_minor, inputrec,
+                                  mtop ? mtop->natoms : 0, nChargePerturbed, nTypePerturbed,
+                                  (Flags & MD_REPRODUCIBLE), nthreads_pme);
+            if (status != 0)
+            {
+                gmx_fatal(FARGS, "Error %d initializing PME", status);
+            }
+        }
+    }
+
+
+    if (integrator[inputrec->eI].func == do_md)
+    {
+        /* Turn on signal handling on all nodes */
+        /*
+         * (A user signal from the PME nodes (if any)
+         * is communicated to the PP nodes.
+         */
+        signal_handler_install();
+    }
+
+    if (cr->duty & DUTY_PP)
+    {
+        /* Assumes uniform use of the number of OpenMP threads */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntDefault));
+
+        if (inputrec->bPull)
+        {
+            /* Initialize pull code */
+            inputrec->pull_work =
+                init_pull(fplog, inputrec->pull, inputrec, nfile, fnm,
+                          mtop, cr, oenv, inputrec->fepvals->init_lambda,
+                          EI_DYNAMICS(inputrec->eI) && MASTER(cr), Flags);
+        }
+
+        if (inputrec->bRot)
+        {
+            /* Initialize enforced rotation code */
+            init_rot(fplog, inputrec, nfile, fnm, cr, state->x, box, mtop, oenv,
+                     bVerbose, Flags);
+        }
+
+        if (inputrec->eSwapCoords != eswapNO)
+        {
+            /* Initialize ion swapping code */
+            init_swapcoords(fplog, bVerbose, inputrec, opt2fn_master("-swap", nfile, fnm, cr),
+                            mtop, state->x, state->box, &state->swapstate, cr, oenv, Flags);
+        }
+
+        constr = init_constraints(fplog, mtop, inputrec, ed, state, cr);
+
+        if (DOMAINDECOMP(cr))
+        {
+            GMX_RELEASE_ASSERT(fr, "fr was NULL while cr->duty was DUTY_PP");
+            dd_init_bondeds(fplog, cr->dd, mtop, vsite, inputrec,
+                            Flags & MD_DDBONDCHECK, fr->cginfo_mb);
+
+            set_dd_parameters(fplog, cr->dd, dlb_scale, inputrec, &ddbox);
+
+            setup_dd_grid(fplog, cr->dd);
+        }
+
+        /* Now do whatever the user wants us to do (how flexible...) */
+        integrator[inputrec->eI].func(fplog, cr, nfile, fnm,
+                                      oenv, bVerbose, bCompact,
+                                      nstglobalcomm,
+                                      vsite, constr,
+                                      nstepout, inputrec, mtop,
+                                      fcd, state,
+                                      mdatoms, nrnb, wcycle, ed, fr,
+                                      repl_ex_nst, repl_ex_nex, repl_ex_seed,
+                                      membed,
+                                      cpt_period, max_hours,
+                                      imdport,
+                                      Flags,
+                                      walltime_accounting);
+
+        if (inputrec->bPull)
+        {
+            finish_pull(inputrec->pull_work);
+        }
+
+        if (inputrec->bRot)
+        {
+            finish_rot(inputrec->rot);
+        }
+
+    }
+    else
+    {
+        GMX_RELEASE_ASSERT(pmedata, "pmedata was NULL while cr->duty was not DUTY_PP");
+        /* do PME only */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntPME));
+        gmx_pmeonly(*pmedata, cr, nrnb, wcycle, walltime_accounting, ewaldcoeff_q, ewaldcoeff_lj, inputrec);
+    }
+
+    wallcycle_stop(wcycle, ewcRUN);
+
+    /* Finish up, write some stuff
+     * if rerunMD, don't write last frame again
+     */
+    finish_run(fplog, cr,
+               inputrec, nrnb, wcycle, walltime_accounting,
+               fr ? fr->nbv : NULL,
+               EI_DYNAMICS(inputrec->eI) && !MULTISIM(cr));
+
+
+    /* Free GPU memory and context */
+    free_gpu_resources(fr, cr, &hwinfo->gpu_info, fr ? fr->gpu_opt : NULL);
+
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        sfree(membed);
+    }
+
+    gmx_hardware_info_free(hwinfo);
+
+    /* Does what it says */
+    print_date_and_time(fplog, cr->nodeid, "Finished mdrun", gmx_gettime());
+    walltime_accounting_destroy(walltime_accounting);
+
+    /* PLUMED */
+    if(plumedswitch){
+      plumed_finalize(plumedmain);
+    }
+    /* END PLUMED */
+
+    /* Close logfile already here if we were appending to it */
+    if (MASTER(cr) && (Flags & MD_APPENDFILES))
+    {
+        gmx_log_close(fplog);
+    }
+
+    rc = (int)gmx_get_stop_condition();
+
+    done_ed(&ed);
+
+#ifdef GMX_THREAD_MPI
+    /* we need to join all threads. The sub-threads join when they
+       exit this function, but the master thread needs to be told to
+       wait for that. */
+    if (PAR(cr) && MASTER(cr))
+    {
+        tMPI_Finalize();
+    }
+#endif
+
+    return rc;
+}
diff --git a/patches/gromacs-5.1.2.diff/src/programs/mdrun/runner.cpp.preplumed b/patches/gromacs-5.1.2.diff/src/programs/mdrun/runner.cpp.preplumed
new file mode 100644
index 0000000000000000000000000000000000000000..f436a01887bad6ced61a7159625c307df783a799
--- /dev/null
+++ b/patches/gromacs-5.1.2.diff/src/programs/mdrun/runner.cpp.preplumed
@@ -0,0 +1,1351 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2011,2012,2013,2014,2015,2016, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+
+#include "gmxpre.h"
+
+#include "config.h"
+
+#include <assert.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <algorithm>
+
+#include "gromacs/domdec/domdec.h"
+#include "gromacs/essentialdynamics/edsam.h"
+#include "gromacs/ewald/pme.h"
+#include "gromacs/fileio/tpxio.h"
+#include "gromacs/gmxlib/gpu_utils/gpu_utils.h"
+#include "gromacs/legacyheaders/checkpoint.h"
+#include "gromacs/legacyheaders/constr.h"
+#include "gromacs/legacyheaders/copyrite.h"
+#include "gromacs/legacyheaders/disre.h"
+#include "gromacs/legacyheaders/force.h"
+#include "gromacs/legacyheaders/gmx_detect_hardware.h"
+#include "gromacs/legacyheaders/gmx_omp_nthreads.h"
+#include "gromacs/legacyheaders/gmx_thread_affinity.h"
+#include "gromacs/legacyheaders/inputrec.h"
+#include "gromacs/legacyheaders/main.h"
+#include "gromacs/legacyheaders/md_logging.h"
+#include "gromacs/legacyheaders/md_support.h"
+#include "gromacs/legacyheaders/mdatoms.h"
+#include "gromacs/legacyheaders/mdrun.h"
+#include "gromacs/legacyheaders/names.h"
+#include "gromacs/legacyheaders/network.h"
+#include "gromacs/legacyheaders/oenv.h"
+#include "gromacs/legacyheaders/orires.h"
+#include "gromacs/legacyheaders/qmmm.h"
+#include "gromacs/legacyheaders/sighandler.h"
+#include "gromacs/legacyheaders/txtdump.h"
+#include "gromacs/legacyheaders/typedefs.h"
+#include "gromacs/math/calculate-ewald-splitting-coefficient.h"
+#include "gromacs/math/vec.h"
+#include "gromacs/mdlib/calc_verletbuf.h"
+#include "gromacs/mdlib/nbnxn_search.h"
+#include "gromacs/pbcutil/pbc.h"
+#include "gromacs/pulling/pull.h"
+#include "gromacs/pulling/pull_rotation.h"
+#include "gromacs/swap/swapcoords.h"
+#include "gromacs/timing/wallcycle.h"
+#include "gromacs/topology/mtop_util.h"
+#include "gromacs/utility/gmxassert.h"
+#include "gromacs/utility/gmxmpi.h"
+#include "gromacs/utility/smalloc.h"
+
+#include "deform.h"
+#include "membed.h"
+#include "repl_ex.h"
+#include "resource-division.h"
+
+#ifdef GMX_FAHCORE
+#include "corewrap.h"
+#endif
+
+typedef struct {
+    gmx_integrator_t *func;
+} gmx_intp_t;
+
+/* The array should match the eI array in include/types/enums.h */
+const gmx_intp_t    integrator[eiNR] = { {do_md}, {do_steep}, {do_cg}, {do_md}, {do_md}, {do_nm}, {do_lbfgs}, {do_tpi}, {do_tpi}, {do_md}, {do_md}, {do_md}};
+
+gmx_int64_t         deform_init_init_step_tpx;
+matrix              deform_init_box_tpx;
+tMPI_Thread_mutex_t deform_init_box_mutex = TMPI_THREAD_MUTEX_INITIALIZER;
+
+
+#ifdef GMX_THREAD_MPI
+/* The minimum number of atoms per tMPI thread. With fewer atoms than this,
+ * the number of threads will get lowered.
+ */
+#define MIN_ATOMS_PER_MPI_THREAD    90
+#define MIN_ATOMS_PER_GPU           900
+
+struct mdrunner_arglist
+{
+    gmx_hw_opt_t    hw_opt;
+    FILE           *fplog;
+    t_commrec      *cr;
+    int             nfile;
+    const t_filenm *fnm;
+    output_env_t    oenv;
+    gmx_bool        bVerbose;
+    gmx_bool        bCompact;
+    int             nstglobalcomm;
+    ivec            ddxyz;
+    int             dd_node_order;
+    real            rdd;
+    real            rconstr;
+    const char     *dddlb_opt;
+    real            dlb_scale;
+    const char     *ddcsx;
+    const char     *ddcsy;
+    const char     *ddcsz;
+    const char     *nbpu_opt;
+    int             nstlist_cmdline;
+    gmx_int64_t     nsteps_cmdline;
+    int             nstepout;
+    int             resetstep;
+    int             nmultisim;
+    int             repl_ex_nst;
+    int             repl_ex_nex;
+    int             repl_ex_seed;
+    real            pforce;
+    real            cpt_period;
+    real            max_hours;
+    int             imdport;
+    unsigned long   Flags;
+};
+
+
+/* The function used for spawning threads. Extracts the mdrunner()
+   arguments from its one argument and calls mdrunner(), after making
+   a commrec. */
+static void mdrunner_start_fn(void *arg)
+{
+    struct mdrunner_arglist *mda = (struct mdrunner_arglist*)arg;
+    struct mdrunner_arglist  mc  = *mda; /* copy the arg list to make sure
+                                            that it's thread-local. This doesn't
+                                            copy pointed-to items, of course,
+                                            but those are all const. */
+    t_commrec *cr;                       /* we need a local version of this */
+    FILE      *fplog = NULL;
+    t_filenm  *fnm;
+
+    fnm = dup_tfn(mc.nfile, mc.fnm);
+
+    cr = reinitialize_commrec_for_this_thread(mc.cr);
+
+    if (MASTER(cr))
+    {
+        fplog = mc.fplog;
+    }
+
+    mdrunner(&mc.hw_opt, fplog, cr, mc.nfile, fnm, mc.oenv,
+             mc.bVerbose, mc.bCompact, mc.nstglobalcomm,
+             mc.ddxyz, mc.dd_node_order, mc.rdd,
+             mc.rconstr, mc.dddlb_opt, mc.dlb_scale,
+             mc.ddcsx, mc.ddcsy, mc.ddcsz,
+             mc.nbpu_opt, mc.nstlist_cmdline,
+             mc.nsteps_cmdline, mc.nstepout, mc.resetstep,
+             mc.nmultisim, mc.repl_ex_nst, mc.repl_ex_nex, mc.repl_ex_seed, mc.pforce,
+             mc.cpt_period, mc.max_hours, mc.imdport, mc.Flags);
+}
+
+/* called by mdrunner() to start a specific number of threads (including
+   the main thread) for thread-parallel runs. This in turn calls mdrunner()
+   for each thread.
+   All options besides nthreads are the same as for mdrunner(). */
+static t_commrec *mdrunner_start_threads(gmx_hw_opt_t *hw_opt,
+                                         FILE *fplog, t_commrec *cr, int nfile,
+                                         const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+                                         gmx_bool bCompact, int nstglobalcomm,
+                                         ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+                                         const char *dddlb_opt, real dlb_scale,
+                                         const char *ddcsx, const char *ddcsy, const char *ddcsz,
+                                         const char *nbpu_opt, int nstlist_cmdline,
+                                         gmx_int64_t nsteps_cmdline,
+                                         int nstepout, int resetstep,
+                                         int nmultisim, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed,
+                                         real pforce, real cpt_period, real max_hours,
+                                         unsigned long Flags)
+{
+    int                      ret;
+    struct mdrunner_arglist *mda;
+    t_commrec               *crn; /* the new commrec */
+    t_filenm                *fnmn;
+
+    /* first check whether we even need to start tMPI */
+    if (hw_opt->nthreads_tmpi < 2)
+    {
+        return cr;
+    }
+
+    /* a few small, one-time, almost unavoidable memory leaks: */
+    snew(mda, 1);
+    fnmn = dup_tfn(nfile, fnm);
+
+    /* fill the data structure to pass as void pointer to thread start fn */
+    /* hw_opt contains pointers, which should all be NULL at this stage */
+    mda->hw_opt          = *hw_opt;
+    mda->fplog           = fplog;
+    mda->cr              = cr;
+    mda->nfile           = nfile;
+    mda->fnm             = fnmn;
+    mda->oenv            = oenv;
+    mda->bVerbose        = bVerbose;
+    mda->bCompact        = bCompact;
+    mda->nstglobalcomm   = nstglobalcomm;
+    mda->ddxyz[XX]       = ddxyz[XX];
+    mda->ddxyz[YY]       = ddxyz[YY];
+    mda->ddxyz[ZZ]       = ddxyz[ZZ];
+    mda->dd_node_order   = dd_node_order;
+    mda->rdd             = rdd;
+    mda->rconstr         = rconstr;
+    mda->dddlb_opt       = dddlb_opt;
+    mda->dlb_scale       = dlb_scale;
+    mda->ddcsx           = ddcsx;
+    mda->ddcsy           = ddcsy;
+    mda->ddcsz           = ddcsz;
+    mda->nbpu_opt        = nbpu_opt;
+    mda->nstlist_cmdline = nstlist_cmdline;
+    mda->nsteps_cmdline  = nsteps_cmdline;
+    mda->nstepout        = nstepout;
+    mda->resetstep       = resetstep;
+    mda->nmultisim       = nmultisim;
+    mda->repl_ex_nst     = repl_ex_nst;
+    mda->repl_ex_nex     = repl_ex_nex;
+    mda->repl_ex_seed    = repl_ex_seed;
+    mda->pforce          = pforce;
+    mda->cpt_period      = cpt_period;
+    mda->max_hours       = max_hours;
+    mda->Flags           = Flags;
+
+    /* now spawn new threads that start mdrunner_start_fn(), while
+       the main thread returns, we set thread affinity later */
+    ret = tMPI_Init_fn(TRUE, hw_opt->nthreads_tmpi, TMPI_AFFINITY_NONE,
+                       mdrunner_start_fn, (void*)(mda) );
+    if (ret != TMPI_SUCCESS)
+    {
+        return NULL;
+    }
+
+    crn = reinitialize_commrec_for_this_thread(cr);
+    return crn;
+}
+
+#endif /* GMX_THREAD_MPI */
+
+
+/* We determine the extra cost of the non-bonded kernels compared to
+ * a reference nstlist value of 10 (which is the default in grompp).
+ */
+static const int    nbnxnReferenceNstlist = 10;
+/* The values to try when switching  */
+const int           nstlist_try[] = { 20, 25, 40 };
+#define NNSTL  sizeof(nstlist_try)/sizeof(nstlist_try[0])
+/* Increase nstlist until the non-bonded cost increases more than listfac_ok,
+ * but never more than listfac_max.
+ * A standard (protein+)water system at 300K with PME ewald_rtol=1e-5
+ * needs 1.28 at rcoulomb=0.9 and 1.24 at rcoulomb=1.0 to get to nstlist=40.
+ * Note that both CPU and GPU factors are conservative. Performance should
+ * not go down due to this tuning, except with a relatively slow GPU.
+ * On the other hand, at medium/high parallelization or with fast GPUs
+ * nstlist will not be increased enough to reach optimal performance.
+ */
+/* CPU: pair-search is about a factor 1.5 slower than the non-bonded kernel */
+static const float  nbnxn_cpu_listfac_ok    = 1.05;
+static const float  nbnxn_cpu_listfac_max   = 1.09;
+/* GPU: pair-search is a factor 1.5-3 slower than the non-bonded kernel */
+static const float  nbnxn_gpu_listfac_ok    = 1.20;
+static const float  nbnxn_gpu_listfac_max   = 1.30;
+
+/* Try to increase nstlist when using the Verlet cut-off scheme */
+static void increase_nstlist(FILE *fp, t_commrec *cr,
+                             t_inputrec *ir, int nstlist_cmdline,
+                             const gmx_mtop_t *mtop, matrix box,
+                             gmx_bool bGPU)
+{
+    float                  listfac_ok, listfac_max;
+    int                    nstlist_orig, nstlist_prev;
+    verletbuf_list_setup_t ls;
+    real                   rlistWithReferenceNstlist, rlist_inc, rlist_ok, rlist_max;
+    real                   rlist_new, rlist_prev;
+    size_t                 nstlist_ind = 0;
+    t_state                state_tmp;
+    gmx_bool               bBox, bDD, bCont;
+    const char            *nstl_gpu = "\nFor optimal performance with a GPU nstlist (now %d) should be larger.\nThe optimum depends on your CPU and GPU resources.\nYou might want to try several nstlist values.\n";
+    const char            *nve_err  = "Can not increase nstlist because an NVE ensemble is used";
+    const char            *vbd_err  = "Can not increase nstlist because verlet-buffer-tolerance is not set or used";
+    const char            *box_err  = "Can not increase nstlist because the box is too small";
+    const char            *dd_err   = "Can not increase nstlist because of domain decomposition limitations";
+    char                   buf[STRLEN];
+    const float            oneThird = 1.0f / 3.0f;
+
+    if (nstlist_cmdline <= 0)
+    {
+        if (ir->nstlist == 1)
+        {
+            /* The user probably set nstlist=1 for a reason,
+             * don't mess with the settings.
+             */
+            return;
+        }
+
+        if (fp != NULL && bGPU && ir->nstlist < nstlist_try[0])
+        {
+            fprintf(fp, nstl_gpu, ir->nstlist);
+        }
+        nstlist_ind = 0;
+        while (nstlist_ind < NNSTL && ir->nstlist >= nstlist_try[nstlist_ind])
+        {
+            nstlist_ind++;
+        }
+        if (nstlist_ind == NNSTL)
+        {
+            /* There are no larger nstlist value to try */
+            return;
+        }
+    }
+
+    if (EI_MD(ir->eI) && ir->etc == etcNO)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", nve_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", nve_err);
+        }
+
+        return;
+    }
+
+    if (ir->verletbuf_tol == 0 && bGPU)
+    {
+        gmx_fatal(FARGS, "You are using an old tpr file with a GPU, please generate a new tpr file with an up to date version of grompp");
+    }
+
+    if (ir->verletbuf_tol < 0)
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n", vbd_err);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n", vbd_err);
+        }
+
+        return;
+    }
+
+    if (bGPU)
+    {
+        listfac_ok  = nbnxn_gpu_listfac_ok;
+        listfac_max = nbnxn_gpu_listfac_max;
+    }
+    else
+    {
+        listfac_ok  = nbnxn_cpu_listfac_ok;
+        listfac_max = nbnxn_cpu_listfac_max;
+    }
+
+    nstlist_orig = ir->nstlist;
+    if (nstlist_cmdline > 0)
+    {
+        if (fp)
+        {
+            sprintf(buf, "Getting nstlist=%d from command line option",
+                    nstlist_cmdline);
+        }
+        ir->nstlist = nstlist_cmdline;
+    }
+
+    verletbuf_get_list_setup(TRUE, bGPU, &ls);
+
+    /* Allow rlist to make the list a given factor larger than the list
+     * would be with the reference value for nstlist (10).
+     */
+    nstlist_prev = ir->nstlist;
+    ir->nstlist  = nbnxnReferenceNstlist;
+    calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL,
+                            &rlistWithReferenceNstlist);
+    ir->nstlist  = nstlist_prev;
+
+    /* Determine the pair list size increase due to zero interactions */
+    rlist_inc = nbnxn_get_rlist_effective_inc(ls.cluster_size_j,
+                                              mtop->natoms/det(box));
+    rlist_ok  = (rlistWithReferenceNstlist + rlist_inc)*pow(listfac_ok, oneThird) - rlist_inc;
+    rlist_max = (rlistWithReferenceNstlist + rlist_inc)*pow(listfac_max, oneThird) - rlist_inc;
+    if (debug)
+    {
+        fprintf(debug, "nstlist tuning: rlist_inc %.3f rlist_ok %.3f rlist_max %.3f\n",
+                rlist_inc, rlist_ok, rlist_max);
+    }
+
+    nstlist_prev = nstlist_orig;
+    rlist_prev   = ir->rlist;
+    do
+    {
+        if (nstlist_cmdline <= 0)
+        {
+            ir->nstlist = nstlist_try[nstlist_ind];
+        }
+
+        /* Set the pair-list buffer size in ir */
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        /* Does rlist fit in the box? */
+        bBox = (sqr(rlist_new) < max_cutoff2(ir->ePBC, box));
+        bDD  = TRUE;
+        if (bBox && DOMAINDECOMP(cr))
+        {
+            /* Check if rlist fits in the domain decomposition */
+            if (inputrec2nboundeddim(ir) < DIM)
+            {
+                gmx_incons("Changing nstlist with domain decomposition and unbounded dimensions is not implemented yet");
+            }
+            copy_mat(box, state_tmp.box);
+            bDD = change_dd_cutoff(cr, &state_tmp, ir, rlist_new);
+        }
+
+        if (debug)
+        {
+            fprintf(debug, "nstlist %d rlist %.3f bBox %d bDD %d\n",
+                    ir->nstlist, rlist_new, bBox, bDD);
+        }
+
+        bCont = FALSE;
+
+        if (nstlist_cmdline <= 0)
+        {
+            if (bBox && bDD && rlist_new <= rlist_max)
+            {
+                /* Increase nstlist */
+                nstlist_prev = ir->nstlist;
+                rlist_prev   = rlist_new;
+                bCont        = (nstlist_ind+1 < NNSTL && rlist_new < rlist_ok);
+            }
+            else
+            {
+                /* Stick with the previous nstlist */
+                ir->nstlist = nstlist_prev;
+                rlist_new   = rlist_prev;
+                bBox        = TRUE;
+                bDD         = TRUE;
+            }
+        }
+
+        nstlist_ind++;
+    }
+    while (bCont);
+
+    if (!bBox || !bDD)
+    {
+        gmx_warning(!bBox ? box_err : dd_err);
+        if (fp != NULL)
+        {
+            fprintf(fp, "\n%s\n", bBox ? box_err : dd_err);
+        }
+        ir->nstlist = nstlist_orig;
+    }
+    else if (ir->nstlist != nstlist_orig || rlist_new != ir->rlist)
+    {
+        sprintf(buf, "Changing nstlist from %d to %d, rlist from %g to %g",
+                nstlist_orig, ir->nstlist,
+                ir->rlist, rlist_new);
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "%s\n\n", buf);
+        }
+        if (fp != NULL)
+        {
+            fprintf(fp, "%s\n\n", buf);
+        }
+        ir->rlist     = rlist_new;
+        ir->rlistlong = rlist_new;
+    }
+}
+
+static void prepare_verlet_scheme(FILE                           *fplog,
+                                  t_commrec                      *cr,
+                                  t_inputrec                     *ir,
+                                  int                             nstlist_cmdline,
+                                  const gmx_mtop_t               *mtop,
+                                  matrix                          box,
+                                  gmx_bool                        bUseGPU)
+{
+    /* For NVE simulations, we will retain the initial list buffer */
+    if (EI_DYNAMICS(ir->eI) &&
+        ir->verletbuf_tol > 0 &&
+        !(EI_MD(ir->eI) && ir->etc == etcNO))
+    {
+        /* Update the Verlet buffer size for the current run setup */
+        verletbuf_list_setup_t ls;
+        real                   rlist_new;
+
+        /* Here we assume SIMD-enabled kernels are being used. But as currently
+         * calc_verlet_buffer_size gives the same results for 4x8 and 4x4
+         * and 4x2 gives a larger buffer than 4x4, this is ok.
+         */
+        verletbuf_get_list_setup(TRUE, bUseGPU, &ls);
+
+        calc_verlet_buffer_size(mtop, det(box), ir, -1, &ls, NULL, &rlist_new);
+
+        if (rlist_new != ir->rlist)
+        {
+            if (fplog != NULL)
+            {
+                fprintf(fplog, "\nChanging rlist from %g to %g for non-bonded %dx%d atom kernels\n\n",
+                        ir->rlist, rlist_new,
+                        ls.cluster_size_i, ls.cluster_size_j);
+            }
+            ir->rlist     = rlist_new;
+            ir->rlistlong = rlist_new;
+        }
+    }
+
+    if (nstlist_cmdline > 0 && (!EI_DYNAMICS(ir->eI) || ir->verletbuf_tol <= 0))
+    {
+        gmx_fatal(FARGS, "Can not set nstlist without %s",
+                  !EI_DYNAMICS(ir->eI) ? "dynamics" : "verlet-buffer-tolerance");
+    }
+
+    if (EI_DYNAMICS(ir->eI))
+    {
+        /* Set or try nstlist values */
+        increase_nstlist(fplog, cr, ir, nstlist_cmdline, mtop, box, bUseGPU);
+    }
+}
+
+/* Override the value in inputrec with value passed on the command line (if any) */
+static void override_nsteps_cmdline(FILE            *fplog,
+                                    gmx_int64_t      nsteps_cmdline,
+                                    t_inputrec      *ir,
+                                    const t_commrec *cr)
+{
+    assert(ir);
+    assert(cr);
+
+    /* override with anything else than the default -2 */
+    if (nsteps_cmdline > -2)
+    {
+        char sbuf_steps[STEPSTRSIZE];
+        char sbuf_msg[STRLEN];
+
+        ir->nsteps = nsteps_cmdline;
+        if (EI_DYNAMICS(ir->eI) && nsteps_cmdline != -1)
+        {
+            sprintf(sbuf_msg, "Overriding nsteps with value passed on the command line: %s steps, %.3g ps",
+                    gmx_step_str(nsteps_cmdline, sbuf_steps),
+                    fabs(nsteps_cmdline*ir->delta_t));
+        }
+        else
+        {
+            sprintf(sbuf_msg, "Overriding nsteps with value passed on the command line: %s steps",
+                    gmx_step_str(nsteps_cmdline, sbuf_steps));
+        }
+
+        md_print_warn(cr, fplog, "%s\n", sbuf_msg);
+    }
+    else if (nsteps_cmdline < -2)
+    {
+        gmx_fatal(FARGS, "Invalid nsteps value passed on the command line: %d",
+                  nsteps_cmdline);
+    }
+    /* Do nothing if nsteps_cmdline == -2 */
+}
+
+int mdrunner(gmx_hw_opt_t *hw_opt,
+             FILE *fplog, t_commrec *cr, int nfile,
+             const t_filenm fnm[], const output_env_t oenv, gmx_bool bVerbose,
+             gmx_bool bCompact, int nstglobalcomm,
+             ivec ddxyz, int dd_node_order, real rdd, real rconstr,
+             const char *dddlb_opt, real dlb_scale,
+             const char *ddcsx, const char *ddcsy, const char *ddcsz,
+             const char *nbpu_opt, int nstlist_cmdline,
+             gmx_int64_t nsteps_cmdline, int nstepout, int resetstep,
+             int gmx_unused nmultisim, int repl_ex_nst, int repl_ex_nex,
+             int repl_ex_seed, real pforce, real cpt_period, real max_hours,
+             int imdport, unsigned long Flags)
+{
+    gmx_bool                  bForceUseGPU, bTryUseGPU, bRerunMD;
+    t_inputrec               *inputrec;
+    t_state                  *state = NULL;
+    matrix                    box;
+    gmx_ddbox_t               ddbox = {0};
+    int                       npme_major, npme_minor;
+    t_nrnb                   *nrnb;
+    gmx_mtop_t               *mtop          = NULL;
+    t_mdatoms                *mdatoms       = NULL;
+    t_forcerec               *fr            = NULL;
+    t_fcdata                 *fcd           = NULL;
+    real                      ewaldcoeff_q  = 0;
+    real                      ewaldcoeff_lj = 0;
+    struct gmx_pme_t        **pmedata       = NULL;
+    gmx_vsite_t              *vsite         = NULL;
+    gmx_constr_t              constr;
+    int                       nChargePerturbed = -1, nTypePerturbed = 0, status;
+    gmx_wallcycle_t           wcycle;
+    gmx_bool                  bReadEkin;
+    gmx_walltime_accounting_t walltime_accounting = NULL;
+    int                       rc;
+    gmx_int64_t               reset_counters;
+    gmx_edsam_t               ed           = NULL;
+    int                       nthreads_pme = 1;
+    int                       nthreads_pp  = 1;
+    gmx_membed_t              membed       = NULL;
+    gmx_hw_info_t            *hwinfo       = NULL;
+    /* The master rank decides early on bUseGPU and broadcasts this later */
+    gmx_bool                  bUseGPU      = FALSE;
+
+    /* CAUTION: threads may be started later on in this function, so
+       cr doesn't reflect the final parallel state right now */
+    snew(inputrec, 1);
+    snew(mtop, 1);
+
+    if (Flags & MD_APPENDFILES)
+    {
+        fplog = NULL;
+    }
+
+    bRerunMD     = (Flags & MD_RERUN);
+    bForceUseGPU = (strncmp(nbpu_opt, "gpu", 3) == 0);
+    bTryUseGPU   = (strncmp(nbpu_opt, "auto", 4) == 0) || bForceUseGPU;
+
+    /* Detect hardware, gather information. This is an operation that is
+     * global for this process (MPI rank). */
+    hwinfo = gmx_detect_hardware(fplog, cr, bTryUseGPU);
+
+    gmx_print_detected_hardware(fplog, cr, hwinfo);
+
+    if (fplog != NULL)
+    {
+        /* Print references after all software/hardware printing */
+        please_cite(fplog, "Abraham2015");
+        please_cite(fplog, "Pall2015");
+        please_cite(fplog, "Pronk2013");
+        please_cite(fplog, "Hess2008b");
+        please_cite(fplog, "Spoel2005a");
+        please_cite(fplog, "Lindahl2001a");
+        please_cite(fplog, "Berendsen95a");
+    }
+
+    snew(state, 1);
+    if (SIMMASTER(cr))
+    {
+        /* Read (nearly) all data required for the simulation */
+        read_tpx_state(ftp2fn(efTPR, nfile, fnm), inputrec, state, NULL, mtop);
+
+        if (inputrec->cutoff_scheme == ecutsVERLET)
+        {
+            /* Here the master rank decides if all ranks will use GPUs */
+            bUseGPU = (hwinfo->gpu_info.n_dev_compatible > 0 ||
+                       getenv("GMX_EMULATE_GPU") != NULL);
+
+            /* TODO add GPU kernels for this and replace this check by:
+             * (bUseGPU && (ir->vdwtype == evdwPME &&
+             *               ir->ljpme_combination_rule == eljpmeLB))
+             * update the message text and the content of nbnxn_acceleration_supported.
+             */
+            if (bUseGPU &&
+                !nbnxn_gpu_acceleration_supported(fplog, cr, inputrec, bRerunMD))
+            {
+                /* Fallback message printed by nbnxn_acceleration_supported */
+                if (bForceUseGPU)
+                {
+                    gmx_fatal(FARGS, "GPU acceleration requested, but not supported with the given input settings");
+                }
+                bUseGPU = FALSE;
+            }
+
+            prepare_verlet_scheme(fplog, cr,
+                                  inputrec, nstlist_cmdline, mtop, state->box,
+                                  bUseGPU);
+        }
+        else
+        {
+            if (nstlist_cmdline > 0)
+            {
+                gmx_fatal(FARGS, "Can not set nstlist with the group cut-off scheme");
+            }
+
+            if (hwinfo->gpu_info.n_dev_compatible > 0)
+            {
+                md_print_warn(cr, fplog,
+                              "NOTE: GPU(s) found, but the current simulation can not use GPUs\n"
+                              "      To use a GPU, set the mdp option: cutoff-scheme = Verlet\n");
+            }
+
+            if (bForceUseGPU)
+            {
+                gmx_fatal(FARGS, "GPU requested, but can't be used without cutoff-scheme=Verlet");
+            }
+
+#ifdef GMX_TARGET_BGQ
+            md_print_warn(cr, fplog,
+                          "NOTE: There is no SIMD implementation of the group scheme kernels on\n"
+                          "      BlueGene/Q. You will observe better performance from using the\n"
+                          "      Verlet cut-off scheme.\n");
+#endif
+        }
+
+        if (inputrec->eI == eiSD2)
+        {
+            md_print_warn(cr, fplog, "The stochastic dynamics integrator %s is deprecated, since\n"
+                          "it is slower than integrator %s and is slightly less accurate\n"
+                          "with constraints. Use the %s integrator.",
+                          ei_names[inputrec->eI], ei_names[eiSD1], ei_names[eiSD1]);
+        }
+    }
+
+    /* Check and update the hardware options for internal consistency */
+    check_and_update_hw_opt_1(hw_opt, cr);
+
+    /* Early check for externally set process affinity. */
+    gmx_check_thread_affinity_set(fplog, cr,
+                                  hw_opt, hwinfo->nthreads_hw_avail, FALSE);
+
+#ifdef GMX_THREAD_MPI
+    if (SIMMASTER(cr))
+    {
+        if (cr->npmenodes > 0 && hw_opt->nthreads_tmpi <= 0)
+        {
+            gmx_fatal(FARGS, "You need to explicitly specify the number of MPI threads (-ntmpi) when using separate PME ranks");
+        }
+
+        /* Since the master knows the cut-off scheme, update hw_opt for this.
+         * This is done later for normal MPI and also once more with tMPI
+         * for all tMPI ranks.
+         */
+        check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+        /* NOW the threads will be started: */
+        hw_opt->nthreads_tmpi = get_nthreads_mpi(hwinfo,
+                                                 hw_opt,
+                                                 inputrec, mtop,
+                                                 cr, fplog, bUseGPU);
+
+        if (hw_opt->nthreads_tmpi > 1)
+        {
+            t_commrec *cr_old       = cr;
+            /* now start the threads. */
+            cr = mdrunner_start_threads(hw_opt, fplog, cr_old, nfile, fnm,
+                                        oenv, bVerbose, bCompact, nstglobalcomm,
+                                        ddxyz, dd_node_order, rdd, rconstr,
+                                        dddlb_opt, dlb_scale, ddcsx, ddcsy, ddcsz,
+                                        nbpu_opt, nstlist_cmdline,
+                                        nsteps_cmdline, nstepout, resetstep, nmultisim,
+                                        repl_ex_nst, repl_ex_nex, repl_ex_seed, pforce,
+                                        cpt_period, max_hours,
+                                        Flags);
+            /* the main thread continues here with a new cr. We don't deallocate
+               the old cr because other threads may still be reading it. */
+            if (cr == NULL)
+            {
+                gmx_comm("Failed to spawn threads");
+            }
+        }
+    }
+#endif
+    /* END OF CAUTION: cr is now reliable */
+
+    /* g_membed initialisation *
+     * Because we change the mtop, init_membed is called before the init_parallel *
+     * (in case we ever want to make it run in parallel) */
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        if (MASTER(cr))
+        {
+            fprintf(stderr, "Initializing membed");
+        }
+        membed = init_membed(fplog, nfile, fnm, mtop, inputrec, state, cr, &cpt_period);
+    }
+
+    if (PAR(cr))
+    {
+        /* now broadcast everything to the non-master nodes/threads: */
+        init_parallel(cr, inputrec, mtop);
+
+        /* The master rank decided on the use of GPUs,
+         * broadcast this information to all ranks.
+         */
+        gmx_bcast_sim(sizeof(bUseGPU), &bUseGPU, cr);
+    }
+
+    if (fplog != NULL)
+    {
+        pr_inputrec(fplog, 0, "Input Parameters", inputrec, FALSE);
+        fprintf(fplog, "\n");
+    }
+
+    /* now make sure the state is initialized and propagated */
+    set_state_entries(state, inputrec);
+
+    /* A parallel command line option consistency check that we can
+       only do after any threads have started. */
+    if (!PAR(cr) &&
+        (ddxyz[XX] > 1 || ddxyz[YY] > 1 || ddxyz[ZZ] > 1 || cr->npmenodes > 0))
+    {
+        gmx_fatal(FARGS,
+                  "The -dd or -npme option request a parallel simulation, "
+#ifndef GMX_MPI
+                  "but %s was compiled without threads or MPI enabled"
+#else
+#ifdef GMX_THREAD_MPI
+                  "but the number of threads (option -nt) is 1"
+#else
+                  "but %s was not started through mpirun/mpiexec or only one rank was requested through mpirun/mpiexec"
+#endif
+#endif
+                  , output_env_get_program_display_name(oenv)
+                  );
+    }
+
+    if (bRerunMD &&
+        (EI_ENERGY_MINIMIZATION(inputrec->eI) || eiNM == inputrec->eI))
+    {
+        gmx_fatal(FARGS, "The .mdp file specified an energy mininization or normal mode algorithm, and these are not compatible with mdrun -rerun");
+    }
+
+    if (can_use_allvsall(inputrec, TRUE, cr, fplog) && DOMAINDECOMP(cr))
+    {
+        gmx_fatal(FARGS, "All-vs-all loops do not work with domain decomposition, use a single MPI rank");
+    }
+
+    if (!(EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype)))
+    {
+        if (cr->npmenodes > 0)
+        {
+            gmx_fatal_collective(FARGS, cr, NULL,
+                                 "PME-only ranks are requested, but the system does not use PME for electrostatics or LJ");
+        }
+
+        cr->npmenodes = 0;
+    }
+
+    if (bUseGPU && cr->npmenodes < 0)
+    {
+        /* With GPUs we don't automatically use PME-only ranks. PME ranks can
+         * improve performance with many threads per GPU, since our OpenMP
+         * scaling is bad, but it's difficult to automate the setup.
+         */
+        cr->npmenodes = 0;
+    }
+
+#ifdef GMX_FAHCORE
+    if (MASTER(cr))
+    {
+        fcRegisterSteps(inputrec->nsteps, inputrec->init_step);
+    }
+#endif
+
+    /* NMR restraints must be initialized before load_checkpoint,
+     * since with time averaging the history is added to t_state.
+     * For proper consistency check we therefore need to extend
+     * t_state here.
+     * So the PME-only nodes (if present) will also initialize
+     * the distance restraints.
+     */
+    snew(fcd, 1);
+
+    /* This needs to be called before read_checkpoint to extend the state */
+    init_disres(fplog, mtop, inputrec, cr, fcd, state, repl_ex_nst > 0);
+
+    init_orires(fplog, mtop, state->x, inputrec, cr, &(fcd->orires),
+                state);
+
+    if (DEFORM(*inputrec))
+    {
+        /* Store the deform reference box before reading the checkpoint */
+        if (SIMMASTER(cr))
+        {
+            copy_mat(state->box, box);
+        }
+        if (PAR(cr))
+        {
+            gmx_bcast(sizeof(box), box, cr);
+        }
+        /* Because we do not have the update struct available yet
+         * in which the reference values should be stored,
+         * we store them temporarily in static variables.
+         * This should be thread safe, since they are only written once
+         * and with identical values.
+         */
+        tMPI_Thread_mutex_lock(&deform_init_box_mutex);
+        deform_init_init_step_tpx = inputrec->init_step;
+        copy_mat(box, deform_init_box_tpx);
+        tMPI_Thread_mutex_unlock(&deform_init_box_mutex);
+    }
+
+    if (opt2bSet("-cpi", nfile, fnm))
+    {
+        /* Check if checkpoint file exists before doing continuation.
+         * This way we can use identical input options for the first and subsequent runs...
+         */
+        if (gmx_fexist_master(opt2fn_master("-cpi", nfile, fnm, cr), cr) )
+        {
+            load_checkpoint(opt2fn_master("-cpi", nfile, fnm, cr), &fplog,
+                            cr, ddxyz,
+                            inputrec, state, &bReadEkin,
+                            (Flags & MD_APPENDFILES),
+                            (Flags & MD_APPENDFILESSET));
+
+            if (bReadEkin)
+            {
+                Flags |= MD_READ_EKIN;
+            }
+        }
+    }
+
+    if (MASTER(cr) && (Flags & MD_APPENDFILES))
+    {
+        gmx_log_open(ftp2fn(efLOG, nfile, fnm), cr,
+                     Flags, &fplog);
+    }
+
+    /* override nsteps with value from cmdline */
+    override_nsteps_cmdline(fplog, nsteps_cmdline, inputrec, cr);
+
+    if (SIMMASTER(cr))
+    {
+        copy_mat(state->box, box);
+    }
+
+    if (PAR(cr))
+    {
+        gmx_bcast(sizeof(box), box, cr);
+    }
+
+    /* Essential dynamics */
+    if (opt2bSet("-ei", nfile, fnm))
+    {
+        /* Open input and output files, allocate space for ED data structure */
+        ed = ed_open(mtop->natoms, &state->edsamstate, nfile, fnm, Flags, oenv, cr);
+    }
+
+    if (PAR(cr) && !(EI_TPI(inputrec->eI) ||
+                     inputrec->eI == eiNM))
+    {
+        cr->dd = init_domain_decomposition(fplog, cr, Flags, ddxyz, rdd, rconstr,
+                                           dddlb_opt, dlb_scale,
+                                           ddcsx, ddcsy, ddcsz,
+                                           mtop, inputrec,
+                                           box, state->x,
+                                           &ddbox, &npme_major, &npme_minor);
+
+        make_dd_communicators(fplog, cr, dd_node_order);
+
+        /* Set overallocation to avoid frequent reallocation of arrays */
+        set_over_alloc_dd(TRUE);
+    }
+    else
+    {
+        /* PME, if used, is done on all nodes with 1D decomposition */
+        cr->npmenodes = 0;
+        cr->duty      = (DUTY_PP | DUTY_PME);
+        npme_major    = 1;
+        npme_minor    = 1;
+
+        if (inputrec->ePBC == epbcSCREW)
+        {
+            gmx_fatal(FARGS,
+                      "pbc=%s is only implemented with domain decomposition",
+                      epbc_names[inputrec->ePBC]);
+        }
+    }
+
+    if (PAR(cr))
+    {
+        /* After possible communicator splitting in make_dd_communicators.
+         * we can set up the intra/inter node communication.
+         */
+        gmx_setup_nodecomm(fplog, cr);
+    }
+
+    /* Initialize per-physical-node MPI process/thread ID and counters. */
+    gmx_init_intranode_counters(cr);
+#ifdef GMX_MPI
+    if (MULTISIM(cr))
+    {
+        md_print_info(cr, fplog,
+                      "This is simulation %d out of %d running as a composite GROMACS\n"
+                      "multi-simulation job. Setup for this simulation:\n\n",
+                      cr->ms->sim, cr->ms->nsim);
+    }
+    md_print_info(cr, fplog, "Using %d MPI %s\n",
+                  cr->nnodes,
+#ifdef GMX_THREAD_MPI
+                  cr->nnodes == 1 ? "thread" : "threads"
+#else
+                  cr->nnodes == 1 ? "process" : "processes"
+#endif
+                  );
+    fflush(stderr);
+#endif
+
+    /* Check and update hw_opt for the cut-off scheme */
+    check_and_update_hw_opt_2(hw_opt, inputrec->cutoff_scheme);
+
+    /* Check and update hw_opt for the number of MPI ranks */
+    check_and_update_hw_opt_3(hw_opt);
+
+    gmx_omp_nthreads_init(fplog, cr,
+                          hwinfo->nthreads_hw_avail,
+                          hw_opt->nthreads_omp,
+                          hw_opt->nthreads_omp_pme,
+                          (cr->duty & DUTY_PP) == 0,
+                          inputrec->cutoff_scheme == ecutsVERLET);
+
+#ifndef NDEBUG
+    if (integrator[inputrec->eI].func != do_tpi &&
+        inputrec->cutoff_scheme == ecutsVERLET)
+    {
+        gmx_feenableexcept();
+    }
+#endif
+
+    if (bUseGPU)
+    {
+        /* Select GPU id's to use */
+        gmx_select_gpu_ids(fplog, cr, &hwinfo->gpu_info, bForceUseGPU,
+                           &hw_opt->gpu_opt);
+    }
+    else
+    {
+        /* Ignore (potentially) manually selected GPUs */
+        hw_opt->gpu_opt.n_dev_use = 0;
+    }
+
+    /* check consistency across ranks of things like SIMD
+     * support and number of GPUs selected */
+    gmx_check_hw_runconf_consistency(fplog, hwinfo, cr, hw_opt, bUseGPU);
+
+    /* Now that we know the setup is consistent, check for efficiency */
+    check_resource_division_efficiency(hwinfo, hw_opt, Flags & MD_NTOMPSET,
+                                       cr, fplog);
+
+    if (DOMAINDECOMP(cr))
+    {
+        /* When we share GPUs over ranks, we need to know this for the DLB */
+        dd_setup_dlb_resource_sharing(cr, hwinfo, hw_opt);
+    }
+
+    /* getting number of PP/PME threads
+       PME: env variable should be read only on one node to make sure it is
+       identical everywhere;
+     */
+    /* TODO nthreads_pp is only used for pinning threads.
+     * This is a temporary solution until we have a hw topology library.
+     */
+    nthreads_pp  = gmx_omp_nthreads_get(emntNonbonded);
+    nthreads_pme = gmx_omp_nthreads_get(emntPME);
+
+    wcycle = wallcycle_init(fplog, resetstep, cr, nthreads_pp, nthreads_pme);
+
+    if (PAR(cr))
+    {
+        /* Master synchronizes its value of reset_counters with all nodes
+         * including PME only nodes */
+        reset_counters = wcycle_get_reset_counters(wcycle);
+        gmx_bcast_sim(sizeof(reset_counters), &reset_counters, cr);
+        wcycle_set_reset_counters(wcycle, reset_counters);
+    }
+
+    snew(nrnb, 1);
+    if (cr->duty & DUTY_PP)
+    {
+        bcast_state(cr, state);
+
+        /* Initiate forcerecord */
+        fr          = mk_forcerec();
+        fr->hwinfo  = hwinfo;
+        fr->gpu_opt = &hw_opt->gpu_opt;
+        init_forcerec(fplog, oenv, fr, fcd, inputrec, mtop, cr, box,
+                      opt2fn("-table", nfile, fnm),
+                      opt2fn("-tabletf", nfile, fnm),
+                      opt2fn("-tablep", nfile, fnm),
+                      opt2fn("-tableb", nfile, fnm),
+                      nbpu_opt,
+                      FALSE,
+                      pforce);
+
+        /* version for PCA_NOT_READ_NODE (see md.c) */
+        /*init_forcerec(fplog,fr,fcd,inputrec,mtop,cr,box,FALSE,
+           "nofile","nofile","nofile","nofile",FALSE,pforce);
+         */
+
+        /* Initialize QM-MM */
+        if (fr->bQMMM)
+        {
+            init_QMMMrec(cr, mtop, inputrec, fr);
+        }
+
+        /* Initialize the mdatoms structure.
+         * mdatoms is not filled with atom data,
+         * as this can not be done now with domain decomposition.
+         */
+        mdatoms = init_mdatoms(fplog, mtop, inputrec->efep != efepNO);
+
+        /* Initialize the virtual site communication */
+        vsite = init_vsite(mtop, cr, FALSE);
+
+        calc_shifts(box, fr->shift_vec);
+
+        /* With periodic molecules the charge groups should be whole at start up
+         * and the virtual sites should not be far from their proper positions.
+         */
+        if (!inputrec->bContinuation && MASTER(cr) &&
+            !(inputrec->ePBC != epbcNONE && inputrec->bPeriodicMols))
+        {
+            /* Make molecules whole at start of run */
+            if (fr->ePBC != epbcNONE)
+            {
+                do_pbc_first_mtop(fplog, inputrec->ePBC, box, mtop, state->x);
+            }
+            if (vsite)
+            {
+                /* Correct initial vsite positions are required
+                 * for the initial distribution in the domain decomposition
+                 * and for the initial shell prediction.
+                 */
+                construct_vsites_mtop(vsite, mtop, state->x);
+            }
+        }
+
+        if (EEL_PME(fr->eeltype) || EVDW_PME(fr->vdwtype))
+        {
+            ewaldcoeff_q  = fr->ewaldcoeff_q;
+            ewaldcoeff_lj = fr->ewaldcoeff_lj;
+            pmedata       = &fr->pmedata;
+        }
+        else
+        {
+            pmedata = NULL;
+        }
+    }
+    else
+    {
+        /* This is a PME only node */
+
+        /* We don't need the state */
+        done_state(state);
+
+        ewaldcoeff_q  = calc_ewaldcoeff_q(inputrec->rcoulomb, inputrec->ewald_rtol);
+        ewaldcoeff_lj = calc_ewaldcoeff_lj(inputrec->rvdw, inputrec->ewald_rtol_lj);
+        snew(pmedata, 1);
+    }
+
+    if (hw_opt->thread_affinity != threadaffOFF)
+    {
+        /* Before setting affinity, check whether the affinity has changed
+         * - which indicates that probably the OpenMP library has changed it
+         * since we first checked).
+         */
+        gmx_check_thread_affinity_set(fplog, cr,
+                                      hw_opt, hwinfo->nthreads_hw_avail, TRUE);
+
+        /* Set the CPU affinity */
+        gmx_set_thread_affinity(fplog, cr, hw_opt, hwinfo);
+    }
+
+    /* Initiate PME if necessary,
+     * either on all nodes or on dedicated PME nodes only. */
+    if (EEL_PME(inputrec->coulombtype) || EVDW_PME(inputrec->vdwtype))
+    {
+        if (mdatoms)
+        {
+            nChargePerturbed = mdatoms->nChargePerturbed;
+            if (EVDW_PME(inputrec->vdwtype))
+            {
+                nTypePerturbed   = mdatoms->nTypePerturbed;
+            }
+        }
+        if (cr->npmenodes > 0)
+        {
+            /* The PME only nodes need to know nChargePerturbed(FEP on Q) and nTypePerturbed(FEP on LJ)*/
+            gmx_bcast_sim(sizeof(nChargePerturbed), &nChargePerturbed, cr);
+            gmx_bcast_sim(sizeof(nTypePerturbed), &nTypePerturbed, cr);
+        }
+
+        if (cr->duty & DUTY_PME)
+        {
+            status = gmx_pme_init(pmedata, cr, npme_major, npme_minor, inputrec,
+                                  mtop ? mtop->natoms : 0, nChargePerturbed, nTypePerturbed,
+                                  (Flags & MD_REPRODUCIBLE), nthreads_pme);
+            if (status != 0)
+            {
+                gmx_fatal(FARGS, "Error %d initializing PME", status);
+            }
+        }
+    }
+
+
+    if (integrator[inputrec->eI].func == do_md)
+    {
+        /* Turn on signal handling on all nodes */
+        /*
+         * (A user signal from the PME nodes (if any)
+         * is communicated to the PP nodes.
+         */
+        signal_handler_install();
+    }
+
+    if (cr->duty & DUTY_PP)
+    {
+        /* Assumes uniform use of the number of OpenMP threads */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntDefault));
+
+        if (inputrec->bPull)
+        {
+            /* Initialize pull code */
+            inputrec->pull_work =
+                init_pull(fplog, inputrec->pull, inputrec, nfile, fnm,
+                          mtop, cr, oenv, inputrec->fepvals->init_lambda,
+                          EI_DYNAMICS(inputrec->eI) && MASTER(cr), Flags);
+        }
+
+        if (inputrec->bRot)
+        {
+            /* Initialize enforced rotation code */
+            init_rot(fplog, inputrec, nfile, fnm, cr, state->x, box, mtop, oenv,
+                     bVerbose, Flags);
+        }
+
+        if (inputrec->eSwapCoords != eswapNO)
+        {
+            /* Initialize ion swapping code */
+            init_swapcoords(fplog, bVerbose, inputrec, opt2fn_master("-swap", nfile, fnm, cr),
+                            mtop, state->x, state->box, &state->swapstate, cr, oenv, Flags);
+        }
+
+        constr = init_constraints(fplog, mtop, inputrec, ed, state, cr);
+
+        if (DOMAINDECOMP(cr))
+        {
+            GMX_RELEASE_ASSERT(fr, "fr was NULL while cr->duty was DUTY_PP");
+            dd_init_bondeds(fplog, cr->dd, mtop, vsite, inputrec,
+                            Flags & MD_DDBONDCHECK, fr->cginfo_mb);
+
+            set_dd_parameters(fplog, cr->dd, dlb_scale, inputrec, &ddbox);
+
+            setup_dd_grid(fplog, cr->dd);
+        }
+
+        /* Now do whatever the user wants us to do (how flexible...) */
+        integrator[inputrec->eI].func(fplog, cr, nfile, fnm,
+                                      oenv, bVerbose, bCompact,
+                                      nstglobalcomm,
+                                      vsite, constr,
+                                      nstepout, inputrec, mtop,
+                                      fcd, state,
+                                      mdatoms, nrnb, wcycle, ed, fr,
+                                      repl_ex_nst, repl_ex_nex, repl_ex_seed,
+                                      membed,
+                                      cpt_period, max_hours,
+                                      imdport,
+                                      Flags,
+                                      walltime_accounting);
+
+        if (inputrec->bPull)
+        {
+            finish_pull(inputrec->pull_work);
+        }
+
+        if (inputrec->bRot)
+        {
+            finish_rot(inputrec->rot);
+        }
+
+    }
+    else
+    {
+        GMX_RELEASE_ASSERT(pmedata, "pmedata was NULL while cr->duty was not DUTY_PP");
+        /* do PME only */
+        walltime_accounting = walltime_accounting_init(gmx_omp_nthreads_get(emntPME));
+        gmx_pmeonly(*pmedata, cr, nrnb, wcycle, walltime_accounting, ewaldcoeff_q, ewaldcoeff_lj, inputrec);
+    }
+
+    wallcycle_stop(wcycle, ewcRUN);
+
+    /* Finish up, write some stuff
+     * if rerunMD, don't write last frame again
+     */
+    finish_run(fplog, cr,
+               inputrec, nrnb, wcycle, walltime_accounting,
+               fr ? fr->nbv : NULL,
+               EI_DYNAMICS(inputrec->eI) && !MULTISIM(cr));
+
+
+    /* Free GPU memory and context */
+    free_gpu_resources(fr, cr, &hwinfo->gpu_info, fr ? fr->gpu_opt : NULL);
+
+    if (opt2bSet("-membed", nfile, fnm))
+    {
+        sfree(membed);
+    }
+
+    gmx_hardware_info_free(hwinfo);
+
+    /* Does what it says */
+    print_date_and_time(fplog, cr->nodeid, "Finished mdrun", gmx_gettime());
+    walltime_accounting_destroy(walltime_accounting);
+
+    /* Close logfile already here if we were appending to it */
+    if (MASTER(cr) && (Flags & MD_APPENDFILES))
+    {
+        gmx_log_close(fplog);
+    }
+
+    rc = (int)gmx_get_stop_condition();
+
+    done_ed(&ed);
+
+#ifdef GMX_THREAD_MPI
+    /* we need to join all threads. The sub-threads join when they
+       exit this function, but the master thread needs to be told to
+       wait for that. */
+    if (PAR(cr) && MASTER(cr))
+    {
+        tMPI_Finalize();
+    }
+#endif
+
+    return rc;
+}
diff --git a/patches/patch.sh b/patches/patch.sh
index bb8d6d0a59172072b5dc737e09d338e1bda5d566..ef96768b1b42de4a923ad753891deb5ef853b7e7 100755
--- a/patches/patch.sh
+++ b/patches/patch.sh
@@ -55,6 +55,7 @@ multiple_actions=
 otherfiles=
 save_originals=
 quiet=
+mdroot=
 
 for option
 do
@@ -73,9 +74,11 @@ do
     (--new=*)           test -n "$action" && multiple_actions=yes ; action=new ; newpatch="${prefix_option#--new=}" ;;
     (--description)     echo "patch an MD engine" ; exit ;;
     (--engine=*) engine="${prefix_option#--engine=}" ;;
+    (--mdroot=*) mdroot="${prefix_option#--mdroot=}" ;;
     (--mode=*) mode="${prefix_option#--mode=}" ;;
     (--diff=*) diff="${prefix_option#--diff=}" ;;
     (--engine|-e) prefix="--engine=" ;;
+    (--mdroot) prefix="--mdroot" ;;
     (--root=*) prefix="--root="; PLUMED_ROOT="${prefix_option#--root=}" ;;
     (--diff|-d) prefix="--diff=" ;;
     (--mode|-m) prefix="--mode=" ;;
@@ -91,6 +94,13 @@ do
   esac
 done
 
+if [ -n "$mdroot" ] ; then
+  if ! cd "$mdroot" ; then
+    echo "Directory $mdroot does not exist"
+    exit
+  fi
+fi
+
 if [ -n "$multiple_actions" ] ; then
   echo "Too many actions. -h for help"
   exit
diff --git a/regtest/basic/rt-mpi6c/Makefile b/regtest/basic/rt-mpi6c/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..3703b27cea227aa053fb6d1d73f861e4384dbcee
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/basic/rt-mpi6c/colvar.a.reference b/regtest/basic/rt-mpi6c/colvar.a.reference
new file mode 100644
index 0000000000000000000000000000000000000000..6522b1d853d37d2090b71d5212b77412ffe773f6
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/colvar.a.reference
@@ -0,0 +1,1001 @@
+#! FIELDS time c
+ 0.000000 0.782414
+ 0.050000 0.376362
+ 0.100000 0.922855
+ 0.150000 0.586851
+ 0.200000 0.709936
+ 0.250000 0.504426
+ 0.300000 0.876987
+ 0.350000 0.686053
+ 0.400000 0.732494
+ 0.450000 0.935874
+ 0.500000 0.320779
+ 0.550000 0.444652
+ 0.600000 0.662163
+ 0.650000 0.518929
+ 0.700000 0.612747
+ 0.750000 1.106097
+ 0.800000 0.715450
+ 0.850000 0.500632
+ 0.900000 1.150678
+ 0.950000 0.938394
+ 1.000000 0.507085
+ 1.050000 0.878480
+ 1.100000 0.148353
+ 1.150000 0.865164
+ 1.200000 0.652343
+ 1.250000 0.843950
+ 1.300000 0.853309
+ 1.350000 0.777498
+ 1.400000 0.674883
+ 1.450000 0.585650
+ 1.500000 0.638869
+ 1.550000 0.931090
+ 1.600000 0.729528
+ 1.650000 0.389775
+ 1.700000 0.380675
+ 1.750000 0.742000
+ 1.800000 0.830897
+ 1.850000 0.530212
+ 1.900000 0.454449
+ 1.950000 0.561649
+ 2.000000 0.560040
+ 2.050000 1.104570
+ 2.100000 0.823305
+ 2.150000 0.731928
+ 2.200000 0.669810
+ 2.250000 0.330253
+ 2.300000 0.192118
+ 2.350000 0.510271
+ 2.400000 0.814695
+ 2.450000 0.496607
+ 2.500000 0.492115
+ 2.550000 0.464688
+ 2.600000 0.407741
+ 2.650000 0.576731
+ 2.700000 0.640409
+ 2.750000 0.763544
+ 2.800000 0.168799
+ 2.850000 0.402023
+ 2.900000 0.481178
+ 2.950000 0.831084
+ 3.000000 0.679162
+ 3.050000 0.330853
+ 3.100000 0.668583
+ 3.150000 0.662305
+ 3.200000 0.525249
+ 3.250000 0.701095
+ 3.300000 0.901249
+ 3.350000 0.436895
+ 3.400000 0.713159
+ 3.450000 0.573204
+ 3.500000 0.812516
+ 3.550000 0.647497
+ 3.600000 0.680958
+ 3.650000 0.871000
+ 3.700000 0.919211
+ 3.750000 0.920696
+ 3.800000 1.027241
+ 3.850000 0.805178
+ 3.900000 0.987331
+ 3.950000 0.833425
+ 4.000000 0.739657
+ 4.050000 0.497958
+ 4.100000 0.496966
+ 4.150000 0.961864
+ 4.200000 0.862132
+ 4.250000 1.032821
+ 4.300000 0.808949
+ 4.350000 0.864190
+ 4.400000 0.503525
+ 4.450000 1.124524
+ 4.500000 0.121979
+ 4.550000 0.600942
+ 4.600000 0.239287
+ 4.650000 0.332806
+ 4.700000 0.977786
+ 4.750000 0.950993
+ 4.800000 0.264760
+ 4.850000 0.781280
+ 4.900000 0.172116
+ 4.950000 1.030098
+ 5.000000 0.752667
+ 5.050000 0.819691
+ 5.100000 0.662218
+ 5.150000 0.770853
+ 5.200000 0.411418
+ 5.250000 0.443405
+ 5.300000 0.608127
+ 5.350000 0.763589
+ 5.400000 0.933251
+ 5.450000 1.097584
+ 5.500000 0.753020
+ 5.550000 0.209579
+ 5.600000 0.254917
+ 5.650000 1.251291
+ 5.700000 0.796039
+ 5.750000 1.201355
+ 5.800000 1.467254
+ 5.850000 0.585790
+ 5.900000 0.415514
+ 5.950000 0.591021
+ 6.000000 0.918390
+ 6.050000 1.033536
+ 6.100000 0.884656
+ 6.150000 0.138932
+ 6.200000 1.224382
+ 6.250000 0.498577
+ 6.300000 0.768262
+ 6.350000 0.158940
+ 6.400000 0.552045
+ 6.450000 0.491364
+ 6.500000 0.738808
+ 6.550000 0.948763
+ 6.600000 1.052569
+ 6.650000 0.606582
+ 6.700000 0.581624
+ 6.750000 1.125047
+ 6.800000 1.000321
+ 6.850000 0.888818
+ 6.900000 0.594752
+ 6.950000 0.627585
+ 7.000000 0.932428
+ 7.050000 0.225931
+ 7.100000 0.495764
+ 7.150000 1.066082
+ 7.200000 0.914125
+ 7.250000 0.694245
+ 7.300000 0.764033
+ 7.350000 0.863795
+ 7.400000 0.985485
+ 7.450000 0.473756
+ 7.500000 0.833342
+ 7.550000 0.426864
+ 7.600000 0.522766
+ 7.650000 0.375660
+ 7.700000 0.656754
+ 7.750000 0.765231
+ 7.800000 1.080380
+ 7.850000 0.650424
+ 7.900000 0.690114
+ 7.950000 0.727123
+ 8.000000 0.461152
+ 8.050000 0.991104
+ 8.100000 0.632568
+ 8.150000 0.327964
+ 8.200000 0.437514
+ 8.250000 0.896166
+ 8.300000 0.915213
+ 8.350000 0.406939
+ 8.400000 0.249275
+ 8.450000 0.860794
+ 8.500000 0.517371
+ 8.550000 0.375707
+ 8.600000 0.294835
+ 8.650000 0.888360
+ 8.700000 0.764196
+ 8.750000 0.647047
+ 8.800000 0.280309
+ 8.850000 0.331555
+ 8.900000 0.959787
+ 8.950000 0.490666
+ 9.000000 0.903697
+ 9.050000 0.587524
+ 9.100000 0.727101
+ 9.150000 0.790393
+ 9.200000 0.600174
+ 9.250000 0.900480
+ 9.300000 1.035606
+ 9.350000 0.848508
+ 9.400000 0.439259
+ 9.450000 0.711313
+ 9.500000 0.616011
+ 9.550000 0.911121
+ 9.600000 1.063134
+ 9.650000 0.736152
+ 9.700000 0.485736
+ 9.750000 0.174682
+ 9.800000 0.253087
+ 9.850000 0.905762
+ 9.900000 0.236734
+ 9.950000 0.359658
+ 10.000000 0.593510
+ 10.050000 0.396020
+ 10.100000 0.637852
+ 10.150000 0.784692
+ 10.200000 0.442158
+ 10.250000 0.711325
+ 10.300000 0.473948
+ 10.350000 1.237825
+ 10.400000 0.892006
+ 10.450000 0.955035
+ 10.500000 0.895886
+ 10.550000 0.445318
+ 10.600000 0.863823
+ 10.650000 1.084109
+ 10.700000 0.647074
+ 10.750000 0.597674
+ 10.800000 0.813039
+ 10.850000 0.824184
+ 10.900000 0.420134
+ 10.950000 0.720866
+ 11.000000 0.341683
+ 11.050000 0.515368
+ 11.100000 0.408562
+ 11.150000 1.213831
+ 11.200000 0.659369
+ 11.250000 0.864332
+ 11.300000 0.956196
+ 11.350000 0.581985
+ 11.400000 0.836375
+ 11.450000 0.706440
+ 11.500000 0.744848
+ 11.550000 0.852682
+ 11.600000 0.717738
+ 11.650000 0.774250
+ 11.700000 0.798431
+ 11.750000 0.401288
+ 11.800000 0.566685
+ 11.850000 0.965266
+ 11.900000 0.238118
+ 11.950000 0.993447
+ 12.000000 0.522535
+ 12.050000 1.000055
+ 12.100000 0.860454
+ 12.150000 0.982977
+ 12.200000 0.719009
+ 12.250000 0.734106
+ 12.300000 0.787530
+ 12.350000 0.582451
+ 12.400000 0.899596
+ 12.450000 0.889411
+ 12.500000 0.721438
+ 12.550000 0.847203
+ 12.600000 0.302092
+ 12.650000 0.520136
+ 12.700000 0.471276
+ 12.750000 0.774034
+ 12.800000 0.662086
+ 12.850000 0.900473
+ 12.900000 0.665541
+ 12.950000 0.969613
+ 13.000000 0.692851
+ 13.050000 0.341602
+ 13.100000 0.744080
+ 13.150000 0.954313
+ 13.200000 0.805141
+ 13.250000 0.622559
+ 13.300000 0.659244
+ 13.350000 0.454746
+ 13.400000 0.835460
+ 13.450000 0.980544
+ 13.500000 0.802485
+ 13.550000 0.500261
+ 13.600000 0.776237
+ 13.650000 0.757279
+ 13.700000 0.742934
+ 13.750000 0.827030
+ 13.800000 1.302102
+ 13.850000 1.114447
+ 13.900000 0.496812
+ 13.950000 0.953797
+ 14.000000 0.833934
+ 14.050000 0.983033
+ 14.100000 0.323583
+ 14.150000 0.511859
+ 14.200000 0.257833
+ 14.250000 0.609669
+ 14.300000 0.511695
+ 14.350000 0.314104
+ 14.400000 0.941948
+ 14.450000 0.833782
+ 14.500000 0.900054
+ 14.550000 0.477713
+ 14.600000 0.708535
+ 14.650000 0.543037
+ 14.700000 0.954328
+ 14.750000 0.574834
+ 14.800000 0.941936
+ 14.850000 0.623005
+ 14.900000 0.776684
+ 14.950000 1.005153
+ 15.000000 0.772331
+ 15.050000 1.017108
+ 15.100000 0.355650
+ 15.150000 0.853689
+ 15.200000 0.571245
+ 15.250000 0.694569
+ 15.300000 0.691143
+ 15.350000 0.898068
+ 15.400000 0.290207
+ 15.450000 0.958004
+ 15.500000 1.057980
+ 15.550000 0.477194
+ 15.600000 0.848760
+ 15.650000 0.762256
+ 15.700000 0.228718
+ 15.750000 0.805930
+ 15.800000 0.505918
+ 15.850000 0.521782
+ 15.900000 1.032008
+ 15.950000 0.736376
+ 16.000000 0.858740
+ 16.050000 0.270821
+ 16.100000 0.618613
+ 16.150000 1.210577
+ 16.200000 0.498434
+ 16.250000 0.444261
+ 16.300000 0.218398
+ 16.350000 1.173464
+ 16.400000 1.046101
+ 16.450000 0.403041
+ 16.500000 0.839192
+ 16.550000 1.028139
+ 16.600000 0.670331
+ 16.650000 0.732003
+ 16.700000 0.314830
+ 16.750000 0.701546
+ 16.800000 0.775516
+ 16.850000 0.749292
+ 16.900000 0.226446
+ 16.950000 0.535531
+ 17.000000 0.761995
+ 17.050000 0.881398
+ 17.100000 0.745137
+ 17.150000 0.261000
+ 17.200000 0.536695
+ 17.250000 0.603017
+ 17.300000 0.432846
+ 17.350000 0.974887
+ 17.400000 0.816671
+ 17.450000 0.751191
+ 17.500000 0.361419
+ 17.550000 0.177189
+ 17.600000 0.614967
+ 17.650000 0.770920
+ 17.700000 0.193722
+ 17.750000 0.790161
+ 17.800000 0.849249
+ 17.850000 0.739153
+ 17.900000 1.314510
+ 17.950000 0.980744
+ 18.000000 0.323984
+ 18.050000 0.259680
+ 18.100000 0.734195
+ 18.150000 0.230093
+ 18.200000 0.570605
+ 18.250000 0.099745
+ 18.300000 0.797141
+ 18.350000 0.442617
+ 18.400000 1.121031
+ 18.450000 0.768496
+ 18.500000 0.947640
+ 18.550000 0.737693
+ 18.600000 0.511183
+ 18.650000 0.657829
+ 18.700000 0.473624
+ 18.750000 0.727526
+ 18.800000 0.753382
+ 18.850000 0.911175
+ 18.900000 0.575297
+ 18.950000 0.935229
+ 19.000000 0.693344
+ 19.050000 0.617358
+ 19.100000 0.913032
+ 19.150000 0.341325
+ 19.200000 0.936927
+ 19.250000 0.820359
+ 19.300000 0.555295
+ 19.350000 0.746176
+ 19.400000 0.644161
+ 19.450000 0.603458
+ 19.500000 0.754126
+ 19.550000 1.027428
+ 19.600000 0.764421
+ 19.650000 0.703452
+ 19.700000 0.881114
+ 19.750000 0.892514
+ 19.800000 0.167717
+ 19.850000 0.487141
+ 19.900000 0.423921
+ 19.950000 0.562567
+ 20.000000 0.841984
+ 20.050000 0.676384
+ 20.100000 0.572437
+ 20.150000 0.896976
+ 20.200000 0.737192
+ 20.250000 0.885227
+ 20.300000 0.459412
+ 20.350000 0.704392
+ 20.400000 0.986222
+ 20.450000 0.697676
+ 20.500000 0.674787
+ 20.550000 0.298749
+ 20.600000 1.153712
+ 20.650000 0.806373
+ 20.700000 0.992002
+ 20.750000 0.479843
+ 20.800000 1.041140
+ 20.850000 0.855933
+ 20.900000 0.899527
+ 20.950000 0.805572
+ 21.000000 0.753921
+ 21.050000 0.416580
+ 21.100000 0.586401
+ 21.150000 0.916553
+ 21.200000 0.292884
+ 21.250000 0.573980
+ 21.300000 0.949498
+ 21.350000 0.211531
+ 21.400000 0.712085
+ 21.450000 0.402104
+ 21.500000 0.940431
+ 21.550000 0.630462
+ 21.600000 0.871749
+ 21.650000 0.766416
+ 21.700000 1.031225
+ 21.750000 0.449629
+ 21.800000 0.506821
+ 21.850000 0.577689
+ 21.900000 0.856869
+ 21.950000 0.547235
+ 22.000000 0.618417
+ 22.050000 0.685284
+ 22.100000 0.846215
+ 22.150000 0.623100
+ 22.200000 0.893856
+ 22.250000 0.784933
+ 22.300000 0.598899
+ 22.350000 0.429474
+ 22.400000 1.078164
+ 22.450000 0.348944
+ 22.500000 0.604677
+ 22.550000 0.259332
+ 22.600000 0.393065
+ 22.650000 0.888064
+ 22.700000 1.240851
+ 22.750000 0.762309
+ 22.800000 0.803864
+ 22.850000 0.477401
+ 22.900000 0.487856
+ 22.950000 1.257891
+ 23.000000 0.760262
+ 23.050000 0.602658
+ 23.100000 0.782310
+ 23.150000 0.332119
+ 23.200000 0.985757
+ 23.250000 0.734032
+ 23.300000 0.676772
+ 23.350000 0.970496
+ 23.400000 0.684006
+ 23.450000 0.187685
+ 23.500000 0.416825
+ 23.550000 0.656749
+ 23.600000 0.803637
+ 23.650000 0.805131
+ 23.700000 0.553500
+ 23.750000 1.150939
+ 23.800000 0.511422
+ 23.850000 0.703287
+ 23.900000 0.371546
+ 23.950000 0.121196
+ 24.000000 0.684011
+ 24.050000 0.576355
+ 24.100000 0.547900
+ 24.150000 0.948082
+ 24.200000 0.925122
+ 24.250000 0.529974
+ 24.300000 0.352460
+ 24.350000 0.164419
+ 24.400000 0.202237
+ 24.450000 0.411353
+ 24.500000 0.555980
+ 24.550000 0.762487
+ 24.600000 0.720663
+ 24.650000 0.428219
+ 24.700000 0.778226
+ 24.750000 0.470465
+ 24.800000 0.672153
+ 24.850000 0.526116
+ 24.900000 0.808982
+ 24.950000 0.972180
+ 25.000000 0.669688
+ 25.050000 0.762635
+ 25.100000 1.054493
+ 25.150000 0.409879
+ 25.200000 1.135018
+ 25.250000 0.603947
+ 25.300000 0.824163
+ 25.350000 0.473641
+ 25.400000 1.043852
+ 25.450000 0.142728
+ 25.500000 0.308839
+ 25.550000 0.697331
+ 25.600000 0.752224
+ 25.650000 0.573381
+ 25.700000 0.985136
+ 25.750000 0.316721
+ 25.800000 0.492692
+ 25.850000 0.733163
+ 25.900000 0.283649
+ 25.950000 0.684985
+ 26.000000 0.967168
+ 26.050000 0.809565
+ 26.100000 0.618269
+ 26.150000 0.622824
+ 26.200000 0.890012
+ 26.250000 0.446253
+ 26.300000 0.412572
+ 26.350000 0.512432
+ 26.400000 0.768152
+ 26.450000 0.816928
+ 26.500000 1.161203
+ 26.550000 0.835733
+ 26.600000 0.318201
+ 26.650000 0.520863
+ 26.700000 0.448845
+ 26.750000 1.005365
+ 26.800000 0.720117
+ 26.850000 0.450341
+ 26.900000 1.102043
+ 26.950000 0.205495
+ 27.000000 0.695354
+ 27.050000 0.560992
+ 27.100000 0.919706
+ 27.150000 1.140843
+ 27.200000 0.337974
+ 27.250000 0.334217
+ 27.300000 0.601854
+ 27.350000 0.909704
+ 27.400000 0.467518
+ 27.450000 0.245991
+ 27.500000 0.350921
+ 27.550000 0.717662
+ 27.600000 0.473847
+ 27.650000 0.858780
+ 27.700000 0.779470
+ 27.750000 0.774647
+ 27.800000 0.845459
+ 27.850000 0.480204
+ 27.900000 0.787426
+ 27.950000 0.545280
+ 28.000000 0.413318
+ 28.050000 0.917429
+ 28.100000 0.853689
+ 28.150000 0.663417
+ 28.200000 0.844382
+ 28.250000 0.445565
+ 28.300000 0.610583
+ 28.350000 1.204245
+ 28.400000 0.457722
+ 28.450000 0.568423
+ 28.500000 1.028493
+ 28.550000 0.983961
+ 28.600000 0.996412
+ 28.650000 0.730505
+ 28.700000 0.467472
+ 28.750000 0.840623
+ 28.800000 0.738233
+ 28.850000 0.547900
+ 28.900000 0.877865
+ 28.950000 0.389089
+ 29.000000 1.082552
+ 29.050000 0.502475
+ 29.100000 0.479163
+ 29.150000 1.157227
+ 29.200000 0.635533
+ 29.250000 1.045501
+ 29.300000 0.323101
+ 29.350000 0.765086
+ 29.400000 0.969389
+ 29.450000 1.080722
+ 29.500000 0.284382
+ 29.550000 0.709084
+ 29.600000 0.352524
+ 29.650000 0.886216
+ 29.700000 0.801137
+ 29.750000 0.747802
+ 29.800000 0.529313
+ 29.850000 1.150019
+ 29.900000 0.508189
+ 29.950000 0.489096
+ 30.000000 0.437688
+ 30.050000 0.727515
+ 30.100000 0.458951
+ 30.150000 0.637985
+ 30.200000 0.485000
+ 30.250000 0.724089
+ 30.300000 0.936507
+ 30.350000 0.696144
+ 30.400000 0.845806
+ 30.450000 0.332090
+ 30.500000 0.356176
+ 30.550000 0.865776
+ 30.600000 1.023927
+ 30.650000 0.606244
+ 30.700000 0.223677
+ 30.750000 0.921420
+ 30.800000 0.405434
+ 30.850000 0.928921
+ 30.900000 0.441626
+ 30.950000 0.359704
+ 31.000000 0.510707
+ 31.050000 0.278734
+ 31.100000 0.432276
+ 31.150000 0.466354
+ 31.200000 0.797731
+ 31.250000 0.959877
+ 31.300000 0.714517
+ 31.350000 0.304630
+ 31.400000 0.557093
+ 31.450000 0.832399
+ 31.500000 0.888518
+ 31.550000 0.939837
+ 31.600000 0.618831
+ 31.650000 1.198716
+ 31.700000 0.986125
+ 31.750000 0.319356
+ 31.800000 0.269705
+ 31.850000 0.947577
+ 31.900000 1.138371
+ 31.950000 0.456858
+ 32.000000 0.867691
+ 32.050000 0.469837
+ 32.100000 0.874692
+ 32.150000 0.062428
+ 32.200000 0.719194
+ 32.250000 0.902248
+ 32.300000 0.238294
+ 32.350000 0.551548
+ 32.400000 0.586597
+ 32.450000 0.872713
+ 32.500000 0.709877
+ 32.550000 1.162105
+ 32.600000 0.598784
+ 32.650000 0.995964
+ 32.700000 0.558866
+ 32.750000 0.783826
+ 32.800000 0.762258
+ 32.850000 0.738086
+ 32.900000 0.931420
+ 32.950000 0.374563
+ 33.000000 0.810775
+ 33.050000 0.488352
+ 33.100000 0.658533
+ 33.150000 0.109211
+ 33.200000 0.571220
+ 33.250000 0.428567
+ 33.300000 0.894552
+ 33.350000 1.243477
+ 33.400000 0.764288
+ 33.450000 0.757025
+ 33.500000 0.723206
+ 33.550000 0.615128
+ 33.600000 0.444975
+ 33.650000 0.556814
+ 33.700000 0.740483
+ 33.750000 0.935825
+ 33.800000 0.638007
+ 33.850000 0.456521
+ 33.900000 1.212719
+ 33.950000 0.395746
+ 34.000000 0.966912
+ 34.050000 0.089617
+ 34.100000 0.787899
+ 34.150000 0.972113
+ 34.200000 0.272538
+ 34.250000 0.814668
+ 34.300000 0.575551
+ 34.350000 0.463087
+ 34.400000 0.616421
+ 34.450000 1.021537
+ 34.500000 0.859831
+ 34.550000 0.602511
+ 34.600000 0.473386
+ 34.650000 0.494260
+ 34.700000 0.302681
+ 34.750000 0.425907
+ 34.800000 0.277794
+ 34.850000 0.495260
+ 34.900000 0.435876
+ 34.950000 0.675131
+ 35.000000 1.100922
+ 35.050000 0.486321
+ 35.100000 0.676996
+ 35.150000 0.875771
+ 35.200000 0.868288
+ 35.250000 0.514310
+ 35.300000 0.143309
+ 35.350000 0.147699
+ 35.400000 0.500774
+ 35.450000 0.567885
+ 35.500000 0.139345
+ 35.550000 0.982899
+ 35.600000 0.338652
+ 35.650000 1.006045
+ 35.700000 0.802798
+ 35.750000 0.529115
+ 35.800000 0.483667
+ 35.850000 0.908467
+ 35.900000 0.646446
+ 35.950000 0.264063
+ 36.000000 1.231758
+ 36.050000 0.889094
+ 36.100000 0.868171
+ 36.150000 0.840135
+ 36.200000 0.450851
+ 36.250000 0.551040
+ 36.300000 0.457084
+ 36.350000 0.451934
+ 36.400000 0.627183
+ 36.450000 0.560025
+ 36.500000 1.073163
+ 36.550000 0.363381
+ 36.600000 0.704631
+ 36.650000 0.663466
+ 36.700000 0.905445
+ 36.750000 0.284648
+ 36.800000 1.063233
+ 36.850000 0.929649
+ 36.900000 0.434435
+ 36.950000 0.197187
+ 37.000000 0.869530
+ 37.050000 0.646428
+ 37.100000 0.767267
+ 37.150000 1.037978
+ 37.200000 0.785265
+ 37.250000 0.739480
+ 37.300000 0.737172
+ 37.350000 0.210866
+ 37.400000 1.136412
+ 37.450000 0.446083
+ 37.500000 0.718135
+ 37.550000 0.758999
+ 37.600000 0.378588
+ 37.650000 0.418738
+ 37.700000 0.952923
+ 37.750000 0.420320
+ 37.800000 0.393283
+ 37.850000 0.329956
+ 37.900000 0.682605
+ 37.950000 0.630251
+ 38.000000 0.720283
+ 38.050000 0.846263
+ 38.100000 0.923814
+ 38.150000 0.970791
+ 38.200000 0.236382
+ 38.250000 0.776226
+ 38.300000 0.414202
+ 38.350000 0.803616
+ 38.400000 0.941121
+ 38.450000 0.676972
+ 38.500000 0.232013
+ 38.550000 0.226926
+ 38.600000 0.698625
+ 38.650000 0.524421
+ 38.700000 1.215006
+ 38.750000 0.572365
+ 38.800000 0.250267
+ 38.850000 0.230642
+ 38.900000 0.559905
+ 38.950000 0.889611
+ 39.000000 0.681546
+ 39.050000 0.686640
+ 39.100000 0.542578
+ 39.150000 0.483388
+ 39.200000 0.316370
+ 39.250000 0.371210
+ 39.300000 0.577318
+ 39.350000 0.820617
+ 39.400000 0.890169
+ 39.450000 0.902367
+ 39.500000 0.652205
+ 39.550000 0.573710
+ 39.600000 0.449255
+ 39.650000 0.680917
+ 39.700000 0.471985
+ 39.750000 0.756025
+ 39.800000 0.258194
+ 39.850000 0.972302
+ 39.900000 0.532641
+ 39.950000 0.357607
+ 40.000000 0.958115
+ 40.050000 0.533827
+ 40.100000 0.767837
+ 40.150000 0.383897
+ 40.200000 0.592251
+ 40.250000 0.663243
+ 40.300000 1.108206
+ 40.350000 0.664723
+ 40.400000 0.659621
+ 40.450000 0.508552
+ 40.500000 0.572415
+ 40.550000 0.174492
+ 40.600000 0.947698
+ 40.650000 0.561404
+ 40.700000 0.582922
+ 40.750000 0.152783
+ 40.800000 1.047473
+ 40.850000 0.437477
+ 40.900000 0.545263
+ 40.950000 1.059071
+ 41.000000 0.322454
+ 41.050000 0.665731
+ 41.100000 0.784060
+ 41.150000 0.845246
+ 41.200000 0.253258
+ 41.250000 0.428060
+ 41.300000 0.365078
+ 41.350000 0.115225
+ 41.400000 0.684068
+ 41.450000 1.091249
+ 41.500000 0.842179
+ 41.550000 1.058799
+ 41.600000 0.889383
+ 41.650000 0.347616
+ 41.700000 0.888256
+ 41.750000 0.293563
+ 41.800000 0.922135
+ 41.850000 0.278263
+ 41.900000 0.854490
+ 41.950000 0.767374
+ 42.000000 0.515374
+ 42.050000 0.764504
+ 42.100000 0.543192
+ 42.150000 0.435263
+ 42.200000 0.533983
+ 42.250000 0.521598
+ 42.300000 0.726451
+ 42.350000 0.669134
+ 42.400000 0.568642
+ 42.450000 0.748919
+ 42.500000 0.412211
+ 42.550000 0.499527
+ 42.600000 0.990045
+ 42.650000 0.411047
+ 42.700000 0.638339
+ 42.750000 0.617077
+ 42.800000 1.194527
+ 42.850000 0.740595
+ 42.900000 0.580289
+ 42.950000 0.972833
+ 43.000000 1.094157
+ 43.050000 0.392994
+ 43.100000 0.512447
+ 43.150000 0.780628
+ 43.200000 0.668419
+ 43.250000 0.531647
+ 43.300000 0.649401
+ 43.350000 0.667070
+ 43.400000 0.888242
+ 43.450000 0.779571
+ 43.500000 0.403152
+ 43.550000 0.330897
+ 43.600000 0.785203
+ 43.650000 0.389824
+ 43.700000 0.449135
+ 43.750000 0.985979
+ 43.800000 0.757604
+ 43.850000 0.547824
+ 43.900000 0.775039
+ 43.950000 0.591543
+ 44.000000 0.717395
+ 44.050000 0.626243
+ 44.100000 0.591075
+ 44.150000 0.776109
+ 44.200000 0.958104
+ 44.250000 0.789370
+ 44.300000 0.506745
+ 44.350000 0.592167
+ 44.400000 1.042177
+ 44.450000 0.152526
+ 44.500000 0.864490
+ 44.550000 0.443578
+ 44.600000 0.477168
+ 44.650000 0.463544
+ 44.700000 1.021545
+ 44.750000 0.618352
+ 44.800000 1.000610
+ 44.850000 0.123092
+ 44.900000 0.233959
+ 44.950000 1.032667
+ 45.000000 0.584017
+ 45.050000 0.708574
+ 45.100000 0.534636
+ 45.150000 0.576191
+ 45.200000 0.502763
+ 45.250000 0.254548
+ 45.300000 1.026018
+ 45.350000 0.842140
+ 45.400000 0.462998
+ 45.450000 1.065917
+ 45.500000 0.497906
+ 45.550000 0.637880
+ 45.600000 0.353252
+ 45.650000 0.371486
+ 45.700000 1.002125
+ 45.750000 0.724677
+ 45.800000 1.111508
+ 45.850000 0.606019
+ 45.900000 0.707762
+ 45.950000 0.914344
+ 46.000000 0.565363
+ 46.050000 0.714676
+ 46.100000 0.665621
+ 46.150000 0.807025
+ 46.200000 0.763951
+ 46.250000 0.670692
+ 46.300000 0.787725
+ 46.350000 0.547326
+ 46.400000 0.721754
+ 46.450000 0.708878
+ 46.500000 0.576154
+ 46.550000 0.928381
+ 46.600000 0.855025
+ 46.650000 0.553894
+ 46.700000 1.100217
+ 46.750000 1.069528
+ 46.800000 0.550683
+ 46.850000 0.477631
+ 46.900000 0.274451
+ 46.950000 0.704956
+ 47.000000 0.488789
+ 47.050000 0.808869
+ 47.100000 0.820648
+ 47.150000 0.429025
+ 47.200000 0.882836
+ 47.250000 0.525452
+ 47.300000 0.389013
+ 47.350000 0.928899
+ 47.400000 1.118626
+ 47.450000 0.734048
+ 47.500000 0.346695
+ 47.550000 0.747266
+ 47.600000 0.897259
+ 47.650000 0.899259
+ 47.700000 0.782160
+ 47.750000 0.647353
+ 47.800000 0.541515
+ 47.850000 1.010095
+ 47.900000 0.657008
+ 47.950000 0.501409
+ 48.000000 0.389461
+ 48.050000 0.471161
+ 48.100000 0.509038
+ 48.150000 0.769379
+ 48.200000 0.249992
+ 48.250000 0.263670
+ 48.300000 0.806000
+ 48.350000 0.478182
+ 48.400000 0.406445
+ 48.450000 1.059652
+ 48.500000 0.507362
+ 48.550000 0.434487
+ 48.600000 0.951252
+ 48.650000 0.332208
+ 48.700000 0.870603
+ 48.750000 0.798216
+ 48.800000 0.618370
+ 48.850000 0.319157
+ 48.900000 0.456291
+ 48.950000 0.465260
+ 49.000000 0.668867
+ 49.050000 0.664009
+ 49.100000 0.787720
+ 49.150000 0.669596
+ 49.200000 0.756716
+ 49.250000 0.993103
+ 49.300000 0.913755
+ 49.350000 1.059723
+ 49.400000 1.025504
+ 49.450000 0.887834
+ 49.500000 0.604229
+ 49.550000 0.063268
+ 49.600000 0.344356
+ 49.650000 0.699957
+ 49.700000 0.443896
+ 49.750000 0.795864
+ 49.800000 1.044747
+ 49.850000 0.686163
+ 49.900000 0.618364
+ 49.950000 0.778077
diff --git a/regtest/basic/rt-mpi6c/config b/regtest/basic/rt-mpi6c/config
new file mode 100644
index 0000000000000000000000000000000000000000..8c682a0c19671e0641b1f46de55038d29bc70d3d
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/config
@@ -0,0 +1,4 @@
+mpiprocs=3
+type=driver
+# this is to test a different name
+arg="--plumed=plumed.dat --timestep=0.05 --ixyz trajectory.xyz --multi 3"
diff --git a/regtest/basic/rt-mpi6c/plumed.0.dat b/regtest/basic/rt-mpi6c/plumed.0.dat
new file mode 100644
index 0000000000000000000000000000000000000000..ec6980b0f3e8c0bb32dff04453745f27d56d5dc6
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/plumed.0.dat
@@ -0,0 +1,11 @@
+_SET_SUFFIX .a
+c: DISTANCE ATOMS=1,2
+d: DISTANCE ATOMS=2,3
+
+# this is a dummy file, just to enable checking
+PRINT FILE=colvar ARG=c
+
+# the HILLS file are not really checked here since non-mpi walkers are not reproducible
+# however, this example crashes
+single: METAD ARG=c,d SIGMA=0.1,0.2 HEIGHT=0.1 PACE=2  WALKERS_ID=0 WALKERS_DIR=. WALKERS_N=3 WALKERS_RSTRIDE=1
+
diff --git a/regtest/basic/rt-mpi6c/plumed.1.dat b/regtest/basic/rt-mpi6c/plumed.1.dat
new file mode 100644
index 0000000000000000000000000000000000000000..8b44972a3dd1ce2060d0d9d1da2d402080ef5910
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/plumed.1.dat
@@ -0,0 +1,6 @@
+_SET_SUFFIX .a
+c: DISTANCE ATOMS=1,2
+d: DISTANCE ATOMS=2,3
+
+single: METAD ARG=c,d SIGMA=0.1,0.2 HEIGHT=0.1 PACE=2  WALKERS_ID=1 WALKERS_DIR=. WALKERS_N=3 WALKERS_RSTRIDE=1
+
diff --git a/regtest/basic/rt-mpi6c/plumed.2.dat b/regtest/basic/rt-mpi6c/plumed.2.dat
new file mode 100644
index 0000000000000000000000000000000000000000..241664d0aabf00a7fea7ff1658b818395fc7d164
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/plumed.2.dat
@@ -0,0 +1,6 @@
+_SET_SUFFIX .a
+c: DISTANCE ATOMS=1,2
+d: DISTANCE ATOMS=2,3
+
+single: METAD ARG=c,d SIGMA=0.1,0.2 HEIGHT=0.1 PACE=2 WALKERS_ID=2 WALKERS_DIR=. WALKERS_N=3 WALKERS_RSTRIDE=1
+
diff --git a/regtest/basic/rt-mpi6c/trajectory.0.xyz b/regtest/basic/rt-mpi6c/trajectory.0.xyz
new file mode 100644
index 0000000000000000000000000000000000000000..bda14afea4f2aab9cd0b95cd2ead246b5cd5d629
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/trajectory.0.xyz
@@ -0,0 +1,5000 @@
+3
+10 10 10
+X  0.840188 0.394383 0.783099
+X  0.79844 0.911647 0.197551
+X  0.335223 0.76823 0.277775
+3
+10 10 10
+X  0.55397 0.477397 0.628871
+X  0.364784 0.513401 0.95223
+X  0.916195 0.635712 0.717297
+3
+10 10 10
+X  0.141603 0.606969 0.0163006
+X  0.242887 0.137232 0.804177
+X  0.156679 0.400944 0.12979
+3
+10 10 10
+X  0.108809 0.998925 0.218257
+X  0.512932 0.839112 0.61264
+X  0.296032 0.637552 0.524287
+3
+10 10 10
+X  0.493583 0.972775 0.292517
+X  0.771358 0.526745 0.769914
+X  0.400229 0.891529 0.283315
+3
+10 10 10
+X  0.352458 0.807725 0.919026
+X  0.0697553 0.949327 0.525995
+X  0.0860558 0.192214 0.663227
+3
+10 10 10
+X  0.890233 0.348893 0.0641713
+X  0.020023 0.457702 0.0630958
+X  0.23828 0.970634 0.902208
+3
+10 10 10
+X  0.85092 0.266666 0.53976
+X  0.375207 0.760249 0.512535
+X  0.667724 0.531606 0.0392803
+3
+10 10 10
+X  0.437638 0.931835 0.93081
+X  0.720952 0.284293 0.738534
+X  0.639979 0.354049 0.687861
+3
+10 10 10
+X  0.165974 0.440105 0.880075
+X  0.829201 0.330337 0.228968
+X  0.893372 0.35036 0.68667
+3
+10 10 10
+X  0.956468 0.58864 0.657304
+X  0.858676 0.43956 0.92397
+X  0.398437 0.814767 0.684219
+3
+10 10 10
+X  0.910972 0.482491 0.215825
+X  0.950252 0.920128 0.14766
+X  0.881062 0.641081 0.431953
+3
+10 10 10
+X  0.619596 0.281059 0.786002
+X  0.307458 0.447034 0.226107
+X  0.187533 0.276235 0.556444
+3
+10 10 10
+X  0.416501 0.169607 0.906804
+X  0.103171 0.126075 0.495444
+X  0.760475 0.984752 0.935004
+3
+10 10 10
+X  0.684445 0.383188 0.749771
+X  0.368664 0.29416 0.232262
+X  0.584489 0.244413 0.15239
+3
+10 10 10
+X  0.732149 0.125475 0.79347
+X  0.164102 0.745071 0.0745298
+X  0.950104 0.0525293 0.521563
+3
+10 10 10
+X  0.176211 0.240062 0.797798
+X  0.732654 0.656564 0.967405
+X  0.639458 0.759735 0.0934805
+3
+10 10 10
+X  0.134902 0.52021 0.0782321
+X  0.0699064 0.204655 0.46142
+X  0.819677 0.573319 0.755581
+3
+10 10 10
+X  0.0519388 0.157807 0.999994
+X  0.204329 0.889956 0.125468
+X  0.997799 0.0540576 0.87054
+3
+10 10 10
+X  0.0723288 0.00416161 0.923069
+X  0.593892 0.180372 0.163131
+X  0.39169 0.913027 0.819695
+3
+10 10 10
+X  0.359095 0.552485 0.57943
+X  0.452576 0.687387 0.0996401
+X  0.530808 0.757294 0.304295
+3
+10 10 10
+X  0.992228 0.576971 0.877614
+X  0.747809 0.62891 0.0354209
+X  0.747803 0.833239 0.925377
+3
+10 10 10
+X  0.873271 0.831038 0.979434
+X  0.743811 0.903366 0.983596
+X  0.66688 0.497259 0.163968
+3
+10 10 10
+X  0.830012 0.888949 0.0769947
+X  0.649707 0.248044 0.62948
+X  0.229137 0.70062 0.316867
+3
+10 10 10
+X  0.328777 0.231428 0.074161
+X  0.633072 0.223656 0.651132
+X  0.510686 0.971466 0.280042
+3
+10 10 10
+X  0.546107 0.719269 0.113281
+X  0.471483 0.59254 0.944318
+X  0.450918 0.336351 0.847684
+3
+10 10 10
+X  0.434513 0.00323146 0.344943
+X  0.598481 0.833243 0.233892
+X  0.675476 0.48295 0.481936
+3
+10 10 10
+X  0.304956 0.712087 0.182556
+X  0.621823 0.0408643 0.413984
+X  0.695984 0.673936 0.63764
+3
+10 10 10
+X  0.347116 0.184622 0.609106
+X  0.627158 0.730729 0.328374
+X  0.740438 0.202213 0.920914
+3
+10 10 10
+X  0.684757 0.65313 0.257265
+X  0.532441 0.0876436 0.260497
+X  0.877384 0.686125 0.0937402
+3
+10 10 10
+X  0.111276 0.361601 0.576691
+X  0.593211 0.666557 0.288778
+X  0.775767 0.288379 0.329642
+3
+10 10 10
+X  0.189751 0.984363 0.00357857
+X  0.827391 0.331479 0.188201
+X  0.436497 0.958637 0.91893
+3
+10 10 10
+X  0.764871 0.699075 0.121143
+X  0.685786 0.383832 0.774273
+X  0.943051 0.916273 0.861917
+3
+10 10 10
+X  0.203548 0.793657 0.548042
+X  0.297288 0.904932 0.909643
+X  0.873979 0.498144 0.5762
+3
+10 10 10
+X  0.162757 0.273911 0.864579
+X  0.492399 0.463662 0.848942
+X  0.495977 0.291053 0.180421
+3
+10 10 10
+X  0.684178 0.72755 0.139058
+X  0.603109 0.492422 0.838134
+X  0.724252 0.178208 0.221966
+3
+10 10 10
+X  0.498525 0.121259 0.138238
+X  0.360443 0.324807 0.931895
+X  0.908485 0.622095 0.836828
+3
+10 10 10
+X  0.818128 0.496074 0.334972
+X  0.394327 0.658831 0.608883
+X  0.258906 0.15123 0.072545
+3
+10 10 10
+X  0.107848 0.647207 0.363598
+X  0.28827 0.331386 0.0911486
+X  0.427328 0.934495 0.58357
+3
+10 10 10
+X  0.265461 0.658747 0.761778
+X  0.487427 0.157272 0.883037
+X  0.625665 0.517715 0.207844
+3
+10 10 10
+X  0.557561 0.426199 0.829939
+X  0.394388 0.244327 0.326013
+X  0.72936 0.638654 0.984845
+3
+10 10 10
+X  0.338243 0.89756 0.136075
+X  0.410788 0.00540855 0.783282
+X  0.774386 0.293678 0.114668
+3
+10 10 10
+X  0.865535 0.721006 0.0491625
+X  0.449105 0.986467 0.707909
+X  0.210883 0.473894 0.865181
+3
+10 10 10
+X  0.0939195 0.0995593 0.382896
+X  0.301763 0.65712 0.809095
+X  0.131702 0.0515083 0.0534223
+3
+10 10 10
+X  0.457716 0.780868 0.692076
+X  0.44256 0.119111 0.589637
+X  0.578635 0.529899 0.595045
+3
+10 10 10
+X  0.361917 0.304285 0.888723
+X  0.476585 0.16982 0.609729
+X  0.525747 0.618925 0.596196
+3
+10 10 10
+X  0.233656 0.829808 0.0700902
+X  0.0988374 0.923728 0.16965
+X  0.481733 0.225491 0.826769
+3
+10 10 10
+X  0.290829 0.357193 0.878278
+X  0.344251 0.814909 0.659146
+X  0.0363274 0.257469 0.778257
+3
+10 10 10
+X  0.625964 0.836104 0.308157
+X  0.221009 0.198021 0.612442
+X  0.109733 0.674605 0.782262
+3
+10 10 10
+X  0.719462 0.200352 0.401188
+X  0.315658 0.434009 0.230996
+X  0.385748 0.532846 0.154724
+3
+10 10 10
+X  0.555398 0.0145793 0.380215
+X  0.382167 0.305408 0.737408
+X  0.260445 0.649659 0.552316
+3
+10 10 10
+X  0.919591 0.685986 0.809785
+X  0.697848 0.31195 0.645889
+X  0.00600477 0.53296 0.84391
+3
+10 10 10
+X  0.618447 0.642693 0.518515
+X  0.400709 0.362154 0.718867
+X  0.801897 0.677812 0.152876
+3
+10 10 10
+X  0.0328927 0.0635606 0.685722
+X  0.187616 0.618958 0.700301
+X  0.567831 0.00112548 0.00570914
+3
+10 10 10
+X  0.305239 0.26157 0.655368
+X  0.857555 0.181161 0.341354
+X  0.667341 0.879009 0.653305
+3
+10 10 10
+X  0.31323 0.885014 0.186265
+X  0.157139 0.503461 0.828957
+X  0.675654 0.90417 0.191112
+3
+10 10 10
+X  0.394521 0.706067 0.868924
+X  0.547397 0.738959 0.932485
+X  0.233119 0.926576 0.551443
+3
+10 10 10
+X  0.93342 0.494407 0.552568
+X  0.939129 0.799646 0.814139
+X  0.594497 0.657201 0.9953
+3
+10 10 10
+X  0.935852 0.324541 0.874309
+X  0.589157 0.637771 0.759324
+X  0.775421 0.79491 0.262785
+3
+10 10 10
+X  0.604379 0.470564 0.166955
+X  0.79549 0.865086 0.873021
+X  0.664414 0.412483 0.611981
+3
+10 10 10
+X  0.596899 0.645601 0.538557
+X  0.148342 0.579022 0.0329634
+X  0.70091 0.518151 0.832609
+3
+10 10 10
+X  0.515049 0.112648 0.48981
+X  0.510349 0.0484997 0.814351
+X  0.384658 0.637656 0.452122
+3
+10 10 10
+X  0.143982 0.413078 0.247033
+X  0.406767 0.0174566 0.717597
+X  0.573721 0.812947 0.582682
+3
+10 10 10
+X  0.446743 0.477361 0.995165
+X  0.0587232 0.0742604 0.640766
+X  0.59728 0.222602 0.219788
+3
+10 10 10
+X  0.630243 0.923513 0.737939
+X  0.462852 0.438562 0.850586
+X  0.952662 0.948911 0.899086
+3
+10 10 10
+X  0.767014 0.333569 0.536742
+X  0.219136 0.477551 0.94982
+X  0.466169 0.884318 0.967277
+3
+10 10 10
+X  0.183765 0.458039 0.780224
+X  0.766448 0.904782 0.257585
+X  0.761612 0.963505 0.331846
+3
+10 10 10
+X  0.402379 0.560785 0.554448
+X  0.622167 0.191028 0.477961
+X  0.360105 0.65388 0.916523
+3
+10 10 10
+X  0.210692 0.606542 0.865434
+X  0.109778 0.373556 0.199003
+X  0.64652 0.592692 0.676554
+3
+10 10 10
+X  0.596341 0.0588605 0.560872
+X  0.563617 0.242626 0.0189108
+X  0.343841 0.00907344 0.923692
+3
+10 10 10
+X  0.601427 0.770686 0.887197
+X  0.933273 0.173065 0.447982
+X  0.487721 0.795231 0.639009
+3
+10 10 10
+X  0.965682 0.155336 0.292889
+X  0.882204 0.366028 0.899431
+X  0.747638 0.475806 0.272987
+3
+10 10 10
+X  0.94664 0.122326 0.865679
+X  0.623194 0.718666 0.92454
+X  0.184066 0.282284 0.167165
+3
+10 10 10
+X  0.202977 0.626125 0.176239
+X  0.126669 0.227552 0.946925
+X  0.0138663 0.160824 0.119989
+3
+10 10 10
+X  0.461848 0.648545 0.915221
+X  0.100857 0.614227 0.070557
+X  0.393746 0.496431 0.436585
+3
+10 10 10
+X  0.293177 0.244069 0.912391
+X  0.566164 0.190709 0.0347164
+X  0.431844 0.813904 0.753383
+3
+10 10 10
+X  0.356383 0.99797 0.0356664
+X  0.523548 0.200947 0.661792
+X  0.699787 0.327616 0.889343
+3
+10 10 10
+X  0.646712 0.341482 0.0501679
+X  0.766701 0.80333 0.698713
+X  0.681922 0.904187 0.31294
+3
+10 10 10
+X  0.752479 0.297933 0.809371
+X  0.189064 0.591111 0.0534394
+X  0.101454 0.157275 0.244149
+3
+10 10 10
+X  0.136171 0.589119 0.0580523
+X  0.889553 0.945502 0.0560222
+X  0.92522 0.46905 0.256969
+3
+10 10 10
+X  0.587011 0.168837 0.584585
+X  0.476355 0.815549 0.926068
+X  0.526523 0.58225 0.729398
+3
+10 10 10
+X  0.225236 0.264172 0.633585
+X  0.538175 0.0166506 0.931518
+X  0.347546 0.205714 0.522629
+3
+10 10 10
+X  0.400985 0.307168 0.679904
+X  0.645134 0.443339 0.269022
+X  0.703186 0.332892 0.214524
+3
+10 10 10
+X  0.759208 0.258112 0.683574
+X  0.0161775 0.845123 0.852411
+X  0.600763 0.321478 0.66796
+3
+10 10 10
+X  0.52683 0.848 0.25021
+X  0.256228 0.0732357 0.514382
+X  0.889813 0.611411 0.531033
+3
+10 10 10
+X  0.821331 0.958957 0.736747
+X  0.343959 0.359942 0.0439153
+X  0.0238632 0.0050762 0.487254
+3
+10 10 10
+X  0.292886 0.708262 0.820146
+X  0.50741 0.467471 0.0782579
+X  0.190984 0.483648 0.923381
+3
+10 10 10
+X  0.0433947 0.084411 0.244858
+X  0.711355 0.611241 0.0928584
+X  0.961565 0.867469 0.166094
+3
+10 10 10
+X  0.475947 0.757282 0.777505
+X  0.00698012 0.578613 0.736462
+X  0.743727 0.922572 0.0964041
+3
+10 10 10
+X  0.787642 0.946435 0.10148
+X  0.274897 0.239321 0.809743
+X  0.0950427 0.74673 0.277214
+3
+10 10 10
+X  0.173301 0.937714 0.760862
+X  0.0966814 0.981109 0.845273
+X  0.34154 0.692463 0.456514
+3
+10 10 10
+X  0.434398 0.654029 0.323983
+X  0.600492 0.129976 0.081265
+X  0.377997 0.136956 0.659878
+3
+10 10 10
+X  0.114459 0.880683 0.58245
+X  0.210863 0.668326 0.528885
+X  0.312343 0.943222 0.768206
+3
+10 10 10
+X  0.122086 0.0382648 0.514936
+X  0.3993 0.211565 0.45265
+X  0.160162 0.308247 0.433758
+3
+10 10 10
+X  0.00543489 0.649787 0.126222
+X  0.461949 0.0841846 0.780251
+X  0.785932 0.684677 0.910227
+3
+10 10 10
+X  0.867197 0.0626739 0.0471826
+X  0.527075 0.177133 0.927866
+X  0.109525 0.387996 0.596191
+3
+10 10 10
+X  0.638409 0.70034 0.539413
+X  0.406615 0.822426 0.577678
+X  0.921551 0.221726 0.789244
+3
+10 10 10
+X  0.374201 0.381888 0.0974906
+X  0.807959 0.387323 0.747277
+X  0.934181 0.849272 0.831462
+3
+10 10 10
+X  0.714432 0.635204 0.516139
+X  0.624658 0.502401 0.578813
+X  0.671841 0.0294762 0.755945
+3
+10 10 10
+X  0.599707 0.139001 0.143942
+X  0.195898 0.77741 0.844281
+X  0.735311 0.184025 0.666707
+3
+10 10 10
+X  0.31299 0.105576 0.888433
+X  0.102233 0.479777 0.270321
+X  0.199724 0.287736 0.657643
+3
+10 10 10
+X  0.947001 0.221918 0.506915
+X  0.778463 0.936349 0.142119
+X  0.294601 0.561007 0.64452
+3
+10 10 10
+X  0.873414 0.232848 0.673996
+X  0.629359 0.832555 0.812997
+X  0.773301 0.0284525 0.590407
+3
+10 10 10
+X  0.617582 0.763764 0.774432
+X  0.284289 0.0767534 0.880009
+X  0.172722 0.178987 0.359786
+3
+10 10 10
+X  0.443043 0.37871 0.647522
+X  0.100686 0.325711 0.86944
+X  0.6076 0.104174 0.805789
+3
+10 10 10
+X  0.749719 0.398775 0.366796
+X  0.394239 0.272189 0.599644
+X  0.0682348 0.901549 0.432199
+3
+10 10 10
+X  0.881232 0.67485 0.460652
+X  0.471639 0.292432 0.224415
+X  0.246071 0.576721 0.301169
+3
+10 10 10
+X  0.12608 0.749443 0.480156
+X  0.485866 0.192486 0.858866
+X  0.133388 0.293171 0.184577
+3
+10 10 10
+X  0.00282779 0.900772 0.288752
+X  0.808617 0.650491 0.687527
+X  0.175413 0.0447295 0.959716
+3
+10 10 10
+X  0.775058 0.112964 0.861265
+X  0.207257 0.994196 0.536115
+X  0.667908 0.465835 0.828546
+3
+10 10 10
+X  0.892324 0.711906 0.405267
+X  0.193493 0.837986 0.154711
+X  0.673648 0.323852 0.347196
+3
+10 10 10
+X  0.532514 0.45724 0.640368
+X  0.717092 0.460067 0.54114
+X  0.00584319 0.268684 0.19163
+3
+10 10 10
+X  0.69337 0.444097 0.23636
+X  0.653087 0.219155 0.349324
+X  0.514352 0.426412 0.34352
+3
+10 10 10
+X  0.0504663 0.0943199 0.809355
+X  0.879013 0.986644 0.521261
+X  0.28428 0.180136 0.359247
+3
+10 10 10
+X  0.43899 0.853785 0.683098
+X  0.786187 0.386299 0.140338
+X  0.426555 0.10339 0.600405
+3
+10 10 10
+X  0.967694 0.109233 0.86909
+X  0.159324 0.802604 0.313187
+X  0.395684 0.45569 0.532342
+3
+10 10 10
+X  0.745008 0.970042 0.958753
+X  0.0885283 0.0205084 0.0530733
+X  0.897883 0.899521 0.039717
+3
+10 10 10
+X  0.419144 0.183801 0.219853
+X  0.778391 0.622791 0.0736379
+X  0.461489 0.408978 0.459937
+3
+10 10 10
+X  0.601827 0.835533 0.563327
+X  0.202232 0.803227 0.67256
+X  0.071322 0.962551 0.475164
+3
+10 10 10
+X  0.384509 0.358235 0.930854
+X  0.916851 0.103244 0.900896
+X  0.875604 0.191772 0.921405
+3
+10 10 10
+X  0.928678 0.089655 0.820926
+X  0.968395 0.508799 0.00472651
+X  0.188248 0.287189 0.627518
+3
+10 10 10
+X  0.261886 0.748678 0.0364959
+X  0.721822 0.350505 0.872028
+X  0.285149 0.552738 0.675255
+3
+10 10 10
+X  0.957709 0.62406 0.637806
+X  0.432873 0.00856861 0.996042
+X  0.363727 0.92542 0.0992851
+3
+10 10 10
+X  0.264624 0.801024 0.291057
+X  0.186029 0.729702 0.380712
+X  0.00695418 0.698096 0.889511
+3
+10 10 10
+X  0.0116807 0.886344 0.1767
+X  0.639199 0.14823 0.925379
+X  0.675694 0.870053 0.275884
+3
+10 10 10
+X  0.547723 0.155202 0.828622
+X  0.222978 0.112911 0.452681
+X  0.860784 0.545784 0.46125
+3
+10 10 10
+X  0.856826 0.909512 0.386669
+X  0.956111 0.174136 0.187693
+X  0.247168 0.360164 0.917395
+3
+10 10 10
+X  0.62788 0.367118 0.615491
+X  0.517391 0.378799 0.501835
+X  0.694091 0.0179977 0.650066
+3
+10 10 10
+X  0.61947 0.693692 0.520118
+X  0.895354 0.241415 0.67532
+X  0.723975 0.464393 0.788231
+3
+10 10 10
+X  0.176656 0.325177 0.334016
+X  0.637906 0.182003 0.243528
+X  0.0245755 0.138114 0.417663
+3
+10 10 10
+X  0.212269 0.385282 0.777828
+X  0.129663 0.0131615 0.144946
+X  0.745154 0.530552 0.523745
+3
+10 10 10
+X  0.24699 0.224643 0.541743
+X  0.897055 0.844113 0.235435
+X  0.417174 0.739467 0.47685
+3
+10 10 10
+X  0.0924937 0.463442 0.941243
+X  0.880725 0.640098 0.26642
+X  0.214741 0.278005 0.448423
+3
+10 10 10
+X  0.458269 0.30258 0.586537
+X  0.875932 0.514849 0.971818
+X  0.65376 0.644512 0.98498
+3
+10 10 10
+X  0.798706 0.389667 0.515532
+X  0.322451 0.636656 0.740175
+X  0.864194 0.533712 0.584288
+3
+10 10 10
+X  0.0996293 0.950885 0.323755
+X  0.576479 0.043379 0.787197
+X  0.517722 0.924104 0.427295
+3
+10 10 10
+X  0.784142 0.138845 0.7053
+X  0.232565 0.597114 0.00788008
+X  0.819102 0.473045 0.522729
+3
+10 10 10
+X  0.79092 0.126805 0.167241
+X  0.775899 0.925511 0.556908
+X  0.291431 0.247962 0.193564
+3
+10 10 10
+X  0.0316064 0.112157 0.727276
+X  0.615894 0.211786 0.678161
+X  0.939649 0.788265 0.72154
+3
+10 10 10
+X  0.726846 0.305987 0.645644
+X  0.154141 0.0901297 0.784489
+X  0.859441 0.322695 0.381603
+3
+10 10 10
+X  0.867321 0.141796 0.854648
+X  0.39005 0.932716 0.981453
+X  0.557291 0.708616 0.906964
+3
+10 10 10
+X  0.114199 4.68777e-05 0.154927
+X  0.307763 0.0316532 0.267083
+X  0.0350389 0.647548 0.478869
+3
+10 10 10
+X  0.7132 0.587197 0.267134
+X  0.43474 0.314043 0.573122
+X  0.080384 0.468185 0.663252
+3
+10 10 10
+X  0.864873 0.327626 0.985946
+X  0.246476 0.194948 0.127743
+X  0.101124 0.584998 0.0604589
+3
+10 10 10
+X  0.082577 0.142289 0.769074
+X  0.989541 0.256489 0.769121
+X  0.144468 0.564252 0.800775
+3
+10 10 10
+X  0.411551 0.599291 0.448322
+X  0.89042 0.312491 0.0355193
+X  0.157555 0.747231 0.349562
+3
+10 10 10
+X  0.730677 0.827615 0.817747
+X  0.393928 0.692488 0.145373
+X  0.379874 0.938963 0.340321
+3
+10 10 10
+X  0.507617 0.0400871 0.925318
+X  0.568076 0.122664 0.0676078
+X  0.33715 0.112205 0.324096
+3
+10 10 10
+X  0.106272 0.256673 0.888348
+X  0.907046 0.668224 0.487639
+X  0.355369 0.558645 0.800129
+3
+10 10 10
+X  0.390888 0.716199 0.54736
+X  0.74045 0.446876 0.374975
+X  0.558198 0.840804 0.0674623
+3
+10 10 10
+X  0.703571 0.220679 0.0064256
+X  0.0438913 0.728296 0.0465127
+X  0.96921 0.296372 0.169177
+3
+10 10 10
+X  0.0368176 0.633522 0.281382
+X  0.360914 0.739794 0.538055
+X  0.249262 0.64684 0.20628
+3
+10 10 10
+X  0.736901 0.00220922 0.764925
+X  0.53703 0.393097 0.481124
+X  0.0843902 0.133548 0.928
+3
+10 10 10
+X  0.459365 0.691745 0.768804
+X  0.526827 0.395316 0.989483
+X  0.533253 0.439207 0.717778
+3
+10 10 10
+X  0.579765 0.408417 0.0141502
+X  0.748942 0.445235 0.647672
+X  0.030324 0.806149 0.387466
+3
+10 10 10
+X  0.568379 0.0554106 0.0343068
+X  0.774659 0.792311 0.036516
+X  0.539584 0.329342 0.429613
+3
+10 10 10
+X  0.0207081 0.413732 0.563161
+X  0.948708 0.873097 0.254906
+X  0.717512 0.399924 0.650222
+3
+10 10 10
+X  0.706995 0.933176 0.0894297
+X  0.424774 0.512941 0.497847
+X  0.438924 0.261883 0.943081
+3
+10 10 10
+X  0.0865962 0.292207 0.74923
+X  0.474063 0.860587 0.804641
+X  0.508369 0.635246 0.596952
+3
+10 10 10
+X  0.544885 0.17483 0.926294
+X  0.974499 0.195538 0.340026
+X  0.53766 0.144246 0.213122
+3
+10 10 10
+X  0.792566 0.861759 0.613046
+X  0.442789 0.568754 0.546222
+X  0.532218 0.993528 0.0591633
+3
+10 10 10
+X  0.0300651 0.432452 0.321047
+X  0.973147 0.519048 0.613254
+X  0.722377 0.99311 0.473841
+3
+10 10 10
+X  0.527017 0.50148 0.109087
+X  0.123969 0.0463652 0.283917
+X  0.0502633 0.0208639 0.479455
+3
+10 10 10
+X  0.390289 0.558524 0.623701
+X  0.603411 0.35109 0.48546
+X  0.216457 0.793879 0.054214
+3
+10 10 10
+X  0.762679 0.326097 0.0477418
+X  0.821842 0.356162 0.480193
+X  0.142889 0.329309 0.999241
+3
+10 10 10
+X  0.756143 0.0516852 0.992352
+X  0.229984 0.578702 0.493831
+X  0.339071 0.702672 0.540197
+3
+10 10 10
+X  0.622988 0.752935 0.56106
+X  0.102443 0.143224 0.119584
+X  0.726144 0.746635 0.470674
+3
+10 10 10
+X  0.211604 0.963092 0.264553
+X  0.265818 0.725771 0.590649
+X  0.31356 0.547613 0.946811
+3
+10 10 10
+X  0.793753 0.690502 0.27612
+X  0.792995 0.446645 0.327805
+X  0.785346 0.676628 0.906508
+3
+10 10 10
+X  0.279178 0.0156992 0.609179
+X  0.819374 0.638687 0.362115
+X  0.380434 0.74113 0.505339
+3
+10 10 10
+X  0.500019 0.467274 0.251974
+X  0.970693 0.678878 0.215066
+X  0.235245 0.944697 0.940837
+3
+10 10 10
+X  0.825895 0.258257 0.48845
+X  0.772706 0.0520103 0.178952
+X  0.0488258 0.845005 0.625596
+3
+10 10 10
+X  0.376631 0.630351 0.302225
+X  0.283138 0.909529 0.317924
+X  0.892318 0.728903 0.956611
+3
+10 10 10
+X  0.254432 0.109337 0.697741
+X  0.759771 0.609356 0.165015
+X  0.0117453 0.580048 0.843894
+3
+10 10 10
+X  0.226811 0.815294 0.78859
+X  0.167648 0.641188 0.0468473
+X  0.656098 0.413894 0.0988576
+3
+10 10 10
+X  0.83505 0.46272 0.943863
+X  0.460646 0.839351 0.574214
+X  0.762871 0.122489 0.483742
+3
+10 10 10
+X  0.0807953 0.0148069 0.212645
+X  0.0374063 0.269239 0.321982
+X  0.735147 0.0290106 0.931338
+3
+10 10 10
+X  0.900163 0.0407559 0.511386
+X  0.744056 0.267567 0.32668
+X  0.532647 0.435216 0.967868
+3
+10 10 10
+X  0.579494 0.0913142 0.381762
+X  0.678351 0.926364 0.844482
+X  0.622214 0.387011 0.683833
+3
+10 10 10
+X  0.196428 0.149882 0.806322
+X  0.68017 0.230677 0.821129
+X  0.892815 0.268084 0.0903681
+3
+10 10 10
+X  0.214797 0.00323105 0.119379
+X  0.146135 0.903394 0.160135
+X  0.657522 0.64745 0.427702
+3
+10 10 10
+X  0.984202 0.180096 0.862918
+X  0.95207 0.75959 0.954232
+X  0.333832 0.437942 0.880596
+3
+10 10 10
+X  0.178314 0.0601557 0.267607
+X  0.862147 0.256583 0.417489
+X  0.668469 0.936754 0.648167
+3
+10 10 10
+X  0.489597 0.829569 0.91625
+X  0.579965 0.0443661 0.919481
+X  0.699344 0.190501 0.822875
+3
+10 10 10
+X  0.859479 0.848023 0.470325
+X  0.287181 0.832225 0.650421
+X  0.150099 0.784295 0.410011
+3
+10 10 10
+X  0.104331 0.118126 0.847953
+X  0.984927 0.29644 0.908109
+X  0.252535 0.158587 0.164692
+3
+10 10 10
+X  0.670024 0.827056 0.101446
+X  0.318191 0.316653 0.931014
+X  0.234441 0.896618 0.97538
+3
+10 10 10
+X  0.153923 0.595963 0.165882
+X  0.976798 0.455442 0.0139049
+X  0.447123 0.742623 0.84613
+3
+10 10 10
+X  0.0975437 0.892721 0.630424
+X  0.507555 0.997052 0.748551
+X  0.355508 0.98198 0.044991
+3
+10 10 10
+X  0.263617 0.234514 0.203578
+X  0.428309 0.904539 0.0306337
+X  0.529754 0.222729 0.347287
+3
+10 10 10
+X  0.460768 0.457171 0.243905
+X  0.436149 0.611093 0.839868
+X  0.60203 0.587891 0.295309
+3
+10 10 10
+X  0.615935 0.0350138 0.037932
+X  0.462065 0.132558 0.930653
+X  0.0924893 0.640113 0.927706
+3
+10 10 10
+X  0.84104 0.99562 0.909686
+X  0.886031 0.259237 0.1442
+X  0.089609 0.687546 0.0487385
+3
+10 10 10
+X  0.120243 0.2173 0.271468
+X  0.467529 0.678068 0.728638
+X  0.711434 0.114216 0.339732
+3
+10 10 10
+X  0.551302 0.716247 0.927623
+X  0.846611 0.332182 0.962637
+X  0.884543 0.794247 0.0951945
+3
+10 10 10
+X  0.815197 0.886736 0.735307
+X  0.742903 0.727776 0.730928
+X  0.652588 0.613807 0.990165
+3
+10 10 10
+X  0.796788 0.703416 0.67771
+X  0.845527 0.823659 0.89501
+X  0.116995 0.291188 0.573077
+3
+10 10 10
+X  0.845633 0.00262258 0.687294
+X  0.185365 0.553925 0.403541
+X  0.112988 0.400536 0.735723
+3
+10 10 10
+X  0.0756249 0.28508 0.52997
+X  0.170819 0.100276 0.416706
+X  0.906126 0.843179 0.144482
+3
+10 10 10
+X  0.637054 0.495767 0.75829
+X  0.627219 0.292555 0.461706
+X  0.304929 0.138082 0.285365
+3
+10 10 10
+X  0.199938 0.255076 0.576553
+X  0.773016 0.100709 0.579176
+X  0.460309 0.286074 0.1331
+3
+10 10 10
+X  0.86385 0.399062 0.533636
+X  0.599573 0.474687 0.818716
+X  0.129542 0.645506 0.918992
+3
+10 10 10
+X  0.546248 0.551633 0.762171
+X  0.690731 0.188687 0.257939
+X  0.44902 0.815905 0.550494
+3
+10 10 10
+X  0.910726 0.120834 0.688576
+X  0.196091 0.320772 0.943652
+X  0.772644 0.0937877 0.0443619
+3
+10 10 10
+X  0.351819 0.554097 0.330436
+X  0.484919 0.417947 0.729499
+X  0.0185558 0.0175198 0.204186
+3
+10 10 10
+X  0.837272 0.147062 0.849692
+X  0.756264 0.693311 0.401325
+X  0.518436 0.384041 0.590012
+3
+10 10 10
+X  0.776374 0.833062 0.405917
+X  0.326868 0.743788 0.526751
+X  0.0154439 0.939879 0.847523
+3
+10 10 10
+X  0.959096 0.712522 0.941311
+X  0.00345808 0.0643416 0.495408
+X  0.333894 0.549261 0.913355
+3
+10 10 10
+X  0.0633928 0.567817 0.930875
+X  0.267578 0.405089 0.0779371
+X  0.117271 0.161353 0.771248
+3
+10 10 10
+X  0.518596 0.679788 0.155289
+X  0.108608 0.456162 0.988351
+X  0.514525 0.78303 0.732138
+3
+10 10 10
+X  0.041276 0.798474 0.672017
+X  0.888799 0.757571 0.384539
+X  0.83011 0.761029 0.448881
+3
+10 10 10
+X  0.325518 0.094923 0.998142
+X  0.238873 0.158316 0.565959
+X  0.169748 0.425894 0.971047
+3
+10 10 10
+X  0.247685 0.543165 0.1324
+X  0.0189329 0.0617606 0.812189
+X  0.174222 0.170368 0.268351
+3
+10 10 10
+X  0.162572 0.684893 0.0513816
+X  0.894711 0.726169 0.849856
+X  0.566728 0.614968 0.607427
+3
+10 10 10
+X  0.951267 0.445079 0.368455
+X  0.400148 0.770597 0.463378
+X  0.39829 0.00947013 0.621694
+3
+10 10 10
+X  0.964248 0.179218 0.0475882
+X  0.935296 0.426904 0.590753
+X  0.067696 0.445836 0.652514
+3
+10 10 10
+X  0.879885 0.620058 0.822882
+X  0.148236 0.782631 0.507775
+X  0.199617 0.677342 0.233944
+3
+10 10 10
+X  0.0494732 0.244069 0.848912
+X  0.6569 0.195336 0.293991
+X  0.0253549 0.595484 0.0645876
+3
+10 10 10
+X  0.488733 0.993774 0.0740577
+X  0.110427 0.958022 0.253276
+X  0.158015 0.893318 0.68018
+3
+10 10 10
+X  0.748768 0.961014 0.126016
+X  0.401282 0.840899 0.746075
+X  0.224164 0.989134 0.528705
+3
+10 10 10
+X  0.731938 0.188752 0.206047
+X  0.965882 0.238225 0.450117
+X  0.814794 0.895125 0.645453
+3
+10 10 10
+X  0.108785 0.92048 0.240937
+X  0.173373 0.409213 0.234711
+X  0.247431 0.51964 0.192734
+3
+10 10 10
+X  0.500707 0.677655 0.0860517
+X  0.180886 0.426423 0.0470658
+X  0.306902 0.827705 0.887965
+3
+10 10 10
+X  0.0529768 0.0518689 0.877099
+X  0.581682 0.783807 0.0658506
+X  0.787729 0.74969 0.304075
+3
+10 10 10
+X  0.237846 0.564484 0.1992
+X  0.883299 0.673269 0.119679
+X  0.124236 0.846642 0.528892
+3
+10 10 10
+X  0.358948 0.0940727 0.0485317
+X  0.551681 0.594779 0.726187
+X  0.637733 0.775665 0.15261
+3
+10 10 10
+X  0.684799 0.0825677 0.980315
+X  0.572763 0.135545 0.0321839
+X  0.449862 0.717227 0.815991
+3
+10 10 10
+X  0.515713 0.504956 0.565681
+X  0.819788 0.742802 0.130165
+X  0.0189879 0.626101 0.803434
+3
+10 10 10
+X  0.138667 0.750337 0.650077
+X  0.667559 0.109285 0.744149
+X  0.716091 0.660966 0.338929
+3
+10 10 10
+X  0.442278 0.298698 0.114594
+X  0.594888 0.983497 0.197162
+X  0.575203 0.55626 0.332706
+3
+10 10 10
+X  0.607387 0.00612195 0.0499329
+X  0.423378 0.521834 0.554889
+X  0.989059 0.341622 0.297691
+3
+10 10 10
+X  0.119224 0.36061 0.923792
+X  0.922658 0.499278 0.674129
+X  0.572735 0.166837 0.783413
+3
+10 10 10
+X  0.316884 0.882928 0.444379
+X  0.655813 0.325206 0.743078
+X  0.770407 0.920094 0.726575
+3
+10 10 10
+X  0.967568 0.495297 0.282835
+X  0.300275 0.102683 0.288957
+X  0.350207 0.526061 0.810791
+3
+10 10 10
+X  0.905096 0.51512 0.152413
+X  0.202787 0.634344 0.513024
+X  0.126579 0.557002 0.0123013
+3
+10 10 10
+X  0.800708 0.129737 0.179138
+X  0.584121 0.446622 0.0620666
+X  0.0285004 0.102434 0.387273
+3
+10 10 10
+X  0.771578 0.872841 0.307366
+X  0.498153 0.840409 0.802663
+X  0.780987 0.140684 0.905346
+3
+10 10 10
+X  0.0699438 0.490891 0.431407
+X  0.880735 0.395988 0.946527
+X  0.0331482 0.598775 0.580872
+3
+10 10 10
+X  0.546172 0.725354 0.137874
+X  0.558473 0.526062 0.267611
+X  0.737611 0.110183 0.714233
+3
+10 10 10
+X  0.799678 0.138684 0.816667
+X  0.186951 0.910262 0.689509
+X  0.494317 0.408414 0.529918
+3
+10 10 10
+X  0.29698 0.189401 0.670602
+X  0.202326 0.259345 0.161494
+X  0.633734 0.14008 0.557481
+3
+10 10 10
+X  0.580261 0.173228 0.156257
+X  0.161133 0.7194 0.881611
+X  0.299007 0.277873 0.407673
+3
+10 10 10
+X  0.566618 0.0154844 0.517856
+X  0.280851 0.815162 0.65654
+X  0.0975185 0.00211305 0.566801
+3
+10 10 10
+X  0.787027 0.49643 0.975215
+X  0.316945 0.79341 0.164617
+X  0.987547 0.995737 0.423962
+3
+10 10 10
+X  0.149041 0.629471 0.564042
+X  0.706522 0.209732 0.73727
+X  0.862779 0.370865 0.45667
+3
+10 10 10
+X  0.74439 0.669871 0.734543
+X  0.152062 0.23649 0.750027
+X  0.669918 0.517341 0.565189
+3
+10 10 10
+X  0.326458 0.614859 0.567302
+X  0.893259 0.401886 0.0637327
+X  0.868474 0.718831 0.857143
+3
+10 10 10
+X  0.0330907 0.706378 0.85288
+X  0.457052 0.855419 0.48235
+X  0.021094 0.561941 0.692082
+3
+10 10 10
+X  0.758364 0.42472 0.0629468
+X  0.215033 0.169109 0.732818
+X  0.949576 0.321172 0.969308
+3
+10 10 10
+X  0.699603 0.99109 0.486648
+X  0.264793 0.317548 0.101507
+X  0.832095 0.210806 0.503394
+3
+10 10 10
+X  0.895828 0.0792805 0.222225
+X  0.752971 0.112371 0.928603
+X  0.60585 0.569424 0.784022
+3
+10 10 10
+X  0.0882007 0.590518 0.345963
+X  0.780283 0.348881 0.770682
+X  0.84323 0.563915 0.939791
+3
+10 10 10
+X  0.576048 0.513491 0.260963
+X  0.545356 0.213094 0.252053
+X  0.0320041 0.477887 0.5696
+3
+10 10 10
+X  0.133512 0.309982 0.780407
+X  0.636905 0.205809 0.859687
+X  0.85913 0.95878 0.972059
+3
+10 10 10
+X  0.787733 0.56463 0.541482
+X  0.571755 0.652831 0.132
+X  0.917717 0.433114 0.480881
+3
+10 10 10
+X  0.688399 0.276344 0.0447959
+X  0.628191 0.852391 0.558287
+X  0.889154 0.397747 0.771381
+3
+10 10 10
+X  0.141207 0.429751 0.249267
+X  0.710807 0.563263 0.559249
+X  0.491214 0.200168 0.765058
+3
+10 10 10
+X  0.350901 0.0592977 0.723838
+X  0.32296 0.847031 0.288468
+X  0.864442 0.418785 0.941299
+3
+10 10 10
+X  0.996442 0.336502 0.374413
+X  0.477323 0.0249018 0.650757
+X  0.522119 0.653093 0.503148
+3
+10 10 10
+X  0.0804055 0.542247 0.900895
+X  0.851786 0.683453 0.330647
+X  0.101054 0.39426 0.893909
+3
+10 10 10
+X  0.660302 0.885474 0.0940773
+X  0.425361 0.236375 0.153375
+X  0.149199 0.559335 0.000405591
+3
+10 10 10
+X  0.437667 0.423777 0.419191
+X  0.378966 0.420218 0.755693
+X  0.753379 0.897541 0.780595
+3
+10 10 10
+X  0.404136 0.41966 0.433687
+X  0.907284 0.500065 0.975934
+X  0.808179 0.351851 0.659387
+3
+10 10 10
+X  0.138826 0.452905 0.0536473
+X  0.0327351 0.113207 0.939121
+X  0.126812 0.538568 0.175496
+3
+10 10 10
+X  0.280188 0.687766 0.734831
+X  0.280593 0.125433 0.158607
+X  0.699784 0.504399 0.578825
+3
+10 10 10
+X  0.455477 0.257778 0.476366
+X  0.236071 0.661914 0.896026
+X  0.669759 0.569198 0.396091
+3
+10 10 10
+X  0.645693 0.377377 0.747942
+X  0.30508 0.516203 0.200847
+X  0.358727 0.548938 0.314054
+3
+10 10 10
+X  0.297849 0.67575 0.852622
+X  0.473345 0.955938 0.540389
+X  0.208175 0.236531 0.665822
+3
+10 10 10
+X  0.366783 0.936315 0.170221
+X  0.945608 0.391792 0.427999
+X  0.421975 0.627863 0.0899137
+3
+10 10 10
+X  0.318 0.297622 0.659112
+X  0.714091 0.943315 0.0364889
+X  0.462033 0.248395 0.552692
+3
+10 10 10
+X  0.66288 0.607122 0.10163
+X  0.976935 0.904971 0.77738
+X  0.829557 0.378316 0.733318
+3
+10 10 10
+X  0.369946 0.586491 0.969849
+X  0.0357674 0.953274 0.906164
+X  0.205989 0.898882 0.297956
+3
+10 10 10
+X  0.633988 0.320857 0.925819
+X  0.723902 0.638857 0.223441
+X  0.383013 0.352948 0.166755
+3
+10 10 10
+X  0.419502 0.814982 0.41515
+X  0.972194 0.477862 0.0222729
+X  0.0738238 0.454797 0.927244
+3
+10 10 10
+X  0.851204 0.284354 0.30556
+X  0.584522 0.654299 0.892051
+X  0.554371 0.690067 0.845325
+3
+10 10 10
+X  0.460535 0.896055 0.744207
+X  0.758491 0.530043 0.0650635
+X  0.68431 0.253945 0.703921
+3
+10 10 10
+X  0.90775 0.636959 0.056869
+X  0.0745054 0.0564608 0.871851
+X  0.489656 0.0286548 0.349713
+3
+10 10 10
+X  0.511929 0.102479 0.80451
+X  0.439173 0.953683 0.0888636
+X  0.744732 0.538205 0.743163
+3
+10 10 10
+X  0.636783 0.092576 0.43323
+X  0.482107 0.553111 0.329285
+X  0.226314 0.311602 0.859329
+3
+10 10 10
+X  0.291378 0.995912 0.113274
+X  0.995298 0.903662 0.750232
+X  0.0521674 0.978167 0.806693
+3
+10 10 10
+X  0.924018 0.467823 0.835348
+X  0.273731 0.979752 0.937826
+X  0.0782409 0.418925 0.891509
+3
+10 10 10
+X  0.167104 0.163657 0.429714
+X  0.910267 0.80044 0.52229
+X  0.343497 0.282547 0.0754011
+3
+10 10 10
+X  0.672782 0.508861 0.387003
+X  0.532111 0.800239 0.382915
+X  0.645385 0.795537 0.286577
+3
+10 10 10
+X  0.395617 0.847705 0.264745
+X  0.20231 0.771723 0.732568
+X  0.0376578 0.0454541 0.71232
+3
+10 10 10
+X  0.975484 0.123695 0.131244
+X  0.866993 0.290799 0.294901
+X  0.296707 0.201067 0.0953408
+3
+10 10 10
+X  0.818996 0.544564 0.377888
+X  0.894397 0.217346 0.886749
+X  0.281401 0.749457 0.686988
+3
+10 10 10
+X  0.664316 0.394842 0.482525
+X  0.950893 0.790458 0.33023
+X  0.215638 0.992768 0.101953
+3
+10 10 10
+X  0.948206 0.0304262 0.147407
+X  0.660526 0.00591033 0.271102
+X  0.79177 0.872903 0.561902
+3
+10 10 10
+X  0.0866714 0.16961 0.762968
+X  0.182012 0.988606 0.307532
+X  0.5599 0.883004 0.524878
+3
+10 10 10
+X  0.446649 0.164405 0.274335
+X  0.133637 0.828721 0.669177
+X  0.616163 0.779615 0.459635
+3
+10 10 10
+X  0.946393 0.995253 0.452404
+X  0.048346 0.943459 0.48283
+X  0.195753 0.603984 0.48874
+3
+10 10 10
+X  0.466855 0.395754 0.361644
+X  0.028757 0.482426 0.531254
+X  0.791725 0.664438 0.51986
+3
+10 10 10
+X  0.0992575 0.224338 0.402864
+X  0.624136 0.670987 0.567269
+X  0.898471 0.804625 0.39599
+3
+10 10 10
+X  0.567648 0.420787 0.175605
+X  0.0272838 0.36718 0.170857
+X  0.479688 0.415526 0.114316
+3
+10 10 10
+X  0.962518 0.611279 0.7183
+X  0.451258 0.0781347 0.114054
+X  0.812902 0.106892 0.59648
+3
+10 10 10
+X  0.344156 0.898617 0.260918
+X  0.864016 0.997875 0.485257
+X  0.26688 0.622011 0.156244
+3
+10 10 10
+X  0.834149 0.520482 0.960868
+X  0.230139 0.0881301 0.381656
+X  0.405744 0.115414 0.748836
+3
+10 10 10
+X  0.576601 0.595102 0.164362
+X  0.690917 0.557619 0.775641
+X  0.409217 0.00887705 0.853776
+3
+10 10 10
+X  0.523271 0.821779 0.960668
+X  0.119752 0.165934 0.859285
+X  0.38067 0.0299502 0.857159
+3
+10 10 10
+X  0.865927 0.29683 0.47917
+X  0.0221705 0.130979 0.999652
+X  0.983039 0.361119 0.0877818
+3
+10 10 10
+X  0.364695 0.766862 0.203196
+X  0.11353 0.343464 0.798297
+X  0.277892 0.0343803 0.355916
+3
+10 10 10
+X  0.0535336 0.443597 0.364793
+X  0.90731 0.966868 0.186572
+X  0.867977 0.08662 0.352506
+3
+10 10 10
+X  0.727262 0.46729 0.382457
+X  0.584421 0.333217 0.679287
+X  0.0635912 0.355387 0.810266
+3
+10 10 10
+X  0.0632429 0.338426 0.171385
+X  0.151025 0.703121 0.938247
+X  0.354221 0.816651 0.281711
+3
+10 10 10
+X  0.152518 0.0945434 0.316091
+X  0.508434 0.148077 0.759688
+X  0.873228 0.0553866 0.726557
+3
+10 10 10
+X  0.0597998 0.923364 0.813177
+X  0.412306 0.650626 0.280467
+X  0.794763 0.235047 0.613683
+3
+10 10 10
+X  0.47405 0.298639 0.96907
+X  0.284316 0.361881 0.307496
+X  0.455701 0.512906 0.0106171
+3
+10 10 10
+X  0.393948 0.867127 0.827268
+X  0.675659 0.0196445 0.921812
+X  0.991751 0.528079 0.0698885
+3
+10 10 10
+X  0.751439 0.401306 0.125275
+X  0.477996 0.461106 0.048639
+X  0.291173 0.873412 0.699265
+3
+10 10 10
+X  0.571639 0.668175 0.934312
+X  0.185323 0.142225 0.232951
+X  0.154393 0.426541 0.594832
+3
+10 10 10
+X  0.46189 0.882242 0.107738
+X  0.472507 0.27619 0.974865
+X  0.299775 0.95185 0.99451
+3
+10 10 10
+X  0.221587 0.943601 0.522588
+X  0.291475 0.69504 0.923895
+X  0.41675 0.173036 0.385001
+3
+10 10 10
+X  0.465389 0.464208 0.258413
+X  0.164654 0.0358477 0.926589
+X  0.0989663 0.221171 0.0688135
+3
+10 10 10
+X  0.331917 0.375564 0.495355
+X  0.926749 0.837454 0.377597
+X  0.0344874 0.309961 0.653787
+3
+10 10 10
+X  0.00935241 0.609736 0.605637
+X  0.00386199 0.831323 0.549238
+X  0.52645 0.122798 0.244277
+3
+10 10 10
+X  0.450345 0.539549 0.417313
+X  0.835346 0.00493794 0.881521
+X  0.0937589 0.169592 0.917369
+3
+10 10 10
+X  0.0203474 0.268558 0.138539
+X  0.089161 0.600475 0.514103
+X  0.584516 0.527224 0.351557
+3
+10 10 10
+X  0.962112 0.561712 0.661518
+X  0.615899 0.571064 0.271254
+X  0.221536 0.574926 0.102577
+3
+10 10 10
+X  0.770774 0.101377 0.225375
+X  0.015051 0.551721 0.764924
+X  0.432364 0.387067 0.769862
+3
+10 10 10
+X  0.313885 0.480826 0.939454
+X  0.231253 0.501174 0.208012
+X  0.369793 0.590334 0.808488
+3
+10 10 10
+X  0.883896 0.17485 0.335712
+X  0.235453 0.136962 0.897424
+X  0.896971 0.752861 0.468488
+3
+10 10 10
+X  0.168225 0.974398 0.0434146
+X  0.270803 0.745172 0.144791
+X  0.496178 0.760223 0.696513
+3
+10 10 10
+X  0.261102 0.192586 0.0835797
+X  0.0309635 0.506471 0.564406
+X  0.970417 0.737725 0.0655793
+3
+10 10 10
+X  0.17843 0.107517 0.655914
+X  0.986918 0.991413 0.830764
+X  0.32263 0.226866 0.967726
+3
+10 10 10
+X  0.220054 0.123838 0.720587
+X  0.688542 0.292063 0.694985
+X  0.731957 0.562866 0.440157
+3
+10 10 10
+X  0.876748 0.0590435 0.200379
+X  0.573261 0.320145 0.392965
+X  0.65684 0.351109 0.899437
+3
+10 10 10
+X  0.221246 0.321526 0.637161
+X  0.286825 0.499956 0.744678
+X  0.942739 0.486873 0.736092
+3
+10 10 10
+X  0.773503 0.809503 0.962958
+X  0.741229 0.0295571 0.0867955
+X  0.461816 0.718099 0.378859
+3
+10 10 10
+X  0.156801 0.450056 0.941724
+X  0.596958 0.326804 0.000767693
+X  0.797337 0.900065 0.320913
+3
+10 10 10
+X  0.190303 0.556905 0.672021
+X  0.0897392 0.778152 0.993547
+X  0.7269 0.0649769 0.493503
+3
+10 10 10
+X  0.471579 0.00771607 0.980376
+X  0.20767 0.781219 0.789879
+X  0.170628 0.522448 0.819437
+3
+10 10 10
+X  0.257423 0.984264 0.537536
+X  0.636282 0.141065 0.987592
+X  0.578006 0.738023 0.314397
+3
+10 10 10
+X  0.578774 0.53536 0.214462
+X  0.899687 0.725663 0.771367
+X  0.571708 0.815402 0.549519
+3
+10 10 10
+X  0.565256 0.542303 0.614496
+X  0.0587587 0.0138811 0.622212
+X  0.0391351 0.221551 0.403431
+3
+10 10 10
+X  0.829015 0.392179 0.925878
+X  0.648451 0.649603 0.910142
+X  0.185987 0.285885 0.0512077
+3
+10 10 10
+X  0.173579 0.863891 0.789231
+X  0.487976 0.442665 0.324591
+X  0.702437 0.342352 0.0502544
+3
+10 10 10
+X  0.473805 0.91406 0.865657
+X  0.0233231 0.479315 0.407959
+X  0.637819 0.538074 0.42184
+3
+10 10 10
+X  0.26003 0.577209 0.643391
+X  0.663461 0.406224 0.0355706
+X  0.589339 0.0546747 0.685173
+3
+10 10 10
+X  0.499481 0.240662 0.971058
+X  0.550689 0.414241 0.834949
+X  0.33992 0.902217 0.277614
+3
+10 10 10
+X  0.664511 0.604654 0.619965
+X  0.714766 0.0784585 0.534025
+X  0.580422 0.101782 0.0133406
+3
+10 10 10
+X  0.988382 0.7396 0.551415
+X  0.410222 0.99963 0.128624
+X  0.0536133 0.663091 0.534848
+3
+10 10 10
+X  0.0891839 0.25243 0.589522
+X  0.774357 0.751912 0.830184
+X  0.745415 0.302601 0.244425
+3
+10 10 10
+X  0.580364 0.642521 0.146641
+X  0.857978 0.307032 0.751295
+X  0.477943 0.0217983 0.829754
+3
+10 10 10
+X  0.0119682 0.602221 0.931535
+X  0.0253088 0.590602 0.671135
+X  0.576724 0.000824207 0.670766
+3
+10 10 10
+X  0.705347 0.0544375 0.333857
+X  0.240195 0.143621 0.586288
+X  0.829717 0.917979 0.338199
+3
+10 10 10
+X  0.659901 0.663394 0.6408
+X  0.904326 0.243758 0.283321
+X  0.0509667 0.101735 0.590354
+3
+10 10 10
+X  0.802262 0.579678 0.612152
+X  0.632015 0.591647 0.214373
+X  0.56355 0.616955 0.804975
+3
+10 10 10
+X  0.234686 0.193679 0.805799
+X  0.905452 0.899026 0.860237
+X  0.239309 0.139221 0.00385829
+3
+10 10 10
+X  0.825596 0.968939 0.921837
+X  0.163796 0.62884 0.58523
+X  0.804596 0.533165 0.828988
+3
+10 10 10
+X  0.0879172 0.584132 0.930723
+X  0.678271 0.386394 0.510402
+X  0.290423 0.0184091 0.102048
+3
+10 10 10
+X  0.504796 0.58196 0.719004
+X  0.309771 0.816645 0.912683
+X  0.115571 0.722097 0.811709
+3
+10 10 10
+X  0.975807 0.961406 0.95093
+X  0.979666 0.787003 0.919869
+X  0.901503 0.950798 0.548708
+3
+10 10 10
+X  0.486733 0.755394 0.0818735
+X  0.315721 0.843312 0.666005
+X  0.246445 0.521583 0.0523992
+3
+10 10 10
+X  0.756846 0.812006 0.0708083
+X  0.858895 0.316802 0.652768
+X  0.577898 0.626573 0.469413
+3
+10 10 10
+X  0.490581 0.742143 0.191511
+X  0.30229 0.717951 0.152917
+X  0.25322 0.697616 0.93992
+3
+10 10 10
+X  0.173089 0.599119 0.890718
+X  0.721797 0.0858521 0.646113
+X  0.80367 0.401573 0.489424
+3
+10 10 10
+X  0.469676 0.648018 0.0110069
+X  0.522075 0.404864 0.823013
+X  0.592883 0.263759 0.139814
+3
+10 10 10
+X  0.245651 0.841657 0.766387
+X  0.715065 0.332238 0.50853
+X  0.906575 0.634528 0.226481
+3
+10 10 10
+X  0.0594924 0.887748 0.924097
+X  0.999412 0.0608362 0.523216
+X  0.89013 0.782633 0.609068
+3
+10 10 10
+X  0.536243 0.586303 0.0106416
+X  0.0256669 0.0559791 0.658659
+X  0.0366738 0.578054 0.0635237
+3
+10 10 10
+X  0.859686 0.170937 0.327283
+X  0.9995 0.416589 0.16894
+X  0.765887 0.131653 0.501178
+3
+10 10 10
+X  0.274417 0.0382287 0.135705
+X  0.500898 0.0977211 0.0234531
+X  0.424995 0.0971331 0.0842894
+3
+10 10 10
+X  0.948211 0.987263 0.866922
+X  0.557279 0.523506 0.453226
+X  0.567921 0.549173 0.509205
+3
+10 10 10
+X  0.22658 0.585846 0.0872588
+X  0.290104 0.445533 0.258196
+X  0.617387 0.445033 0.674785
+3
+10 10 10
+X  0.786326 0.21092 0.806438
+X  0.287504 0.485337 0.844667
+X  0.423209 0.986235 0.942388
+3
+10 10 10
+X  0.446662 0.41123 0.039521
+X  0.530952 0.359441 0.0267842
+X  0.397874 0.91672 0.55029
+3
+10 10 10
+X  0.8511 0.484641 0.0994628
+X  0.360305 0.711222 0.685309
+X  0.447564 0.00132573 0.130842
+3
+10 10 10
+X  0.70576 0.618712 0.575875
+X  0.380544 0.405038 0.786796
+X  0.186983 0.692542 0.272133
+3
+10 10 10
+X  0.0316495 0.115752 0.258368
+X  0.974037 0.562414 0.669598
+X  0.0135584 0.0933659 0.0290395
+3
+10 10 10
+X  0.0403427 0.49124 0.94576
+X  0.590633 0.34234 0.430401
+X  0.690096 0.702645 0.141623
+3
+10 10 10
+X  0.375405 0.150208 0.142949
+X  0.506247 0.855968 0.761661
+X  0.0821224 0.236512 0.166699
+3
+10 10 10
+X  0.868918 0.423495 0.859242
+X  0.141051 0.455145 0.974993
+X  0.39942 0.429182 0.537407
+3
+10 10 10
+X  0.0690179 0.44274 0.630773
+X  0.0980574 0.483083 0.122013
+X  0.0438174 0.0737159 0.464353
+3
+10 10 10
+X  0.474219 0.763811 0.166998
+X  0.615842 0.139216 0.317206
+X  0.75879 0.645464 0.173174
+3
+10 10 10
+X  0.520451 0.727586 0.409687
+X  0.687151 0.596504 0.833182
+X  0.546393 0.737555 0.288326
+3
+10 10 10
+X  0.521386 0.136975 0.717508
+X  0.0587931 0.205993 0.160248
+X  0.689566 0.30405 0.643331
+3
+10 10 10
+X  0.811579 0.347868 0.717047
+X  0.275933 0.822086 0.480859
+X  0.442931 0.437928 0.620075
+3
+10 10 10
+X  0.760137 0.196719 0.265539
+X  0.933311 0.71717 0.993125
+X  0.342998 0.404321 0.589629
+3
+10 10 10
+X  0.176179 0.950714 0.327184
+X  0.464505 0.472099 0.464159
+X  0.182014 0.530892 0.670152
+3
+10 10 10
+X  0.342262 0.220459 0.974202
+X  0.985593 0.0320382 0.32207
+X  0.702641 0.307971 0.144156
+3
+10 10 10
+X  0.1835 0.750902 0.582084
+X  0.803575 0.511039 0.778803
+X  0.0691138 0.44435 0.495973
+3
+10 10 10
+X  0.0622386 0.787347 0.900294
+X  0.651868 0.963527 0.851007
+X  0.979052 0.428032 0.323107
+3
+10 10 10
+X  0.443211 0.610046 0.853999
+X  0.113363 0.952308 0.0744578
+X  0.0875648 0.937901 0.106496
+3
+10 10 10
+X  0.409635 0.640542 0.414467
+X  0.553791 0.824041 0.165369
+X  0.135875 0.627616 0.676407
+3
+10 10 10
+X  0.914678 0.69673 0.120757
+X  0.410651 0.758969 0.908104
+X  0.310944 0.410836 0.871631
+3
+10 10 10
+X  0.161952 0.389888 0.299663
+X  0.485059 0.833099 0.909708
+X  0.339058 0.946461 0.862016
+3
+10 10 10
+X  0.413516 0.0340263 0.799917
+X  0.520012 0.443661 0.440458
+X  0.934478 0.997451 0.2645
+3
+10 10 10
+X  0.0998469 0.133326 0.892116
+X  0.776254 0.048004 0.588846
+X  0.897011 0.458655 0.347815
+3
+10 10 10
+X  0.805115 0.769599 0.758651
+X  0.676745 0.931551 0.148539
+X  0.976408 0.416609 0.981637
+3
+10 10 10
+X  0.886116 0.755667 0.928099
+X  0.748131 0.169183 0.962125
+X  0.548048 0.689194 0.405786
+3
+10 10 10
+X  0.988506 0.623672 0.403238
+X  0.253006 0.723519 0.536564
+X  0.145122 0.499773 0.584568
+3
+10 10 10
+X  0.733968 0.396784 0.0432225
+X  0.0817827 0.201899 0.812821
+X  0.840433 0.878644 0.744372
+3
+10 10 10
+X  0.988972 0.855051 0.160982
+X  0.97061 0.741167 0.916649
+X  0.898709 0.489298 0.0858311
+3
+10 10 10
+X  0.860834 0.0373466 0.775025
+X  0.26662 0.0258531 0.398698
+X  0.669857 0.278859 0.122217
+3
+10 10 10
+X  0.206421 0.423981 0.62199
+X  0.790989 0.157949 0.0187743
+X  0.834212 0.239732 0.220673
+3
+10 10 10
+X  0.647033 0.0801656 0.0993164
+X  0.391405 0.0691378 0.954368
+X  0.552387 0.0397475 0.695535
+3
+10 10 10
+X  0.469035 0.938456 0.184833
+X  0.554866 0.79929 0.22218
+X  0.329892 0.0659098 0.248033
+3
+10 10 10
+X  0.728589 0.735767 0.526892
+X  0.850806 0.942188 0.950873
+X  0.472796 0.733178 0.108823
+3
+10 10 10
+X  0.491571 0.567389 0.348555
+X  0.712244 0.214422 0.42872
+X  0.81156 0.605827 0.497858
+3
+10 10 10
+X  0.765928 0.158214 0.537606
+X  0.461462 0.62725 0.476062
+X  0.646295 0.182116 0.275352
+3
+10 10 10
+X  0.868475 0.512008 0.341262
+X  0.116508 0.240597 0.0770289
+X  0.6434 0.0914027 0.0192173
+3
+10 10 10
+X  0.594273 0.564199 0.752395
+X  0.703096 0.0557698 0.319784
+X  0.0516508 0.768013 0.534206
+3
+10 10 10
+X  0.480371 0.579573 0.140033
+X  0.978229 0.345501 0.298248
+X  0.515835 0.806963 0.925497
+3
+10 10 10
+X  0.991897 0.453259 0.107613
+X  0.267249 0.321734 0.619621
+X  0.60851 0.438242 0.860217
+3
+10 10 10
+X  0.685539 0.0816417 0.95162
+X  0.704757 0.675915 0.515819
+X  0.457151 0.379011 0.571589
+3
+10 10 10
+X  0.776935 0.430662 0.339602
+X  0.311141 0.911033 0.919176
+X  0.451175 0.889262 0.264676
+3
+10 10 10
+X  0.749422 0.405098 0.0716397
+X  0.674919 0.396995 0.524898
+X  0.782533 0.664243 0.846632
+3
+10 10 10
+X  0.402153 0.272754 0.284874
+X  0.262371 0.958293 0.366516
+X  0.213991 0.663049 0.0424307
+3
+10 10 10
+X  0.72981 0.120201 0.421442
+X  0.301399 0.897136 0.852104
+X  0.641001 0.208278 0.763137
+3
+10 10 10
+X  0.560176 0.659452 0.652399
+X  0.824853 0.408875 0.0574968
+X  0.896493 0.083794 0.454491
+3
+10 10 10
+X  0.421391 0.866327 0.118735
+X  0.268023 0.26848 0.391488
+X  0.552897 0.530851 0.349781
+3
+10 10 10
+X  0.919413 0.744841 0.0128304
+X  0.961843 0.474651 0.133031
+X  0.383285 0.77605 0.0301674
+3
+10 10 10
+X  0.235388 0.417051 0.238445
+X  0.998525 0.977227 0.897897
+X  0.650924 0.80208 0.306772
+3
+10 10 10
+X  0.708421 0.698573 0.390566
+X  0.162912 0.119964 0.256892
+X  0.281647 0.387987 0.525373
+3
+10 10 10
+X  0.673135 0.940884 0.0562232
+X  0.022916 0.860296 0.801065
+X  0.0357464 0.822139 0.275716
+3
+10 10 10
+X  0.168778 0.205424 0.0517661
+X  0.198945 0.440813 0.468817
+X  0.43739 0.439338 0.446045
+3
+10 10 10
+X  0.335287 0.0902622 0.248125
+X  0.642059 0.798683 0.946698
+X  0.032625 0.961596 0.0666617
+3
+10 10 10
+X  0.289518 0.243243 0.454649
+X  0.81489 0.916378 0.395532
+X  0.871113 0.939294 0.255829
+3
+10 10 10
+X  0.672178 0.97504 0.0779679
+X  0.947894 0.143818 0.283392
+X  0.99966 0.342763 0.724205
+3
+10 10 10
+X  0.468477 0.780153 0.163543
+X  0.914522 0.11544 0.253805
+X  0.162647 0.757499 0.0524885
+3
+10 10 10
+X  0.109345 0.790125 0.0140841
+X  0.176006 0.079642 0.257327
+X  0.630655 0.894532 0.173704
+3
+10 10 10
+X  0.0261872 0.765645 0.112998
+X  0.282016 0.437823 0.0880377
+X  0.359984 0.385717 0.231855
+3
+10 10 10
+X  0.643376 0.385378 0.574618
+X  0.367581 0.853855 0.354771
+X  0.531124 0.768377 0.470211
+3
+10 10 10
+X  0.784929 0.931024 0.227711
+X  0.837417 0.0403683 0.0178355
+X  0.851501 0.216375 0.0974775
+3
+10 10 10
+X  0.108828 0.84703 0.99201
+X  0.282532 0.873217 0.757655
+X  0.39553 0.155233 0.195478
+3
+10 10 10
+X  0.483568 0.515216 0.581196
+X  0.715423 0.158592 0.966573
+X  0.290041 0.526173 0.820428
+3
+10 10 10
+X  0.644812 0.0572967 0.588805
+X  0.115024 0.842226 0.519828
+X  0.342735 0.679643 0.560197
+3
+10 10 10
+X  0.36057 0.531144 0.776571
+X  0.458048 0.639973 0.623601
+X  0.450057 0.922505 0.496818
+3
+10 10 10
+X  0.207712 0.318035 0.652051
+X  0.403191 0.801603 0.167267
+X  0.984386 0.517026 0.325859
+3
+10 10 10
+X  0.950959 0.807067 0.852032
+X  0.771387 0.451879 0.909329
+X  0.360192 0.566903 0.751554
+3
+10 10 10
+X  0.88002 0.909638 0.431197
+X  0.440217 0.270209 0.962342
+X  0.216789 0.728256 0.602314
+3
+10 10 10
+X  0.84039 0.178314 0.524819
+X  0.337208 0.386026 0.842854
+X  0.989258 0.789217 0.644457
+3
+10 10 10
+X  0.156525 0.773603 0.161482
+X  0.482384 0.724562 0.968549
+X  0.334416 0.495949 0.420429
+3
+10 10 10
+X  0.243745 0.856141 0.987332
+X  0.995299 0.736162 0.89697
+X  0.426496 0.176379 0.167179
+3
+10 10 10
+X  0.388838 0.393168 0.895435
+X  0.991152 0.233557 0.073749
+X  0.515971 0.570765 0.459775
+3
+10 10 10
+X  0.358825 0.560023 0.248992
+X  0.00328197 0.716548 0.0225948
+X  0.164764 0.198933 0.747157
+3
+10 10 10
+X  0.133314 0.533348 0.243106
+X  0.553743 0.777093 0.0992475
+X  0.541075 0.772392 0.835409
+3
+10 10 10
+X  0.438045 0.198887 0.0117881
+X  0.605223 0.587725 0.404956
+X  0.500659 0.578877 0.638513
+3
+10 10 10
+X  0.574408 0.0948478 0.209278
+X  0.0341828 0.453673 0.769301
+X  0.283175 0.456955 0.48585
+3
+10 10 10
+X  0.30577 0.621719 0.684782
+X  0.0529265 0.755033 0.218131
+X  0.296033 0.308776 0.995223
+3
+10 10 10
+X  0.39528 0.84985 0.767615
+X  0.230689 0.287895 0.966503
+X  0.242477 0.893119 0.554228
+3
+10 10 10
+X  0.647433 0.393777 0.133104
+X  0.285946 0.968185 0.227952
+X  0.495224 0.00236773 0.681625
+3
+10 10 10
+X  0.264525 0.285543 0.13858
+X  0.750374 0.591312 0.7603
+X  0.435157 0.644239 0.515333
+3
+10 10 10
+X  0.653287 0.940271 0.824109
+X  0.648511 0.335551 0.673959
+X  0.416126 0.566241 0.961854
+3
+10 10 10
+X  0.382628 0.808718 0.854973
+X  0.936856 0.456151 0.24875
+X  0.0699601 0.742097 0.216935
+3
+10 10 10
+X  0.297912 0.237321 0.219303
+X  0.979537 0.501846 0.504845
+X  0.118118 0.252221 0.0961575
+3
+10 10 10
+X  0.878417 0.687377 0.740396
+X  0.39375 0.340664 0.680667
+X  0.217858 0.989175 0.0162189
+3
+10 10 10
+X  0.891817 0.405301 0.58246
+X  0.853671 0.787929 0.391178
+X  0.708644 0.724785 0.84733
+3
+10 10 10
+X  0.957394 0.794745 0.589427
+X  0.17433 0.0926569 0.826748
+X  0.393632 0.0721944 0.328595
+3
+10 10 10
+X  0.898478 0.190312 0.580815
+X  0.994635 0.0687289 0.268192
+X  0.735031 0.462479 0.608857
+3
+10 10 10
+X  0.415699 0.680337 0.598032
+X  0.431918 0.572154 0.00333222
+X  0.0143773 0.425826 0.791261
+3
+10 10 10
+X  0.405555 0.13447 0.516045
+X  0.252885 0.0918645 0.31079
+X  0.842312 0.266194 0.403447
+3
+10 10 10
+X  0.66906 0.659826 0.475641
+X  0.997655 0.558304 0.665953
+X  0.57847 0.552939 0.734682
+3
+10 10 10
+X  0.846663 0.28797 0.197161
+X  0.455519 0.703669 0.877498
+X  0.0535511 0.135586 0.449652
+3
+10 10 10
+X  0.0568833 0.149964 0.875478
+X  0.848144 0.555519 0.00994797
+X  0.36419 0.808404 0.101812
+3
+10 10 10
+X  0.67498 0.650716 0.368006
+X  0.078427 0.319776 0.0278327
+X  0.554068 0.317431 0.586137
+3
+10 10 10
+X  0.220022 0.895901 0.139076
+X  0.954704 0.742564 0.427046
+X  0.151865 0.198083 0.130715
+3
+10 10 10
+X  0.0293628 0.251634 0.266301
+X  0.479015 0.308517 0.416264
+X  0.354493 0.156662 0.971783
+3
+10 10 10
+X  0.364441 0.520852 0.780187
+X  0.466253 0.195831 0.430903
+X  0.83426 0.274258 0.750679
+3
+10 10 10
+X  0.862092 0.828327 0.0681104
+X  0.448229 0.0483486 0.964012
+X  0.587305 0.00305258 0.706575
+3
+10 10 10
+X  0.0143505 0.154917 0.904658
+X  0.145065 0.18428 0.156293
+X  0.411366 0.663295 0.46481
+3
+10 10 10
+X  0.82763 0.017788 0.621472
+X  0.799414 0.382229 0.142323
+X  0.579601 0.848482 0.338155
+3
+10 10 10
+X  0.0105039 0.682742 0.612413
+X  0.761183 0.544834 0.44074
+X  0.829294 0.993064 0.489089
+3
+10 10 10
+X  0.793305 0.580368 0.492141
+X  0.499881 0.594719 0.647059
+X  0.404539 0.739784 0.831339
+3
+10 10 10
+X  0.560831 0.151149 0.494634
+X  0.0256415 0.97878 0.512422
+X  0.647113 0.778193 0.894651
+3
+10 10 10
+X  0.789437 0.357794 0.743133
+X  0.127591 0.368298 0.425875
+X  0.740005 0.129481 0.97071
+3
+10 10 10
+X  0.180745 0.958775 0.963773
+X  0.669833 0.75208 0.544142
+X  0.161975 0.251961 0.13886
+3
+10 10 10
+X  0.809034 0.6565 0.878644
+X  0.640373 0.217331 0.0297934
+X  0.135007 0.242973 0.00857304
+3
+10 10 10
+X  0.647429 0.890086 0.786766
+X  0.54208 0.679523 0.14456
+X  0.285213 0.807114 0.512858
+3
+10 10 10
+X  0.711088 0.547119 0.642339
+X  0.681798 0.727863 0.601114
+X  0.645571 0.397697 0.353195
+3
+10 10 10
+X  0.189713 0.559672 0.605156
+X  0.328573 0.368705 0.261656
+X  0.207217 0.00907761 0.478987
+3
+10 10 10
+X  0.23701 0.144084 0.72196
+X  0.245583 0.791513 0.612046
+X  0.0323497 0.333593 0.291569
+3
+10 10 10
+X  0.17691 0.618806 0.0986827
+X  0.689768 0.329894 0.645801
+X  0.332107 0.0116926 0.373665
+3
+10 10 10
+X  0.933221 0.657264 0.771361
+X  0.286416 0.846977 0.331033
+X  0.891572 0.17555 0.699738
+3
+10 10 10
+X  0.153227 0.382767 0.708816
+X  0.632214 0.619777 0.8529
+X  0.354174 0.865361 0.644413
+3
+10 10 10
+X  0.96622 0.89771 0.978006
+X  0.257789 0.0746203 0.596812
+X  0.356471 0.764388 0.926707
+3
+10 10 10
+X  0.00227268 0.0964953 0.938399
+X  0.375937 0.0297167 0.595663
+X  0.147299 0.316133 0.44264
+3
+10 10 10
+X  0.478332 0.207704 0.61819
+X  0.17807 0.360932 0.000956713
+X  0.886886 0.993146 0.620734
+3
+10 10 10
+X  0.739786 0.34732 0.486095
+X  0.384199 0.31354 0.383805
+X  0.362205 0.571328 0.458426
+3
+10 10 10
+X  0.959017 0.9278 0.222814
+X  0.885723 0.930072 0.319309
+X  0.824122 0.30601 0.349026
+3
+10 10 10
+X  0.419785 0.453309 0.665159
+X  0.862425 0.93164 0.872863
+X  0.480615 0.10971 0.233795
+3
+10 10 10
+X  0.481572 0.996596 0.226941
+X  0.102306 0.736382 0.57426
+X  0.588401 0.12058 0.8878
+3
+10 10 10
+X  0.972206 0.482785 0.459128
+X  0.430632 0.441802 0.386928
+X  0.653445 0.327525 0.317
+3
+10 10 10
+X  0.972754 0.151647 0.62301
+X  0.32178 0.571433 0.0763186
+X  0.986939 0.433858 0.00795897
+3
+10 10 10
+X  0.859802 0.914473 0.117669
+X  0.0935964 0.396045 0.114265
+X  0.320537 0.498351 0.850647
+3
+10 10 10
+X  0.894797 0.0867517 0.971227
+X  0.782597 0.0589577 0.454012
+X  0.241726 0.489589 0.895813
+3
+10 10 10
+X  0.628654 0.143034 0.223338
+X  0.945654 0.115789 0.374985
+X  0.568665 0.437569 0.946418
+3
+10 10 10
+X  0.644983 0.424507 0.380276
+X  0.652942 0.284309 0.294749
+X  0.770611 0.377905 0.690794
+3
+10 10 10
+X  0.884877 0.698442 0.189145
+X  0.735523 0.59324 0.275897
+X  0.70675 0.375837 0.334854
+3
+10 10 10
+X  0.160762 0.617563 0.824444
+X  0.0565758 0.246217 0.967478
+X  0.279914 0.191871 0.0832669
+3
+10 10 10
+X  0.654899 0.760536 0.520836
+X  0.601317 0.405519 0.945343
+X  0.981593 0.0584611 0.229652
+3
+10 10 10
+X  0.276343 0.829072 0.607557
+X  0.967137 0.713949 0.306
+X  0.156282 0.449472 0.899239
+3
+10 10 10
+X  0.432179 0.156223 0.275076
+X  0.767033 0.316985 0.892639
+X  0.591477 0.373561 0.138856
+3
+10 10 10
+X  0.558955 0.653475 0.330728
+X  0.642222 0.308374 0.0912634
+X  0.163057 0.909692 0.496782
+3
+10 10 10
+X  0.1084 0.891285 0.555243
+X  0.338052 0.167628 0.384316
+X  0.94561 0.134765 0.0982649
+3
+10 10 10
+X  0.251609 0.291046 0.547737
+X  0.150848 0.723225 0.70396
+X  0.425925 0.490258 0.0209454
+3
+10 10 10
+X  0.318564 0.0817345 0.394506
+X  0.45742 0.640689 0.0479816
+X  0.788148 0.282911 0.356356
+3
+10 10 10
+X  0.879411 0.445968 0.266048
+X  0.376193 0.554369 0.157333
+X  0.931437 0.892421 0.324961
+3
+10 10 10
+X  0.315753 0.83803 0.459726
+X  0.414018 0.0896395 0.750772
+X  0.961755 0.240488 0.473997
+3
+10 10 10
+X  0.665715 0.666412 0.964255
+X  0.686661 0.984976 0.0459892
+X  0.0811671 0.442396 0.686678
+3
+10 10 10
+X  0.129149 0.230544 0.969589
+X  0.485505 0.109955 0.415558
+X  0.751553 0.486148 0.969926
+3
+10 10 10
+X  0.908886 0.417585 0.862347
+X  0.233847 0.733338 0.700378
+X  0.693572 0.147356 0.790017
+3
+10 10 10
+X  0.444344 0.109111 0.0305051
+X  0.918341 0.774826 0.696918
+X  0.882596 0.461486 0.681894
+3
+10 10 10
+X  0.928585 0.542654 0.12429
+X  0.615263 0.671802 0.354834
+X  0.584853 0.157307 0.464789
+3
+10 10 10
+X  0.000410601 0.90886 0.950937
+X  0.970337 0.817745 0.368523
+X  0.832684 0.0515924 0.101861
+3
+10 10 10
+X  0.533062 0.745165 0.249216
+X  0.323079 0.189509 0.358327
+X  0.353584 0.10785 0.133153
+3
+10 10 10
+X  0.0505019 0.990446 0.594639
+X  0.732396 0.919031 0.137293
+X  0.856686 0.534294 0.809095
+3
+10 10 10
+X  0.21152 0.119147 0.966402
+X  0.676309 0.119558 0.875261
+X  0.627247 0.0898948 0.693007
+3
+10 10 10
+X  0.995769 0.922579 0.744599
+X  0.0976298 0.455641 0.489764
+X  0.346846 0.77872 0.679273
+3
+10 10 10
+X  0.705173 0.132305 0.787123
+X  0.838325 0.182807 0.77757
+X  0.432964 0.915202 0.6966
+3
+10 10 10
+X  0.570257 0.771888 0.230895
+X  0.379351 0.983408 0.350042
+X  0.345753 0.659718 0.4696
+3
+10 10 10
+X  0.221014 0.286964 0.559494
+X  0.914021 0.282733 0.482073
+X  0.65862 0.380363 0.937715
+3
+10 10 10
+X  0.148384 0.727209 0.716435
+X  0.827658 0.432382 0.848739
+X  0.614781 0.270707 0.031546
+3
+10 10 10
+X  0.392351 0.703671 0.946748
+X  0.0889511 0.273928 0.718636
+X  0.319846 0.65328 0.702045
+3
+10 10 10
+X  0.669888 0.999033 0.361762
+X  0.139488 0.220047 0.648727
+X  0.698982 0.134069 0.93146
+3
+10 10 10
+X  0.181056 0.792689 0.311823
+X  0.11877 0.941074 0.0390324
+X  0.835205 0.768731 0.471414
+3
+10 10 10
+X  0.683944 0.383512 0.742122
+X  0.71549 0.775863 0.445793
+X  0.662239 0.864814 0.719721
+3
+10 10 10
+X  0.380875 0.18466 0.373001
+X  0.0829198 0.854548 0.372034
+X  0.444682 0.994035 0.592081
+3
+10 10 10
+X  0.0934087 0.693017 0.72615
+X  0.0248686 0.874073 0.518839
+X  0.336692 0.992843 0.459913
+3
+10 10 10
+X  0.375724 0.828048 0.228644
+X  0.847139 0.511992 0.612156
+X  0.58926 0.227483 0.388019
+3
+10 10 10
+X  0.0350534 0.889721 0.252833
+X  0.754775 0.270596 0.437493
+X  0.127776 0.353516 0.292041
+3
+10 10 10
+X  0.49981 0.798198 0.286077
+X  0.0918911 0.891607 0.979094
+X  0.818041 0.916476 0.853167
+3
+10 10 10
+X  0.33688 0.253167 0.84601
+X  0.796793 0.628892 0.674058
+X  0.0254371 0.47603 0.18605
+3
+10 10 10
+X  0.637593 0.0652907 0.413533
+X  0.0256125 0.100344 0.303254
+X  0.278446 0.855119 0.573851
+3
+10 10 10
+X  0.715939 0.982895 0.927367
+X  0.00798011 0.482704 0.725565
+X  0.294057 0.574596 0.617172
+3
+10 10 10
+X  0.273151 0.392637 0.533647
+X  0.126318 0.729517 0.786815
+X  0.972328 0.52631 0.415707
+3
+10 10 10
+X  0.646386 0.551747 0.891737
+X  0.832436 0.189341 0.957028
+X  0.245969 0.214953 0.0573717
+3
+10 10 10
+X  0.549224 0.493399 0.91249
+X  0.123074 0.209338 0.895385
+X  0.0504407 0.217318 0.378089
+3
+10 10 10
+X  0.776006 0.511375 0.952685
+X  0.393178 0.784525 0.345322
+X  0.926825 0.910843 0.0748388
+3
+10 10 10
+X  0.71364 0.883171 0.601149
+X  0.129347 0.529557 0.152896
+X  0.0210835 0.361993 0.342237
+3
+10 10 10
+X  0.978111 0.607963 0.55719
+X  0.0354828 0.157186 0.0505891
+X  0.947973 0.28026 0.259927
+3
+10 10 10
+X  0.843358 0.330701 0.477245
+X  0.221448 0.106706 0.98862
+X  0.174133 0.499884 0.773145
+3
+10 10 10
+X  0.519454 0.426709 0.683988
+X  0.594293 0.140349 0.56716
+X  0.195442 0.269696 0.0967167
+3
+10 10 10
+X  0.348338 0.290779 0.45871
+X  0.690575 0.26889 0.0666728
+X  0.247766 0.304373 0.223859
+3
+10 10 10
+X  0.298355 0.252346 0.504119
+X  0.558282 0.0957045 0.83482
+X  0.0355268 0.317152 0.941527
+3
+10 10 10
+X  0.0241466 0.491285 0.441411
+X  0.797292 0.0107392 0.86812
+X  0.48128 0.605032 0.00846868
+3
+10 10 10
+X  0.0484399 0.800474 0.278164
+X  0.145157 0.148813 0.568943
+X  0.603867 0.839388 0.837833
+3
+10 10 10
+X  0.67054 0.0871539 0.142206
+X  0.894398 0.385509 0.394553
+X  0.398518 0.94379 0.490257
+3
+10 10 10
+X  0.233338 0.979317 0.807409
+X  0.174864 0.00346381 0.298694
+X  0.616275 0.800756 0.309433
+3
+10 10 10
+X  0.484394 0.282036 0.914465
+X  0.492863 0.330476 0.71494
+X  0.771027 0.475632 0.863753
+3
+10 10 10
+X  0.339971 0.0794991 0.703141
+X  0.177804 0.750039 0.790295
+X  0.320011 0.644437 0.175803
+3
+10 10 10
+X  0.714563 0.0429547 0.119594
+X  0.20482 0.276292 0.098911
+X  0.0122294 0.451157 0.102375
+3
+10 10 10
+X  0.310923 0.0674315 0.90313
+X  0.620357 0.551826 0.185166
+X  0.534822 0.0446891 0.515642
+3
+10 10 10
+X  0.249762 0.815716 0.991274
+X  0.113514 0.155687 0.0707733
+X  0.816655 0.333491 0.820812
+3
+10 10 10
+X  0.60695 0.653502 0.465249
+X  0.782753 0.368065 0.508204
+X  0.902347 0.572885 0.784496
+3
+10 10 10
+X  0.00125782 0.585115 0.235653
+X  0.103633 0.896038 0.303084
+X  0.00676295 0.516395 0.85491
+3
+10 10 10
+X  0.191929 0.0512168 0.899599
+X  0.707571 0.300979 0.715316
+X  0.698845 0.414493 0.871003
+3
+10 10 10
+X  0.769619 0.231148 0.204495
+X  0.590431 0.838098 0.857997
+X  0.0556795 0.620851 0.226062
+3
+10 10 10
+X  0.563883 0.523198 0.798947
+X  0.348379 0.524456 0.384062
+X  0.584032 0.628089 0.2801
+3
+10 10 10
+X  0.887117 0.634851 0.796494
+X  0.742027 0.826781 0.847711
+X  0.641626 0.534352 0.14869
+3
+10 10 10
+X  0.356942 0.233197 0.563183
+X  0.227945 0.00281557 0.794331
+X  0.43244 0.593246 0.632429
+3
+10 10 10
+X  0.290436 0.648926 0.25328
+X  0.516498 0.212809 0.776479
+X  0.315445 0.561188 0.300935
+3
+10 10 10
+X  0.699507 0.145221 0.929023
+X  0.979606 0.0323375 0.563875
+X  0.7761 0.774365 0.390655
+3
+10 10 10
+X  0.623811 0.415991 0.925007
+X  0.772501 0.772933 0.158204
+X  0.335684 0.000878856 0.161019
+3
+10 10 10
+X  0.130015 0.433319 0.754266
+X  0.762444 0.723755 0.403191
+X  0.0157245 0.240253 0.616
+3
+10 10 10
+X  0.792203 0.555698 0.177188
+X  0.0931377 0.255205 0.322409
+X  0.0221609 0.234811 0.354747
+3
+10 10 10
+X  0.586035 0.0109114 0.129111
+X  0.976691 0.634723 0.545102
+X  0.901698 0.407224 0.318036
+3
+10 10 10
+X  0.0599016 0.742907 0.318915
+X  0.220921 0.872922 0.752233
+X  0.975187 0.635366 0.475989
+3
+10 10 10
+X  0.378378 0.651091 0.716242
+X  0.994378 0.443294 0.271941
+X  0.171566 0.536432 0.527146
+3
+10 10 10
+X  0.493976 0.558593 0.761957
+X  0.848722 0.144628 0.772868
+X  0.977834 0.121319 0.407591
+3
+10 10 10
+X  0.522936 0.0230164 0.814815
+X  0.840972 0.082918 0.557722
+X  0.159886 0.303839 0.430644
+3
+10 10 10
+X  0.912119 0.279026 0.0660107
+X  0.388108 0.657403 0.717102
+X  0.10435 0.651781 0.160395
+3
+10 10 10
+X  0.376291 0.823348 0.696827
+X  0.903437 0.317323 0.25542
+X  0.665394 0.166045 0.400048
+3
+10 10 10
+X  0.438262 0.143879 0.521366
+X  0.845853 0.666815 0.544383
+X  0.660668 0.507786 0.627301
+3
+10 10 10
+X  0.21839 0.667672 0.93114
+X  0.649034 0.579792 0.210166
+X  0.715045 0.9679 0.867569
+3
+10 10 10
+X  0.432147 0.0722504 0.51935
+X  0.592542 0.448542 0.342698
+X  0.289369 0.351978 0.660021
+3
+10 10 10
+X  0.544789 0.0173722 0.826066
+X  0.944836 0.455634 0.969945
+X  0.466203 0.301487 0.63676
+3
+10 10 10
+X  0.0105854 0.962155 0.144546
+X  0.637886 0.180545 0.812218
+X  0.569026 0.829579 0.39201
+3
+10 10 10
+X  0.779191 0.544624 0.35991
+X  0.64676 0.976771 0.43216
+X  0.166111 0.569313 0.880702
+3
+10 10 10
+X  0.508808 0.858682 0.23268
+X  0.168829 0.403471 0.250052
+X  0.994895 0.348307 0.705687
+3
+10 10 10
+X  0.96484 0.81451 0.00717383
+X  0.601599 0.825095 0.969329
+X  0.746145 0.462981 0.149874
+3
+10 10 10
+X  0.558363 0.0320072 0.979453
+X  0.950373 0.811199 0.524077
+X  0.310283 0.457959 0.500848
+3
+10 10 10
+X  0.742443 0.62407 0.0701613
+X  0.623144 0.132878 0.928843
+X  0.855825 0.301707 0.332314
+3
+10 10 10
+X  0.105877 0.296602 0.680621
+X  0.811564 0.261442 0.495131
+X  0.818737 0.863042 0.320226
+3
+10 10 10
+X  0.788066 0.609187 0.783207
+X  0.93794 0.16755 0.815214
+X  0.917393 0.117923 0.626413
+3
+10 10 10
+X  0.441471 0.428205 0.0843719
+X  0.942319 0.170648 0.708442
+X  0.0124802 0.793793 0.84132
+3
+10 10 10
+X  0.941324 0.649617 0.143027
+X  0.273638 0.755494 0.439629
+X  0.954259 0.567058 0.701071
+3
+10 10 10
+X  0.44939 0.385795 0.564112
+X  0.769615 0.173862 0.173299
+X  0.552822 0.111802 0.340849
+3
+10 10 10
+X  0.368037 0.0291947 0.458772
+X  0.994449 0.470665 0.886977
+X  0.0788214 0.412984 0.0576252
+3
+10 10 10
+X  0.787263 0.425464 0.851418
+X  0.628583 0.366788 0.501035
+X  0.771609 0.640426 0.256529
+3
+10 10 10
+X  0.211238 0.594684 0.823587
+X  0.912309 0.0440741 0.209382
+X  0.476422 0.81369 0.383244
+3
+10 10 10
+X  0.649721 0.366512 0.495046
+X  0.99057 0.734549 0.52424
+X  0.449341 0.728998 0.994905
+3
+10 10 10
+X  0.336318 0.80782 0.40789
+X  0.393943 0.595083 0.833354
+X  0.245361 0.223665 0.200142
+3
+10 10 10
+X  0.746396 0.995275 0.840567
+X  0.00292566 0.206513 0.435252
+X  0.826513 0.118822 0.479326
+3
+10 10 10
+X  0.0358954 0.595243 0.293015
+X  0.419139 0.244964 0.659527
+X  0.914185 0.235534 0.394076
+3
+10 10 10
+X  0.438425 0.684875 0.123074
+X  0.433331 0.0211931 0.930894
+X  0.84122 0.415137 0.525976
+3
+10 10 10
+X  0.674574 0.660498 0.749642
+X  0.874716 0.406894 0.744916
+X  0.715283 0.40982 0.951429
+3
+10 10 10
+X  0.150535 0.236333 0.0702509
+X  0.629861 0.272228 0.665494
+X  0.922876 0.691367 0.910458
+3
+10 10 10
+X  0.582403 0.605552 0.145992
+X  0.976479 0.0439776 0.830867
+X  0.0995537 0.477308 0.85206
+3
+10 10 10
+X  0.0304474 0.318528 0.267197
+X  0.556424 0.993102 0.927695
+X  0.306065 0.867818 0.334589
+3
+10 10 10
+X  0.0509814 0.583101 0.744408
+X  0.00241037 0.733636 0.980741
+X  0.0726613 0.363496 0.252969
+3
+10 10 10
+X  0.738156 0.286372 0.944336
+X  0.648614 0.868776 0.549889
+X  0.794606 0.845255 0.593867
+3
+10 10 10
+X  0.625473 0.944809 0.0711748
+X  0.477534 0.975256 0.389703
+X  0.74473 0.53168 0.382806
+3
+10 10 10
+X  0.672425 0.837745 0.250624
+X  0.00701368 0.888727 0.833725
+X  0.751422 0.891137 0.567361
+3
+10 10 10
+X  0.732163 0.963799 0.930858
+X  0.985132 0.701954 0.21723
+X  0.929469 0.350568 0.0860059
+3
+10 10 10
+X  0.479358 0.145175 0.931261
+X  0.073224 0.770648 0.87607
+X  0.144399 0.248182 0.851327
+3
+10 10 10
+X  0.534102 0.992912 0.383007
+X  0.916908 0.665337 0.220752
+X  0.167532 0.672351 0.109479
+3
+10 10 10
+X  0.00125721 0.423773 0.000616314
+X  0.568618 0.155936 0.964415
+X  0.499476 0.141068 0.666369
+3
+10 10 10
+X  0.716706 0.0705368 0.0169372
+X  0.802712 0.549894 0.162112
+X  0.733973 0.623118 0.93276
+3
+10 10 10
+X  0.610043 0.767517 0.180941
+X  0.46137 0.301619 0.173854
+X  0.844377 0.218527 0.839191
+3
+10 10 10
+X  0.0651288 0.386059 0.511541
+X  0.174608 0.387317 0.935314
+X  0.175224 0.955935 0.0912503
+3
+10 10 10
+X  0.139639 0.455411 0.232318
+X  0.806008 0.172117 0.302855
+X  0.822945 0.974829 0.85275
+3
+10 10 10
+X  0.985057 0.708802 0.475868
+X  0.917817 0.318845 0.243385
+X  0.0987583 0.780215 0.545005
+3
+10 10 10
+X  0.272612 0.624592 0.763532
+X  0.111803 0.68972 0.149591
+X  0.623344 0.864328 0.536908
+3
+10 10 10
+X  0.558658 0.0395525 0.492843
+X  0.649909 0.179192 0.948254
+X  0.882227 0.9852 0.120371
+3
+10 10 10
+X  0.185082 0.808145 0.0951994
+X  0.0378321 0.793202 0.804001
+X  0.5137 0.711019 0.122846
+3
+10 10 10
+X  0.757085 0.809777 0.903061
+X  0.30209 0.0823889 0.527653
+X  0.0656218 0.194191 0.217373
+3
+10 10 10
+X  0.215213 0.817535 0.0817017
+X  0.752121 0.376194 0.121254
+X  0.244964 0.0261023 0.300446
+3
+10 10 10
+X  0.193217 0.908329 0.285645
+X  0.313588 0.0934119 0.0937902
+X  0.408787 0.131244 0.886992
+3
+10 10 10
+X  0.212788 0.644944 0.598011
+X  0.335635 0.402029 0.407788
+X  0.238696 0.704119 0.490177
+3
+10 10 10
+X  0.766349 0.769741 0.684368
+X  0.983723 0.984954 0.501904
+X  0.0654244 0.737075 0.878097
+3
+10 10 10
+X  0.186679 0.982038 0.9042
+X  0.487124 0.175256 0.812529
+X  0.77277 0.488844 0.905941
+3
+10 10 10
+X  0.86656 0.897631 0.037185
+X  0.753552 0.110419 0.682129
+X  0.351563 0.446054 0.0841583
+3
+10 10 10
+X  0.759351 0.68475 0.788277
+X  0.249527 0.4511 0.558018
+X  0.933895 0.434822 0.542972
+3
+10 10 10
+X  0.435799 0.500247 0.280047
+X  0.313896 0.686925 0.262086
+X  0.218096 0.17405 0.437341
+3
+10 10 10
+X  0.0306254 0.94682 0.926185
+X  0.936566 0.81338 0.823816
+X  0.973751 0.566932 0.934235
+3
+10 10 10
+X  0.655881 0.918494 0.380289
+X  0.740039 0.677845 0.0650395
+X  0.528316 0.927372 0.516139
+3
+10 10 10
+X  0.0863347 0.861267 0.950961
+X  0.629307 0.297067 0.451208
+X  0.909354 0.610963 0.138133
+3
+10 10 10
+X  0.17144 0.829059 0.312183
+X  0.608781 0.859685 0.259002
+X  0.534966 0.796251 0.0723815
+3
+10 10 10
+X  0.358782 0.770003 0.639313
+X  0.293017 0.425883 0.557807
+X  0.673306 0.165922 0.235652
+3
+10 10 10
+X  0.738345 0.694238 0.163024
+X  0.254484 0.780573 0.0242916
+X  0.205445 0.40988 0.321358
+3
+10 10 10
+X  0.656653 0.319234 0.932321
+X  0.794786 0.490673 0.76138
+X  0.106969 0.0994544 0.621065
+3
+10 10 10
+X  0.365971 0.63442 0.417316
+X  0.438352 0.993202 0.187319
+X  0.0776651 0.286219 0.613202
+3
+10 10 10
+X  0.635472 0.959525 0.779124
+X  0.871125 0.69787 0.473362
+X  0.0341488 0.952354 0.253935
+3
+10 10 10
+X  0.0584404 0.1578 0.663814
+X  0.379799 0.814453 0.983048
+X  0.31212 0.609239 0.473722
+3
+10 10 10
+X  0.0735002 0.716208 0.573176
+X  0.694565 0.0821781 0.207597
+X  0.111881 0.52053 0.200799
+3
+10 10 10
+X  0.2992 0.598195 0.487018
+X  0.912402 0.233668 0.446542
+X  0.691525 0.104792 0.144412
+3
+10 10 10
+X  0.164887 0.138941 0.0967668
+X  0.418822 0.197382 0.254567
+X  0.0826362 0.57718 0.0690197
+3
+10 10 10
+X  0.0656846 0.8893 0.678259
+X  0.539406 0.9628 0.394466
+X  0.112583 0.657366 0.476645
+3
+10 10 10
+X  0.320179 0.769247 0.997175
+X  0.520978 0.0684469 0.59537
+X  0.00799569 0.980849 0.829038
+3
+10 10 10
+X  0.454538 0.672374 0.93383
+X  0.59895 0.837261 0.0727716
+X  0.695717 0.256083 0.270153
+3
+10 10 10
+X  0.950284 0.338719 0.847334
+X  0.0193035 0.404403 0.736634
+X  0.697562 0.94381 0.699434
+3
+10 10 10
+X  0.0920286 0.0563925 0.3568
+X  0.568673 0.376572 0.126047
+X  0.565848 0.89755 0.194494
+3
+10 10 10
+X  0.161218 0.905546 0.175342
+X  0.990256 0.360084 0.847716
+X  0.924086 0.959034 0.684977
+3
+10 10 10
+X  0.996858 0.654751 0.94106
+X  0.267011 0.605035 0.279778
+X  0.114345 0.624338 0.684182
+3
+10 10 10
+X  0.850978 0.321901 0.627992
+X  0.550413 0.413929 0.684384
+X  0.907212 0.982602 0.0609558
+3
+10 10 10
+X  0.0332592 0.54845 0.958506
+X  0.227753 0.709668 0.864051
+X  0.403095 0.699924 0.224135
+3
+10 10 10
+X  0.250811 0.62401 0.183169
+X  0.935788 0.620868 0.83792
+X  0.876848 0.887879 0.442955
+3
+10 10 10
+X  0.156626 0.00222359 0.0672935
+X  0.840808 0.853202 0.389194
+X  0.468799 0.403615 0.803123
+3
+10 10 10
+X  0.153183 0.310827 0.785726
+X  0.214139 0.344086 0.334176
+X  0.172645 0.571839 0.0438439
+3
+10 10 10
+X  0.0366962 0.974934 0.743768
+X  0.260831 0.225746 0.367778
+X  0.444 0.161534 0.988646
+3
+10 10 10
+X  0.28192 0.0383814 0.876525
+X  0.724876 0.195007 0.878748
+X  0.792169 0.0358152 0.73195
+3
+10 10 10
+X  0.181363 0.504614 0.135565
+X  0.984486 0.657798 0.446392
+X  0.770212 0.871937 0.790478
+3
+10 10 10
+X  0.104388 0.0445814 0.362317
+X  0.148232 0.0812776 0.337251
+X  0.891999 0.342109 0.562997
+3
+10 10 10
+X  0.259777 0.786109 0.724531
+X  0.248423 0.0680296 0.762912
+X  0.124948 0.792905 0.95792
+3
+10 10 10
+X  0.00369629 0.585074 0.993735
+X  0.735647 0.766437 0.498349
+X  0.871212 0.750923 0.156147
+3
+10 10 10
+X  0.317604 0.521135 0.0280833
+X  0.108082 0.625523 0.0726647
+X  0.470399 0.773755 0.153942
+3
+10 10 10
+X  0.80765 0.665754 0.496051
+X  0.370647 0.925532 0.28216
+X  0.095178 0.173955 0.35019
+3
+10 10 10
+X  0.85809 0.298903 0.143095
+X  0.81601 0.302599 0.728169
+X  0.809744 0.0382457 0.494606
+3
+10 10 10
+X  0.308093 0.909457 0.24553
+X  0.46424 0.227061 0.766665
+X  0.492323 0.335143 0.392188
+3
+10 10 10
+X  0.564988 0.805541 0.165943
+X  0.71893 0.613192 0.831697
+X  0.214982 0.983839 0.757229
+3
+10 10 10
+X  0.497142 0.0790171 0.931183
+X  0.847332 0.937107 0.230086
+X  0.990427 0.753117 0.532685
+3
+10 10 10
+X  0.718596 0.562861 0.570931
+X  0.213202 0.870954 0.480388
+X  0.458732 0.335194 0.707449
+3
+10 10 10
+X  0.225397 0.827517 0.0425917
+X  0.617585 0.392505 0.848133
+X  0.783528 0.111436 0.461325
+3
+10 10 10
+X  0.615225 0.326417 0.445164
+X  0.372454 0.823559 0.524181
+X  0.303637 0.670891 0.461288
+3
+10 10 10
+X  0.533723 0.661318 0.214405
+X  0.0664086 0.379914 0.777266
+X  0.63734 0.593116 0.64822
+3
+10 10 10
+X  0.117728 0.0518483 0.983414
+X  0.825177 0.277245 0.810932
+X  0.867769 0.894831 0.203437
+3
+10 10 10
+X  0.715902 0.678359 0.314873
+X  0.177227 0.293584 0.64129
+X  0.622391 0.666037 0.46485
+3
+10 10 10
+X  0.146572 0.969675 0.135741
+X  0.60786 0.503398 0.797059
+X  0.822265 0.569807 0.176973
+3
+10 10 10
+X  0.599531 0.207146 0.770089
+X  0.247751 0.324874 0.821938
+X  0.231166 0.150051 0.099183
+3
+10 10 10
+X  0.0420973 0.0178198 0.994014
+X  0.245534 0.733722 0.672372
+X  0.560407 0.910948 0.965956
+3
+10 10 10
+X  0.201698 0.533339 0.631993
+X  0.666547 0.679911 0.601668
+X  0.802288 0.287771 0.105066
+3
+10 10 10
+X  0.599347 0.110036 0.674873
+X  0.77632 0.709567 0.882019
+X  0.546409 0.957318 0.206893
+3
+10 10 10
+X  0.368347 0.188484 0.356944
+X  0.46753 0.230581 0.374764
+X  0.461543 0.476116 0.108485
+3
+10 10 10
+X  0.133915 0.0365229 0.0194337
+X  0.0998714 0.238221 0.552773
+X  0.731865 0.904768 0.232684
+3
+10 10 10
+X  0.333533 0.707056 0.520455
+X  0.438599 0.306403 0.630491
+X  0.113471 0.0827224 0.340058
+3
+10 10 10
+X  0.99549 0.629132 0.297376
+X  0.202383 0.997478 0.48586
+X  0.559327 0.465008 0.716441
+3
+10 10 10
+X  0.934091 0.926551 0.192557
+X  0.042576 0.0604668 0.229079
+X  0.0620097 0.160338 0.4673
+3
+10 10 10
+X  0.614782 0.892203 0.372068
+X  0.847466 0.225736 0.0791234
+X  0.367921 0.664335 0.385526
+3
+10 10 10
+X  0.998412 0.777806 0.468248
+X  0.33847 0.773296 0.09738
+X  0.635846 0.975679 0.0948584
+3
+10 10 10
+X  0.121706 0.535006 0.559866
+X  0.838147 0.469097 0.486418
+X  0.0307031 0.511673 0.546885
+3
+10 10 10
+X  0.259782 0.573683 0.707223
+X  0.727082 0.188465 0.599426
+X  0.0991501 0.0359314 0.825162
+3
+10 10 10
+X  0.178274 0.403852 0.489496
+X  0.5638 0.402264 0.267302
+X  0.032048 0.740733 0.0405986
+3
+10 10 10
+X  0.129428 0.376579 0.016278
+X  0.224286 0.498285 0.551284
+X  0.784153 0.336431 0.0203813
+3
+10 10 10
+X  0.270571 0.367134 0.532054
+X  0.817455 0.626917 0.105737
+X  0.524678 0.353999 0.294202
+3
+10 10 10
+X  0.124104 0.453149 0.330134
+X  0.949265 0.631423 0.733986
+X  0.438761 0.195222 0.13625
+3
+10 10 10
+X  0.706064 0.22727 0.876984
+X  0.746662 0.356698 0.253563
+X  0.76294 0.580985 0.751847
+3
+10 10 10
+X  0.314225 0.365138 0.0882787
+X  0.334606 0.635708 0.455413
+X  0.86666 0.453163 0.08233
+3
+10 10 10
+X  0.972397 0.977841 0.436329
+X  0.2666 0.101945 0.889479
+X  0.596733 0.0512101 0.520902
+3
+10 10 10
+X  0.330719 0.489971 0.716124
+X  0.466969 0.196035 0.943395
+X  0.343953 0.942697 0.300093
+3
+10 10 10
+X  0.597516 0.705638 0.881078
+X  0.349363 0.019862 0.246216
+X  0.437642 0.354468 0.881924
+3
+10 10 10
+X  0.893055 0.221128 0.335087
+X  0.975385 0.193525 0.312929
+X  0.411714 0.460125 0.414874
+3
+10 10 10
+X  0.301193 0.0568581 0.466084
+X  0.822095 0.387577 0.956055
+X  0.538219 0.854547 0.15209
+3
+10 10 10
+X  0.481613 0.1985 0.0947876
+X  0.781706 0.796015 0.800425
+X  0.662784 0.145378 0.820287
+3
+10 10 10
+X  0.909 0.58302 0.174755
+X  0.790924 0.476075 0.395883
+X  0.126011 0.451459 0.589408
+3
+10 10 10
+X  0.43894 0.863174 0.049533
+X  0.853813 0.164367 0.106391
+X  0.319897 0.986461 0.493969
+3
+10 10 10
+X  0.275952 0.52468 0.348515
+X  0.428043 0.00629338 0.547015
+X  0.52283 0.788 0.34303
+3
+10 10 10
+X  0.323255 0.450784 0.488408
+X  0.143543 0.359784 0.0714281
+X  0.318298 0.150708 0.547503
+3
+10 10 10
+X  0.714181 0.276719 0.998962
+X  0.303589 0.715658 0.862136
+X  0.353122 0.569472 0.0265022
+3
+10 10 10
+X  0.459513 0.889369 0.0129633
+X  0.953481 0.165321 0.537643
+X  0.301997 0.593364 0.543937
+3
+10 10 10
+X  0.849012 0.116194 0.331937
+X  0.192042 0.439449 0.782721
+X  0.68045 0.582992 0.142505
+3
+10 10 10
+X  0.751878 0.901289 0.293212
+X  0.299381 0.61547 0.569931
+X  0.298343 0.919059 0.285589
+3
+10 10 10
+X  0.160479 0.272181 0.855061
+X  0.186981 0.731694 0.744429
+X  0.199944 0.685175 0.90975
+3
+10 10 10
+X  0.737588 0.987172 0.503114
+X  0.281524 0.836184 0.619308
+X  0.613461 0.0282257 0.0587572
+3
+10 10 10
+X  0.396182 0.708676 0.641749
+X  0.538686 0.460554 0.543038
+X  0.831899 0.759935 0.158508
+3
+10 10 10
+X  0.40183 0.0582786 0.0775673
+X  0.687419 0.218758 0.349748
+X  0.542479 0.405739 0.0814416
+3
+10 10 10
+X  0.286909 0.605683 0.766617
+X  0.196659 0.343271 0.753789
+X  0.699773 0.624795 0.589973
+3
+10 10 10
+X  0.319081 0.238256 0.618198
+X  0.377838 0.634438 0.326874
+X  0.0195871 0.173124 0.787428
+3
+10 10 10
+X  0.562626 0.00502245 0.547364
+X  0.721134 0.406852 0.605642
+X  0.798701 0.0942707 0.8244
+3
+10 10 10
+X  0.148449 0.63675 0.230139
+X  0.229891 0.923659 0.835822
+X  0.996508 0.120318 0.179092
+3
+10 10 10
+X  0.750297 0.820091 0.803887
+X  0.340269 0.139171 0.0421432
+X  0.958467 0.517009 0.676581
+3
+10 10 10
+X  0.285341 0.536597 0.849705
+X  0.0727699 0.0992222 0.854727
+X  0.620134 0.820356 0.261579
+3
+10 10 10
+X  0.225776 0.619058 0.35585
+X  0.0501762 0.767507 0.9926
+X  0.280315 0.997398 0.916258
+3
+10 10 10
+X  0.116136 0.993906 0.0365761
+X  0.295228 0.744202 0.856667
+X  0.0991157 0.0844715 0.995838
+3
+10 10 10
+X  0.141259 0.0429388 0.512847
+X  0.81784 0.32828 0.0494439
+X  0.667544 0.40105 0.148666
+3
+10 10 10
+X  0.522272 0.0211838 0.969022
+X  0.783851 0.24696 0.58808
+X  0.1397 0.297136 0.355587
+3
+10 10 10
+X  0.1323 0.577451 0.352985
+X  0.0485586 0.693587 0.346891
+X  0.0851347 0.988816 0.0910929
+3
+10 10 10
+X  0.941801 0.0879312 0.175564
+X  0.937639 0.22919 0.218503
+X  0.450487 0.0470298 0.546783
+3
+10 10 10
+X  0.49993 0.714574 0.947833
+X  0.648596 0.236846 0.969017
+X  0.617619 0.0206964 0.215977
+3
+10 10 10
+X  0.205699 0.160397 0.513113
+X  0.561286 0.292697 0.0905641
+X  0.91427 0.341256 0.784151
+3
+10 10 10
+X  0.261161 0.42639 0.772967
+X  0.352254 0.368191 0.860898
+X  0.527818 0.305831 0.0900882
+3
+10 10 10
+X  0.746321 0.756317 0.137118
+X  0.293104 0.256248 0.851692
+X  0.240938 0.904844 0.088538
+3
+10 10 10
+X  0.209955 0.522463 0.109234
+X  0.425932 0.728161 0.269631
+X  0.939045 0.289447 0.562328
+3
+10 10 10
+X  0.0296093 0.203717 0.903584
+X  0.813761 0.464878 0.329974
+X  0.586727 0.817132 0.698165
+3
+10 10 10
+X  0.447625 0.34495 0.00399594
+X  0.537714 0.0912713 0.760313
+X  0.674832 0.384376 0.0165607
+3
+10 10 10
+X  0.526524 0.625314 0.921405
+X  0.615062 0.835268 0.443867
+X  0.724296 0.2612 0.172029
+3
+10 10 10
+X  0.993927 0.200246 0.461476
+X  0.556255 0.229855 0.665193
+X  0.459839 0.0436154 0.130072
+3
+10 10 10
+X  0.789813 0.630343 0.947204
+X  0.487978 0.0779682 0.292154
+X  0.491974 0.615682 0.383425
+3
+10 10 10
+X  0.252287 0.290513 0.767801
+X  0.268848 0.817037 0.393114
+X  0.190252 0.432099 0.228383
+3
+10 10 10
+X  0.63412 0.156395 0.489583
+X  0.806149 0.150322 0.689829
+X  0.267625 0.706577 0.919683
+3
+10 10 10
+X  0.932818 0.166416 0.963299
+X  0.0628894 0.956229 0.593642
+X  0.0100931 0.444206 0.67161
+3
+10 10 10
+X  0.302247 0.93618 0.287292
+X  0.685672 0.188467 0.577805
+X  0.453473 0.457315 0.394842
+3
+10 10 10
+X  0.846587 0.647567 0.826941
+X  0.07497 0.281687 0.983336
+X  0.564553 0.0878351 0.133659
+3
+10 10 10
+X  0.254382 0.35546 0.840236
+X  0.174065 0.288277 0.00665221
+X  0.137364 0.351167 0.962881
+3
+10 10 10
+X  0.731006 0.36126 0.407087
+X  0.402615 0.663507 0.343268
+X  0.689907 0.349179 0.531735
+3
+10 10 10
+X  0.267712 0.802652 0.989049
+X  0.662554 0.649239 0.636616
+X  0.489495 0.724209 0.918303
+3
+10 10 10
+X  0.472832 0.288762 0.00613772
+X  0.60649 0.543144 0.361597
+X  0.446726 0.717209 0.649875
+3
+10 10 10
+X  0.453378 0.854573 0.00104169
+X  0.416259 0.585579 0.362302
+X  0.823347 0.988194 0.0258086
+3
+10 10 10
+X  0.166614 0.678101 0.374988
+X  0.698349 0.945813 0.177639
+X  0.687398 0.608368 0.826878
+3
+10 10 10
+X  0.324014 0.0978629 0.551088
+X  0.242317 0.570695 0.83985
+X  0.248455 0.177185 0.382994
+3
+10 10 10
+X  0.610052 0.623911 0.100203
+X  0.259927 0.0772893 0.954776
+X  0.260968 0.493549 0.540355
+3
+10 10 10
+X  0.62327 0.316895 0.528549
+X  0.649079 0.48351 0.20665
+X  0.0240662 0.181859 0.152464
+3
+10 10 10
+X  0.201706 0.869257 0.760831
+X  0.0285841 0.193271 0.858694
+X  0.579672 0.435588 0.429389
+3
+10 10 10
+X  0.419521 0.684042 0.606573
+X  0.802515 0.294094 0.230484
+X  0.902718 0.554021 0.307774
+3
+10 10 10
+X  0.857493 0.814989 0.801322
+X  0.397848 0.438259 0.118217
+X  0.926397 0.0873379 0.601727
+3
+10 10 10
+X  0.133047 0.111404 0.783586
+X  0.285511 0.31311 0.652842
+X  0.0463421 0.341694 0.846113
+3
+10 10 10
+X  0.905036 0.921365 0.281701
+X  0.334425 0.340887 0.965743
+X  0.940998 0.143402 0.259837
+3
+10 10 10
+X  0.171482 0.0461191 0.813858
+X  0.479256 0.903612 0.628847
+X  0.280578 0.30146 0.0671061
+3
+10 10 10
+X  0.398795 0.227857 0.154444
+X  0.000522443 0.360904 0.265848
+X  0.784108 0.646415 0.578958
+3
+10 10 10
+X  0.43695 0.692757 0.920652
+X  0.283063 0.597793 0.842017
+X  0.564764 0.932218 0.182904
+3
+10 10 10
+X  0.530507 0.873216 0.326305
+X  0.790344 0.0446988 0.372424
+X  0.604202 0.523955 0.276037
+3
+10 10 10
+X  0.233048 0.804533 0.577497
+X  0.300155 0.203328 0.805354
+X  0.454599 0.203851 0.166258
+3
+10 10 10
+X  0.720447 0.987959 0.812673
+X  0.299405 0.424909 0.505431
+X  0.220056 0.707972 0.103224
+3
+10 10 10
+X  0.0620732 0.272736 0.0354423
+X  0.244977 0.803242 0.908659
+X  0.571282 0.593586 0.953358
+3
+10 10 10
+X  0.943706 0.197788 0.477312
+X  0.219743 0.430836 0.281845
+X  0.79724 0.730991 0.485173
+3
+10 10 10
+X  0.602594 0.185589 0.689024
+X  0.768852 0.906036 0.676982
+X  0.581526 0.205441 0.101891
+3
+10 10 10
+X  0.0869565 0.425497 0.809863
+X  0.190181 0.48757 0.0825982
+X  0.225623 0.732547 0.885841
+3
+10 10 10
+X  0.134282 0.303829 0.479427
+X  0.0876391 0.247535 0.677214
+X  0.564951 0.467278 0.10805
+3
+10 10 10
+X  0.846796 0.264518 0.839041
+X  0.331969 0.867112 0.0246303
+X  0.0209929 0.635965 0.930666
+3
+10 10 10
+X  0.697975 0.21749 0.136107
+X  0.799866 0.304447 0.561603
+X  0.609728 0.494627 0.0491733
+3
+10 10 10
+X  0.692326 0.72025 0.78172
+X  0.578167 0.854532 0.0855488
+X  0.0575937 0.942171 0.333084
+3
+10 10 10
+X  0.734808 0.507122 0.800362
+X  0.842858 0.353919 0.0648805
+X  0.681899 0.685888 0.931993
+3
+10 10 10
+X  0.70653 0.706881 0.567957
+X  0.637196 0.404856 0.785448
+X  0.773303 0.204722 0.0898946
+3
+10 10 10
+X  0.334906 0.81445 0.584522
+X  0.38408 0.506776 0.304772
+X  0.1658 0.0849434 0.159304
+3
+10 10 10
+X  0.251348 0.142537 0.101475
+X  0.584432 0.877345 0.608598
+X  0.384795 0.720204 0.962517
+3
+10 10 10
+X  0.449675 0.402103 0.648405
+X  0.381668 0.108633 0.355285
+X  0.949625 0.745829 0.760141
+3
+10 10 10
+X  0.735073 0.519132 0.964863
+X  0.824967 0.854038 0.779313
+X  0.40949 0.238118 0.286089
+3
+10 10 10
+X  0.714262 0.403917 0.371033
+X  0.873566 0.655266 0.51357
+X  0.975042 0.239698 0.390915
+3
+10 10 10
+X  0.58364 0.624493 0.111119
+X  0.546156 0.0741684 0.513222
+X  0.194561 0.455836 0.621855
+3
+10 10 10
+X  0.549846 0.405461 0.367684
+X  0.309987 0.140534 0.886816
+X  0.27485 0.965502 0.740854
+3
+10 10 10
+X  0.054163 0.374991 0.978972
+X  0.340252 0.0892532 0.382889
+X  0.711285 0.96282 0.0381551
+3
+10 10 10
+X  0.224854 0.937861 0.277854
+X  0.615769 0.521501 0.902347
+X  0.726888 0.0676572 0.976515
+3
+10 10 10
+X  0.24011 0.262218 0.432352
+X  0.861965 0.812064 0.837813
+X  0.229649 0.122052 0.978347
+3
+10 10 10
+X  0.116464 0.396902 0.943849
+X  0.857318 0.451065 0.31884
+X  0.83629 0.791317 0.408093
+3
+10 10 10
+X  0.219179 0.502602 0.370913
+X  0.257334 0.727456 0.308774
+X  0.535188 0.343226 0.830275
+3
+10 10 10
+X  0.437534 0.0701137 0.897932
+X  0.41405 0.310224 0.16015
+X  0.846401 0.172189 0.972215
+3
+10 10 10
+X  0.684214 0.401837 0.0942665
+X  0.662561 0.518301 0.491168
+X  0.60641 0.37562 0.942233
+3
+10 10 10
+X  0.925251 0.211909 0.733551
+X  0.333344 0.431088 0.236152
+X  0.704257 0.688422 0.963609
+3
+10 10 10
+X  0.0130312 0.22361 0.306834
+X  0.843306 0.661144 0.376948
+X  0.741239 0.0751938 0.687172
+3
+10 10 10
+X  0.901389 0.921595 0.85936
+X  0.873604 0.605809 0.261198
+X  0.967871 0.26837 0.779499
+3
+10 10 10
+X  0.459039 0.874781 0.155119
+X  0.401273 0.800031 0.367028
+X  0.134823 0.133375 0.798116
+3
+10 10 10
+X  0.370976 0.837632 0.486538
+X  0.334584 0.850663 0.710148
+X  0.641419 0.69397 0.371292
+3
+10 10 10
+X  0.0183669 0.435209 0.446486
+X  0.705539 0.336598 0.368081
+X  0.564899 0.210202 0.97389
+3
+10 10 10
+X  0.826097 0.178073 0.242261
+X  0.605596 0.637112 0.117041
+X  0.760714 0.0383841 0.917072
+3
+10 10 10
+X  0.127742 0.173207 0.0504474
+X  0.925858 0.544183 0.88808
+X  0.412397 0.878767 0.738743
+3
+10 10 10
+X  0.122545 0.520186 0.432712
+X  0.493837 0.538553 0.867921
+X  0.940324 0.244092 0.204519
+3
+10 10 10
+X  0.308405 0.808991 0.414721
+X  0.282295 0.635088 0.592793
+X  0.524556 0.240683 0.229905
+3
+10 10 10
+X  0.641597 0.00139733 0.268289
+X  0.558669 0.129139 0.441496
+X  0.609117 0.0549977 0.985679
+3
+10 10 10
+X  0.497196 0.467394 0.864447
+X  0.235939 0.589939 0.384633
+X  0.668651 0.0837769 0.923186
+3
+10 10 10
+X  0.536572 0.0241007 0.167278
+X  0.741091 0.332506 0.976269
+X  0.155812 0.614801 0.611356
+3
+10 10 10
+X  0.748606 0.139357 0.852039
+X  0.978511 0.780954 0.853437
+X  0.2468 0.339623 0.982576
+3
+10 10 10
+X  0.688296 0.94874 0.037574
+X  0.673976 0.445936 0.504968
+X  0.538422 0.681875 0.0949078
+3
+10 10 10
+X  0.923055 0.350527 0.178685
+X  0.846241 0.887099 0.202785
+X  0.0135191 0.62819 0.535291
+3
+10 10 10
+X  0.989788 0.784003 0.150092
+X  0.601144 0.532608 0.289449
+X  0.453184 0.511119 0.0704025
+3
+10 10 10
+X  0.306621 0.757918 0.410026
+X  0.289197 0.446215 0.358766
+X  0.326771 0.12019 0.804702
+3
+10 10 10
+X  0.831739 0.658612 0.486577
+X  0.926647 0.581668 0.837104
+X  0.105332 0.427909 0.724203
+3
+10 10 10
+X  0.308117 0.441428 0.352394
+X  0.843408 0.431216 0.136396
+X  0.9935 0.0323602 0.669004
+3
+10 10 10
+X  0.282949 0.485544 0.180123
+X  0.353351 0.792164 0.938041
+X  0.763377 0.0813613 0.384256
+3
+10 10 10
+X  0.122143 0.408132 0.504446
+X  0.926844 0.239871 0.163059
+X  0.413422 0.166518 0.744726
+3
+10 10 10
+X  0.250525 0.27185 0.172635
+X  0.974728 0.579967 0.614064
+X  0.327122 0.423375 0.0452796
+3
+10 10 10
+X  0.463518 0.416875 0.0776398
+X  0.132522 0.699824 0.563184
+X  0.312645 0.053175 0.355348
+3
+10 10 10
+X  0.250687 0.816552 0.43671
+X  0.634943 0.938695 0.844842
+X  0.139389 0.865539 0.0847128
+3
+10 10 10
+X  0.302448 0.278961 0.251231
+X  0.0471742 0.529486 0.523081
+X  0.21981 0.504214 0.103048
+3
+10 10 10
+X  0.833873 0.831336 0.526423
+X  0.879153 0.294854 0.943298
+X  0.956793 0.427377 0.643121
+3
+10 10 10
+X  0.519976 0.740022 0.696296
+X  0.875325 0.990709 0.512848
+X  0.312034 0.625652 0.451543
+3
+10 10 10
+X  0.156876 0.765041 0.317082
+X  0.241589 0.0674892 0.596042
+X  0.49282 0.114663 0.125528
+3
+10 10 10
+X  0.0159006 0.334473 0.629742
+X  0.118948 0.168346 0.461079
+X  0.645371 0.0474988 0.755933
+3
+10 10 10
+X  0.588669 0.00429139 0.18331
+X  0.23179 0.524268 0.923332
+X  0.928086 0.399592 0.914041
+3
+10 10 10
+X  0.440934 0.711627 0.539694
+X  0.892477 0.868503 0.304735
+X  0.209559 0.110091 0.372224
+3
+10 10 10
+X  0.805601 0.602911 0.486887
+X  0.93113 0.618812 0.82136
+X  0.560872 0.73776 0.989706
+3
+10 10 10
+X  0.0219507 0.383131 0.0372052
+X  0.777884 0.971799 0.0414966
+X  0.961194 0.203589 0.565764
+3
+10 10 10
+X  0.884526 0.131675 0.965357
+X  0.798567 0.57261 0.676984
+X  0.338261 0.465087 0.545486
+3
+10 10 10
+X  0.642996 0.674646 0.655577
+X  0.0152197 0.480247 0.258488
+X  0.502107 0.411376 0.8773
+3
+10 10 10
+X  0.323467 0.972249 0.61506
+X  0.313174 0.994199 0.998191
+X  0.350379 0.772083 0.96999
+3
+10 10 10
+X  0.391876 0.733277 0.173579
+X  0.95764 0.617802 0.305254
+X  0.922997 0.416369 0.877864
+3
+10 10 10
+X  0.599981 0.75463 0.342951
+X  0.145467 0.397625 0.0175963
+X  0.801044 0.412845 0.497843
+3
+10 10 10
+X  0.0595323 0.914952 0.90922
+X  0.936832 0.23842 0.881468
+X  0.551892 0.551594 0.875668
+3
+10 10 10
+X  0.550082 0.901973 0.647751
+X  0.520072 0.293849 0.381027
+X  0.693651 0.251489 0.99883
+3
+10 10 10
+X  0.998906 0.174486 0.415199
+X  0.87677 0.774466 0.169829
+X  0.21972 0.919933 0.567454
+3
+10 10 10
+X  0.237317 0.720977 0.9803
+X  0.73516 0.780509 0.895252
+X  0.64438 0.717341 0.133672
+3
+10 10 10
+X  0.525848 0.269233 0.685265
+X  0.401516 0.819316 0.587238
+X  0.0492661 0.339388 0.881087
+3
+10 10 10
+X  0.430293 0.0330394 0.132576
+X  0.429123 0.0319453 0.307061
+X  0.844322 0.908715 0.0815278
+3
+10 10 10
+X  0.014151 0.128435 0.00146079
+X  0.581605 0.365752 0.722438
+X  0.561905 0.100912 0.502947
+3
+10 10 10
+X  0.457157 0.745292 0.220288
+X  0.590828 0.27114 0.489522
+X  0.276094 0.672655 0.308837
+3
+10 10 10
+X  0.863332 0.721922 0.648225
+X  0.744419 0.152215 0.681264
+X  0.876994 0.581338 0.71321
+3
+10 10 10
+X  0.184055 0.42566 0.621925
+X  0.265583 0.439811 0.75036
+X  0.267044 0.0214164 0.116112
+3
+10 10 10
+X  0.989482 0.583321 0.217025
+X  0.492429 0.0404783 0.962317
+X  0.712717 0.631307 0.233456
+3
+10 10 10
+X  0.202239 0.907401 0.906112
+X  0.511076 0.770732 0.628034
+X  0.159301 0.515151 0.780249
+3
+10 10 10
+X  0.840565 0.392145 0.361586
+X  0.553775 0.576201 0.787246
+X  0.1757 0.841784 0.227057
+3
+10 10 10
+X  0.92606 0.108828 0.248474
+X  0.0421726 0.0983097 0.831795
+X  0.259197 0.590739 0.872274
+3
+10 10 10
+X  0.221514 0.303456 0.503581
+X  0.45497 0.505694 0.410981
+X  0.361082 0.0167703 0.181714
+3
+10 10 10
+X  0.989116 0.176071 0.696865
+X  0.769364 0.0166367 0.0890097
+X  0.130951 0.570412 0.66521
+3
+10 10 10
+X  0.918197 0.746112 0.506994
+X  0.145255 0.672172 0.615822
+X  0.393728 0.714344 0.714132
+3
+10 10 10
+X  0.225524 0.973542 0.30487
+X  0.0977975 0.195055 0.608326
+X  0.601378 0.650026 0.11402
+3
+10 10 10
+X  0.0123591 0.0111076 0.130791
+X  0.194073 0.000223212 0.306862
+X  0.890937 0.769587 0.323499
+3
+10 10 10
+X  0.979947 0.900538 0.893911
+X  0.645157 0.818735 0.640022
+X  0.152152 0.96399 0.312194
+3
+10 10 10
+X  0.767974 0.357718 0.0265387
+X  0.482106 0.583242 8.03829e-05
+X  0.786976 0.681039 0.195136
+3
+10 10 10
+X  0.395302 0.282417 0.845161
+X  0.509322 0.294776 0.856269
+X  0.640113 0.488849 0.856492
+3
+10 10 10
+X  0.946975 0.379786 0.626079
+X  0.270474 0.359733 0.526617
+X  0.164385 0.0048907 0.345352
+3
+10 10 10
+X  0.804407 0.157042 0.309342
+X  0.116601 0.925016 0.66706
+X  0.14314 0.407122 0.250302
+3
+10 10 10
+X  0.143221 0.194097 0.931341
+X  0.338356 0.589399 0.213759
+X  0.183518 0.0987217 0.508535
+3
+10 10 10
+X  0.0397864 0.738835 0.997384
+X  0.896278 0.68581 0.37717
+X  0.522358 0.956284 0.736904
+3
+10 10 10
+X  0.0489752 0.120669 0.741794
+X  0.394328 0.925076 0.898837
+X  0.70367 0.0416778 0.823853
+3
+10 10 10
+X  0.37073 0.184818 0.230974
+X  0.621032 0.328038 0.425072
+X  0.552373 0.666395 0.0144709
+3
+10 10 10
+X  0.766132 0.849912 0.113193
+X  0.274667 0.889699 0.852028
+X  0.272051 0.785977 0.537838
+3
+10 10 10
+X  0.649221 0.308335 0.494122
+X  0.386125 0.35731 0.614792
+X  0.127919 0.751638 0.539868
+3
+10 10 10
+X  0.026756 0.455307 0.581546
+X  0.850609 0.826037 0.766364
+X  0.0815829 0.447069 0.0944023
+3
+10 10 10
+X  0.506655 0.999442 0.760797
+X  0.521125 0.765574 0.610709
+X  0.634318 0.0402403 0.500408
+3
+10 10 10
+X  0.486346 0.312291 0.286385
+X  0.0241837 0.961512 0.59472
+X  0.518306 0.347637 0.95203
+3
+10 10 10
+X  0.133098 0.475556 0.703667
+X  0.672966 0.502312 0.158975
+X  0.254512 0.352921 0.985012
+3
+10 10 10
+X  0.0208756 0.434504 0.432081
+X  0.115278 0.941158 0.431523
+X  0.876075 0.462284 0.197096
+3
+10 10 10
+X  0.486784 0.0966018 0.237336
+X  0.987192 0.582948 0.549627
+X  0.273577 0.607131 0.51114
+3
+10 10 10
+X  0.868297 0.125437 0.858777
+X  0.820326 0.258535 0.334333
+X  0.523994 0.931501 0.836645
+3
+10 10 10
+X  0.682968 0.186013 0.189566
+X  0.66798 0.206888 0.62407
+X  0.100061 0.322166 0.565228
+3
+10 10 10
+X  0.531583 0.198241 0.0275116
+X  0.728679 0.685025 0.124113
+X  0.966016 0.672217 0.707061
+3
+10 10 10
+X  0.515643 0.945794 0.314192
+X  0.0267825 0.81409 0.439629
+X  0.885559 0.634416 0.698164
+3
+10 10 10
+X  0.219892 0.15841 0.629665
+X  0.0565368 0.841378 0.815678
+X  0.246103 0.509358 0.0225663
+3
+10 10 10
+X  0.870172 0.609419 0.344732
+X  0.4354 0.141002 0.542973
+X  0.462912 0.869681 0.227998
+3
+10 10 10
+X  0.587025 0.835697 0.900215
+X  0.294086 0.35134 0.846009
+X  0.608278 0.378122 0.660099
+3
+10 10 10
+X  0.0479073 0.263682 0.294515
+X  0.746072 0.483573 0.452926
+X  0.375737 0.54011 0.294304
+3
+10 10 10
+X  0.191415 0.786213 0.803662
+X  0.213982 0.656385 0.413081
+X  0.558714 0.0917848 0.554083
+3
+10 10 10
+X  0.101687 0.554696 0.423765
+X  0.329685 0.141721 0.259462
+X  0.2299 0.435807 0.610801
+3
+10 10 10
+X  0.0759093 0.0440851 0.988924
+X  0.736008 0.0919923 0.252606
+X  0.0305237 0.838064 0.736179
+3
+10 10 10
+X  0.483449 0.213801 0.276289
+X  0.777753 0.405217 0.0625016
+X  0.581415 0.619198 0.718886
+3
+10 10 10
+X  0.994496 0.177912 0.810671
+X  0.54858 0.279599 0.365368
+X  0.972344 0.609284 0.507089
+3
+10 10 10
+X  0.231806 0.839185 0.942896
+X  0.842607 0.915094 0.986981
+X  0.831531 0.651102 0.0789736
+3
+10 10 10
+X  0.0841368 0.681626 0.917038
+X  0.820316 0.165075 0.130839
+X  0.0966047 0.942828 0.536055
+3
+10 10 10
+X  0.159106 0.524244 0.155253
+X  0.877993 0.51874 0.333165
+X  0.688664 0.06732 0.612764
+3
+10 10 10
+X  0.0540318 0.0396644 0.222049
+X  0.561121 0.27147 0.0612336
+X  0.504017 0.114078 0.976328
+3
+10 10 10
+X  0.490998 0.945609 0.62743
+X  0.569972 0.0297458 0.309056
+X  0.487009 0.850061 0.474132
+3
+10 10 10
+X  0.617848 0.946666 0.41696
+X  0.153904 0.105772 0.941204
+X  0.309157 0.983765 0.459944
+3
+10 10 10
+X  0.642323 0.672429 0.527264
+X  0.255087 0.726461 0.566928
+X  0.477136 0.287582 0.838399
+3
+10 10 10
+X  0.53837 0.791599 0.952476
+X  0.514697 0.282597 0.898085
+X  0.142127 0.852569 0.927831
+3
+10 10 10
+X  0.451184 0.339578 0.777892
+X  0.925315 0.957426 0.724559
+X  0.342275 0.11133 0.830331
+3
+10 10 10
+X  0.283479 0.420488 0.814096
+X  0.743423 0.0628103 0.486525
+X  0.270687 0.317897 0.212986
+3
+10 10 10
+X  0.837615 0.795033 0.500568
+X  0.676014 0.333403 0.292167
+X  0.62849 0.8481 0.574764
+3
+10 10 10
+X  0.526576 0.990228 0.427332
+X  0.454406 0.441411 0.76691
+X  0.232299 0.366727 0.724337
+3
+10 10 10
+X  0.956857 0.709002 0.835667
+X  0.787188 0.992481 0.256155
+X  0.601284 0.735904 0.318965
+3
+10 10 10
+X  0.0878097 0.00659137 0.636862
+X  0.300796 0.844207 0.431896
+X  0.801364 0.520221 0.765298
+3
+10 10 10
+X  0.0935307 0.148711 0.613399
+X  0.668294 0.675287 0.603627
+X  0.0956266 0.129693 0.045038
+3
+10 10 10
+X  0.862537 0.361992 0.411765
+X  0.586874 0.318849 0.120767
+X  0.422541 0.106038 0.113248
+3
+10 10 10
+X  0.678695 0.707322 0.849153
+X  0.99766 0.795132 0.855744
+X  0.634522 0.0959277 0.699951
+3
+10 10 10
+X  0.0664177 0.897292 0.220172
+X  0.831716 0.990822 0.368883
+X  0.445115 0.659117 0.0441693
+3
+10 10 10
+X  0.0487414 0.754743 0.173862
+X  0.0937795 0.61728 0.535854
+X  0.505544 0.204154 0.854704
+3
+10 10 10
+X  0.626311 0.626694 0.960741
+X  0.73956 0.30539 0.668063
+X  0.588712 0.303049 0.463195
+3
+10 10 10
+X  0.444456 0.937572 0.559123
+X  0.144407 0.00398931 0.456414
+X  0.364578 0.835705 0.447237
+3
+10 10 10
+X  0.733461 0.28082 0.106354
+X  0.77763 0.329562 0.861097
+X  0.951493 0.423341 0.478377
+3
+10 10 10
+X  0.487347 0.928886 0.682531
+X  0.342051 0.555197 0.309226
+X  0.302792 0.294756 0.614615
+3
+10 10 10
+X  0.970855 0.883469 0.917665
+X  0.434051 0.327925 0.855236
+X  0.993173 0.472332 0.859225
+3
+10 10 10
+X  0.449588 0.83691 0.694931
+X  0.896824 0.570371 0.975751
+X  0.00317807 0.348002 0.305313
+3
+10 10 10
+X  0.864275 0.299494 0.728655
+X  0.342652 0.786841 0.65754
+X  0.0251834 0.128892 0.212737
+3
+10 10 10
+X  0.334409 0.431684 0.507493
+X  0.949024 0.40254 0.390962
+X  0.866688 0.83659 0.718887
+3
+10 10 10
+X  0.721925 0.829763 0.191218
+X  0.58115 0.279351 0.0281286
+X  0.276081 0.176175 0.5985
+3
+10 10 10
+X  0.251832 0.179354 0.946501
+X  0.557146 0.0436286 0.245996
+X  0.2858 0.386281 0.032837
+3
+10 10 10
+X  0.94334 0.411464 0.161729
+X  0.156077 0.745873 0.593413
+X  0.663571 0.694897 0.995953
+3
+10 10 10
+X  0.0545327 0.561585 0.832543
+X  0.77342 0.28351 0.662306
+X  0.964638 0.86466 0.941657
+3
+10 10 10
+X  0.992767 0.140741 0.117833
+X  0.591266 0.392574 0.297186
+X  0.537768 0.949719 0.340815
+3
+10 10 10
+X  0.783763 0.23552 0.727095
+X  0.8166 0.17886 0.13856
+X  0.97833 0.334937 0.884433
+3
+10 10 10
+X  0.571743 0.998508 0.57933
+X  0.567696 0.0530405 0.140915
+X  0.400239 0.82646 0.424425
+3
+10 10 10
+X  0.0625448 0.791098 0.289086
+X  0.00420194 0.783865 0.429827
+X  0.122035 0.375131 0.822401
+3
+10 10 10
+X  0.419221 0.912899 0.77212
+X  0.760035 0.696662 0.00764006
+X  0.487131 0.513263 0.1865
+3
+10 10 10
+X  0.62569 0.491592 0.521437
+X  0.510123 0.0633352 0.519945
+X  0.0894529 0.631031 0.572985
+3
+10 10 10
+X  0.230368 0.0312695 0.399446
+X  0.654794 0.0938142 0.190544
+X  0.943879 0.0980162 0.974408
+3
+10 10 10
+X  0.373706 0.220051 0.349539
+X  0.196107 0.639271 0.262438
+X  0.968228 0.399307 0.959101
+3
+10 10 10
+X  0.975868 0.886438 0.472363
+X  0.162368 0.512128 0.963956
+X  0.683805 0.0222512 0.027291
+3
+10 10 10
+X  0.20375 0.111704 0.658322
+X  0.776735 0.342072 0.689591
+X  0.176181 0.996866 0.783406
+3
+10 10 10
+X  0.366724 0.940745 0.881422
+X  0.341133 0.314451 0.101472
+X  0.690672 0.510559 0.740744
+3
+10 10 10
+X  0.95311 0.478786 0.140051
+X  0.912211 0.454654 0.0264881
+X  0.384574 0.617021 0.538616
+3
+10 10 10
+X  0.34853 0.300826 0.560867
+X  0.375821 0.504576 0.672571
+X  0.0341431 0.281311 0.0146438
+3
+10 10 10
+X  0.723734 0.457491 0.0115097
+X  0.50714 0.824216 0.952255
+X  0.388562 0.165348 0.266706
+3
+10 10 10
+X  0.490034 0.85602 0.777265
+X  0.230778 0.80913 0.256051
+X  0.370829 0.721341 0.710705
+3
+10 10 10
+X  0.397317 0.105916 0.327726
+X  0.935933 0.454446 0.628552
+X  0.4968 0.830267 0.133128
+3
+10 10 10
+X  0.169372 0.86441 0.414439
+X  0.184015 0.588145 0.871931
+X  0.195525 0.0952848 0.696146
+3
+10 10 10
+X  0.14778 0.483847 0.861494
+X  0.414486 0.973881 0.717514
+X  0.191751 0.204659 0.526645
+3
+10 10 10
+X  0.447802 0.575488 0.247986
+X  0.158507 0.972805 0.353902
+X  0.486233 0.908738 0.808348
+3
+10 10 10
+X  0.114786 0.405538 0.638615
+X  0.247914 0.57491 0.503025
+X  0.662353 0.758925 0.0911701
+3
+10 10 10
+X  0.534283 0.95445 0.186455
+X  0.23043 0.10223 0.670302
+X  0.091924 0.516717 0.644183
+3
+10 10 10
+X  0.809439 0.708468 0.848842
+X  0.336083 0.15627 0.42433
+X  0.58407 0.314777 0.397135
+3
+10 10 10
+X  0.937972 0.80101 0.305873
+X  0.74632 0.915795 0.711411
+X  0.384935 0.163709 0.28632
+3
+10 10 10
+X  0.88796 0.826062 0.0452454
+X  0.97913 0.360346 0.999696
+X  0.165585 0.590775 0.101926
+3
+10 10 10
+X  0.835887 0.682699 0.618643
+X  0.48007 0.492138 0.32711
+X  0.328912 0.828221 0.48338
+3
+10 10 10
+X  0.753242 0.412291 0.798157
+X  0.150377 0.350263 0.599167
+X  0.45625 0.0965826 0.514962
+3
+10 10 10
+X  0.16766 0.481518 0.678672
+X  0.453981 0.369478 0.504734
+X  0.499226 0.348608 0.86508
+3
+10 10 10
+X  0.498922 0.514194 0.455855
+X  0.600848 0.350081 0.138554
+X  0.219491 0.83015 0.630692
+3
+10 10 10
+X  0.546601 0.159062 0.458913
+X  0.0299815 0.912304 0.871205
+X  0.828139 0.0626813 0.221467
+3
+10 10 10
+X  0.427305 0.518931 0.31805
+X  0.942268 0.686591 0.799568
+X  0.62094 0.140572 0.169045
+3
+10 10 10
+X  0.125673 0.639798 0.517654
+X  0.990753 0.13872 0.0318471
+X  0.446608 0.739568 0.381928
+3
+10 10 10
+X  0.585162 0.959058 0.212078
+X  0.215854 0.50566 0.37114
+X  0.674768 0.535641 0.283445
+3
+10 10 10
+X  0.545972 0.36378 0.346126
+X  0.76744 0.791085 0.865057
+X  0.0854896 0.733353 0.551648
+3
+10 10 10
+X  0.885057 0.354292 0.69222
+X  0.0541025 0.479966 0.332018
+X  0.571756 0.470719 0.470738
+3
+10 10 10
+X  0.603603 0.917327 0.210306
+X  0.985531 0.502489 0.169365
+X  0.197609 0.718343 0.675024
+3
+10 10 10
+X  0.568749 0.393111 0.210665
+X  0.852194 0.939083 0.574445
+X  0.19832 0.706523 0.36553
+3
+10 10 10
+X  0.0633767 0.792012 0.0988831
+X  0.615025 0.677069 0.453176
+X  0.307245 0.731172 0.933141
+3
+10 10 10
+X  0.639264 0.302928 0.40386
+X  0.110002 0.906531 0.321187
+X  0.320308 0.892062 0.823676
+3
+10 10 10
+X  0.489673 0.0896708 0.542019
+X  0.164697 0.65842 0.93513
+X  0.375362 0.510614 0.874213
+3
+10 10 10
+X  0.949807 0.708934 0.580735
+X  0.315337 0.772311 0.372748
+X  0.414221 0.387336 0.049817
+3
+10 10 10
+X  0.867396 0.694581 0.780989
+X  0.800538 0.333844 0.0839169
+X  0.204398 0.443846 0.990448
+3
+10 10 10
+X  0.525585 0.764155 0.88251
+X  0.349261 0.253827 0.972181
+X  0.89128 0.418524 0.630601
+3
+10 10 10
+X  0.826409 0.793887 0.141215
+X  0.700622 0.743694 0.850149
+X  0.281357 0.0590315 0.622459
+3
+10 10 10
+X  0.654105 0.473252 0.00979468
+X  0.703922 0.340648 0.704375
+X  0.48491 0.141186 0.03822
+3
+10 10 10
+X  0.568827 0.345583 0.482066
+X  0.559275 0.871168 0.246221
+X  0.441785 0.220429 0.500048
+3
+10 10 10
+X  0.413966 0.111709 0.918573
+X  0.0445671 0.938118 0.712459
+X  0.185782 0.63874 0.456153
+3
+10 10 10
+X  0.0359305 0.920097 0.515185
+X  0.65839 0.574201 0.988437
+X  0.668184 0.278123 0.329085
+3
+10 10 10
+X  0.37256 0.763033 0.47027
+X  0.41078 0.331861 0.815854
+X  0.892846 0.891136 0.687022
+3
+10 10 10
+X  0.139067 0.332921 0.907451
+X  0.639115 0.746888 0.0191599
+X  0.557688 0.791455 0.957278
+3
+10 10 10
+X  0.270147 0.977236 0.596017
+X  0.726301 0.013167 0.516114
+X  0.241485 0.671557 0.0903151
+3
+10 10 10
+X  0.229922 0.339741 0.368438
+X  0.559007 0.712301 0.131471
+X  0.0292774 0.12308 0.463332
+3
+10 10 10
+X  0.845131 0.0159267 0.354467
+X  0.532154 0.154994 0.687389
+X  0.439605 0.794109 0.434276
+3
+10 10 10
+X  0.458765 0.351797 0.225731
+X  0.416042 0.621945 0.202968
+X  0.0120595 0.348245 0.216134
+3
+10 10 10
+X  0.528173 0.589731 0.887691
+X  0.618489 0.819653 0.227432
+X  0.986926 0.37866 0.939733
+3
+10 10 10
+X  0.118397 0.407937 0.0628131
+X  0.581729 0.253068 0.0787398
+X  0.936196 0.785222 0.233734
+3
+10 10 10
+X  0.623585 0.224827 0.027843
+X  0.0578614 0.683591 0.37964
+X  0.283592 0.0996335 0.00158508
+3
+10 10 10
+X  0.48656 0.111693 0.34983
+X  0.702694 0.639866 0.939561
+X  0.590385 0.258355 0.759214
+3
+10 10 10
+X  0.817817 0.245281 0.137873
+X  0.75755 0.363679 0.54581
+X  0.820363 0.945407 0.798878
+3
+10 10 10
+X  0.899103 0.881604 0.5841
+X  0.132837 0.505189 0.808926
+X  0.16068 0.56305 0.492518
+3
+10 10 10
+X  0.54032 0.846643 0.592151
+X  0.541905 0.333202 0.703844
+X  0.891735 0.0358969 0.343711
+3
+10 10 10
+X  0.831296 0.626282 0.602065
+X  0.59051 0.4441 0.847347
+X  0.728383 0.20165 0.211025
+3
+10 10 10
+X  0.274193 0.0220132 0.156433
+X  0.0730712 0.921116 0.0380362
+X  0.657171 0.0539527 0.543225
+3
+10 10 10
+X  0.466098 0.214632 0.106275
+X  0.958615 0.754952 0.952918
+X  0.550766 0.296857 0.28612
+3
+10 10 10
+X  0.254611 0.188593 0.322017
+X  0.598321 0.0198888 0.948299
+X  0.200387 0.610399 0.392399
+3
+10 10 10
+X  0.0477334 0.338782 0.594049
+X  0.258759 0.612974 0.616062
+X  0.415191 0.686046 0.537178
+3
+10 10 10
+X  0.453228 0.343217 0.591131
+X  0.996452 0.809315 0.805763
+X  0.102727 0.76793 0.560716
+3
+10 10 10
+X  0.055645 0.318696 0.857573
+X  0.341765 0.573307 0.0461652
+X  0.663782 0.171628 0.066054
+3
+10 10 10
+X  0.612081 0.372015 0.676453
+X  0.0044803 0.419748 0.0152341
+X  0.598529 0.678507 0.628209
+3
+10 10 10
+X  0.214592 0.0936982 0.314254
+X  0.75177 0.546926 0.657471
+X  0.342901 0.543378 0.466786
+3
+10 10 10
+X  0.148664 0.646106 0.234716
+X  0.70938 0.701751 0.553412
+X  0.566953 0.0435155 0.126719
+3
+10 10 10
+X  0.613118 0.707297 0.298347
+X  0.679172 0.319379 0.670362
+X  0.355624 0.323859 0.0901099
+3
+10 10 10
+X  0.370858 0.922388 0.768617
+X  0.999067 0.13698 0.862315
+X  0.313321 0.88875 0.409241
+3
+10 10 10
+X  0.970792 0.231651 0.952619
+X  0.437578 0.380315 0.598724
+X  0.672293 0.0896951 0.300475
+3
+10 10 10
+X  0.225705 0.656648 0.34399
+X  0.352424 0.269765 0.0512878
+X  0.650771 0.948937 0.370666
+3
+10 10 10
+X  0.321133 0.304561 0.694525
+X  0.411243 0.67542 0.616914
+X  0.17986 0.674486 0.753893
+3
+10 10 10
+X  0.0421745 0.987808 0.642643
+X  0.451415 0.9586 0.874294
+X  0.404034 0.396178 0.254609
+3
+10 10 10
+X  0.00275822 0.0684713 0.344305
+X  0.303233 0.294177 0.000952164
+X  0.647224 0.646601 0.270718
+3
+10 10 10
+X  0.698511 0.297372 0.219655
+X  0.0691778 0.618505 0.524216
+X  0.763703 0.0297474 0.199635
+3
+10 10 10
+X  0.380617 0.209607 0.874122
+X  0.13451 0.251781 0.86193
+X  0.777153 0.703197 0.820529
+3
+10 10 10
+X  0.651448 0.10723 0.216707
+X  0.906057 0.109989 0.285179
+X  0.250362 0.413222 0.579355
+3
+10 10 10
+X  0.251314 0.0604453 0.225956
+X  0.522031 0.758957 0.523328
+X  0.741686 0.828134 0.141832
+3
+10 10 10
+X  0.265902 0.591838 0.17158
+X  0.465537 0.972454 0.381187
+X  0.339659 0.106964 0.632968
+3
+10 10 10
+X  0.201589 0.884118 0.336165
+X  0.0221182 0.535565 0.443395
+X  0.238825 0.441622 0.553384
+3
+10 10 10
+X  0.524004 0.691984 0.966605
+X  0.103359 0.943298 0.0270507
+X  0.329315 0.465329 0.786007
+3
+10 10 10
+X  0.852643 0.207015 0.614142
+X  0.994475 0.472916 0.205979
+X  0.166055 0.938453 0.178434
+3
+10 10 10
+X  0.547242 0.278112 0.285398
+X  0.18021 0.479701 0.169516
+X  0.516374 0.501819 0.705081
+3
+10 10 10
+X  0.959769 0.740645 0.146703
+X  0.513153 0.264649 0.838687
+X  0.479759 0.368008 0.781985
+3
+10 10 10
+X  0.506809 0.697323 0.247313
+X  0.292817 0.549966 0.454328
+X  0.906958 0.544441 0.927244
+3
+10 10 10
+X  0.112938 0.710495 0.865697
+X  0.291371 0.257737 0.14381
+X  0.576769 0.437947 0.623511
+3
+10 10 10
+X  0.746285 0.954321 0.125331
+X  0.451366 0.91409 0.865975
+X  0.598069 0.427243 0.130624
+3
+10 10 10
+X  0.436756 0.907002 0.498632
+X  0.218741 0.413811 0.195955
+X  0.466054 0.706628 0.745921
+3
+10 10 10
+X  0.920382 0.613586 0.290361
+X  0.847626 0.726524 0.000856793
+X  0.713324 0.0178958 0.258594
+3
+10 10 10
+X  0.857133 0.594665 0.69654
+X  0.480645 0.34095 0.650861
+X  0.605975 0.792316 0.564952
+3
+10 10 10
+X  0.47195 0.390386 0.992195
+X  0.602575 0.827142 0.899197
+X  0.101207 0.045883 0.313008
+3
+10 10 10
+X  0.297162 0.511937 0.0196364
+X  0.0430831 0.432319 0.633223
+X  0.333445 0.279946 0.359747
+3
+10 10 10
+X  0.334301 0.993269 0.377643
+X  0.592895 0.850403 0.972308
+X  0.289435 0.331047 0.313258
+3
+10 10 10
+X  0.940296 0.937022 0.105575
+X  0.505248 0.408973 0.49596
+X  0.497443 0.0115476 0.323102
+3
+10 10 10
+X  0.39664 0.112755 0.368985
+X  0.709648 0.409917 0.880922
+X  0.729285 0.453 0.313242
+3
+10 10 10
+X  0.362508 0.786445 0.593188
+X  0.722255 0.120746 0.586457
+X  0.0998976 0.713641 0.436859
+3
+10 10 10
+X  0.0722057 0.00307608 0.767907
+X  0.385464 0.943372 0.704929
+X  0.491039 0.44862 0.113902
+3
+10 10 10
+X  0.986999 0.946063 0.125449
+X  0.310101 0.342703 0.238204
+X  0.679087 0.0523519 0.648121
+3
+10 10 10
+X  0.560009 0.781637 0.101121
+X  0.873251 0.144144 0.887565
+X  0.466439 0.866399 0.00831128
+3
+10 10 10
+X  0.0528953 0.966297 0.721952
+X  0.489755 0.0385024 0.725028
+X  0.257662 0.423967 0.668401
+3
+10 10 10
+X  0.962591 0.915005 0.117021
+X  0.0764926 0.902004 0.0630846
+X  0.201942 0.212106 0.405788
+3
+10 10 10
+X  0.440146 0.891192 0.45814
+X  0.0882672 0.451202 0.239777
+X  0.189388 0.324453 0.383921
+3
+10 10 10
+X  0.0769535 0.790891 0.25032
+X  0.0852648 0.843786 0.216617
+X  0.807217 0.333541 0.255119
+3
+10 10 10
+X  0.532245 0.591203 0.679085
+X  0.200646 0.553794 0.594091
+X  0.317667 0.630286 0.496095
+3
+10 10 10
+X  0.380752 0.832228 0.708201
+X  0.78654 0.272374 0.599394
+X  0.24468 0.360642 0.0505952
+3
+10 10 10
+X  0.484456 0.55003 0.375048
+X  0.868377 0.626983 0.165939
+X  0.118697 0.712248 0.00972536
+3
+10 10 10
+X  0.335314 0.519465 0.343267
+X  0.590433 0.0517102 0.934469
+X  0.269518 0.252356 0.488263
+3
+10 10 10
+X  0.863609 0.570023 0.118549
+X  0.359704 0.950775 0.950777
+X  0.0679053 0.737314 0.223152
+3
+10 10 10
+X  0.667299 0.981994 0.583794
+X  0.717894 0.46645 0.133823
+X  0.0929419 0.334827 0.760807
+3
+10 10 10
+X  0.258881 0.453524 0.473055
+X  0.268606 0.788838 0.99252
+X  0.611873 0.37927 0.0442301
+3
+10 10 10
+X  0.546342 0.648788 0.296586
+X  0.0346053 0.512397 0.866609
+X  0.153154 0.872102 0.817384
diff --git a/regtest/basic/rt-mpi6c/trajectory.1.xyz b/regtest/basic/rt-mpi6c/trajectory.1.xyz
new file mode 100644
index 0000000000000000000000000000000000000000..bda14afea4f2aab9cd0b95cd2ead246b5cd5d629
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/trajectory.1.xyz
@@ -0,0 +1,5000 @@
+3
+10 10 10
+X  0.840188 0.394383 0.783099
+X  0.79844 0.911647 0.197551
+X  0.335223 0.76823 0.277775
+3
+10 10 10
+X  0.55397 0.477397 0.628871
+X  0.364784 0.513401 0.95223
+X  0.916195 0.635712 0.717297
+3
+10 10 10
+X  0.141603 0.606969 0.0163006
+X  0.242887 0.137232 0.804177
+X  0.156679 0.400944 0.12979
+3
+10 10 10
+X  0.108809 0.998925 0.218257
+X  0.512932 0.839112 0.61264
+X  0.296032 0.637552 0.524287
+3
+10 10 10
+X  0.493583 0.972775 0.292517
+X  0.771358 0.526745 0.769914
+X  0.400229 0.891529 0.283315
+3
+10 10 10
+X  0.352458 0.807725 0.919026
+X  0.0697553 0.949327 0.525995
+X  0.0860558 0.192214 0.663227
+3
+10 10 10
+X  0.890233 0.348893 0.0641713
+X  0.020023 0.457702 0.0630958
+X  0.23828 0.970634 0.902208
+3
+10 10 10
+X  0.85092 0.266666 0.53976
+X  0.375207 0.760249 0.512535
+X  0.667724 0.531606 0.0392803
+3
+10 10 10
+X  0.437638 0.931835 0.93081
+X  0.720952 0.284293 0.738534
+X  0.639979 0.354049 0.687861
+3
+10 10 10
+X  0.165974 0.440105 0.880075
+X  0.829201 0.330337 0.228968
+X  0.893372 0.35036 0.68667
+3
+10 10 10
+X  0.956468 0.58864 0.657304
+X  0.858676 0.43956 0.92397
+X  0.398437 0.814767 0.684219
+3
+10 10 10
+X  0.910972 0.482491 0.215825
+X  0.950252 0.920128 0.14766
+X  0.881062 0.641081 0.431953
+3
+10 10 10
+X  0.619596 0.281059 0.786002
+X  0.307458 0.447034 0.226107
+X  0.187533 0.276235 0.556444
+3
+10 10 10
+X  0.416501 0.169607 0.906804
+X  0.103171 0.126075 0.495444
+X  0.760475 0.984752 0.935004
+3
+10 10 10
+X  0.684445 0.383188 0.749771
+X  0.368664 0.29416 0.232262
+X  0.584489 0.244413 0.15239
+3
+10 10 10
+X  0.732149 0.125475 0.79347
+X  0.164102 0.745071 0.0745298
+X  0.950104 0.0525293 0.521563
+3
+10 10 10
+X  0.176211 0.240062 0.797798
+X  0.732654 0.656564 0.967405
+X  0.639458 0.759735 0.0934805
+3
+10 10 10
+X  0.134902 0.52021 0.0782321
+X  0.0699064 0.204655 0.46142
+X  0.819677 0.573319 0.755581
+3
+10 10 10
+X  0.0519388 0.157807 0.999994
+X  0.204329 0.889956 0.125468
+X  0.997799 0.0540576 0.87054
+3
+10 10 10
+X  0.0723288 0.00416161 0.923069
+X  0.593892 0.180372 0.163131
+X  0.39169 0.913027 0.819695
+3
+10 10 10
+X  0.359095 0.552485 0.57943
+X  0.452576 0.687387 0.0996401
+X  0.530808 0.757294 0.304295
+3
+10 10 10
+X  0.992228 0.576971 0.877614
+X  0.747809 0.62891 0.0354209
+X  0.747803 0.833239 0.925377
+3
+10 10 10
+X  0.873271 0.831038 0.979434
+X  0.743811 0.903366 0.983596
+X  0.66688 0.497259 0.163968
+3
+10 10 10
+X  0.830012 0.888949 0.0769947
+X  0.649707 0.248044 0.62948
+X  0.229137 0.70062 0.316867
+3
+10 10 10
+X  0.328777 0.231428 0.074161
+X  0.633072 0.223656 0.651132
+X  0.510686 0.971466 0.280042
+3
+10 10 10
+X  0.546107 0.719269 0.113281
+X  0.471483 0.59254 0.944318
+X  0.450918 0.336351 0.847684
+3
+10 10 10
+X  0.434513 0.00323146 0.344943
+X  0.598481 0.833243 0.233892
+X  0.675476 0.48295 0.481936
+3
+10 10 10
+X  0.304956 0.712087 0.182556
+X  0.621823 0.0408643 0.413984
+X  0.695984 0.673936 0.63764
+3
+10 10 10
+X  0.347116 0.184622 0.609106
+X  0.627158 0.730729 0.328374
+X  0.740438 0.202213 0.920914
+3
+10 10 10
+X  0.684757 0.65313 0.257265
+X  0.532441 0.0876436 0.260497
+X  0.877384 0.686125 0.0937402
+3
+10 10 10
+X  0.111276 0.361601 0.576691
+X  0.593211 0.666557 0.288778
+X  0.775767 0.288379 0.329642
+3
+10 10 10
+X  0.189751 0.984363 0.00357857
+X  0.827391 0.331479 0.188201
+X  0.436497 0.958637 0.91893
+3
+10 10 10
+X  0.764871 0.699075 0.121143
+X  0.685786 0.383832 0.774273
+X  0.943051 0.916273 0.861917
+3
+10 10 10
+X  0.203548 0.793657 0.548042
+X  0.297288 0.904932 0.909643
+X  0.873979 0.498144 0.5762
+3
+10 10 10
+X  0.162757 0.273911 0.864579
+X  0.492399 0.463662 0.848942
+X  0.495977 0.291053 0.180421
+3
+10 10 10
+X  0.684178 0.72755 0.139058
+X  0.603109 0.492422 0.838134
+X  0.724252 0.178208 0.221966
+3
+10 10 10
+X  0.498525 0.121259 0.138238
+X  0.360443 0.324807 0.931895
+X  0.908485 0.622095 0.836828
+3
+10 10 10
+X  0.818128 0.496074 0.334972
+X  0.394327 0.658831 0.608883
+X  0.258906 0.15123 0.072545
+3
+10 10 10
+X  0.107848 0.647207 0.363598
+X  0.28827 0.331386 0.0911486
+X  0.427328 0.934495 0.58357
+3
+10 10 10
+X  0.265461 0.658747 0.761778
+X  0.487427 0.157272 0.883037
+X  0.625665 0.517715 0.207844
+3
+10 10 10
+X  0.557561 0.426199 0.829939
+X  0.394388 0.244327 0.326013
+X  0.72936 0.638654 0.984845
+3
+10 10 10
+X  0.338243 0.89756 0.136075
+X  0.410788 0.00540855 0.783282
+X  0.774386 0.293678 0.114668
+3
+10 10 10
+X  0.865535 0.721006 0.0491625
+X  0.449105 0.986467 0.707909
+X  0.210883 0.473894 0.865181
+3
+10 10 10
+X  0.0939195 0.0995593 0.382896
+X  0.301763 0.65712 0.809095
+X  0.131702 0.0515083 0.0534223
+3
+10 10 10
+X  0.457716 0.780868 0.692076
+X  0.44256 0.119111 0.589637
+X  0.578635 0.529899 0.595045
+3
+10 10 10
+X  0.361917 0.304285 0.888723
+X  0.476585 0.16982 0.609729
+X  0.525747 0.618925 0.596196
+3
+10 10 10
+X  0.233656 0.829808 0.0700902
+X  0.0988374 0.923728 0.16965
+X  0.481733 0.225491 0.826769
+3
+10 10 10
+X  0.290829 0.357193 0.878278
+X  0.344251 0.814909 0.659146
+X  0.0363274 0.257469 0.778257
+3
+10 10 10
+X  0.625964 0.836104 0.308157
+X  0.221009 0.198021 0.612442
+X  0.109733 0.674605 0.782262
+3
+10 10 10
+X  0.719462 0.200352 0.401188
+X  0.315658 0.434009 0.230996
+X  0.385748 0.532846 0.154724
+3
+10 10 10
+X  0.555398 0.0145793 0.380215
+X  0.382167 0.305408 0.737408
+X  0.260445 0.649659 0.552316
+3
+10 10 10
+X  0.919591 0.685986 0.809785
+X  0.697848 0.31195 0.645889
+X  0.00600477 0.53296 0.84391
+3
+10 10 10
+X  0.618447 0.642693 0.518515
+X  0.400709 0.362154 0.718867
+X  0.801897 0.677812 0.152876
+3
+10 10 10
+X  0.0328927 0.0635606 0.685722
+X  0.187616 0.618958 0.700301
+X  0.567831 0.00112548 0.00570914
+3
+10 10 10
+X  0.305239 0.26157 0.655368
+X  0.857555 0.181161 0.341354
+X  0.667341 0.879009 0.653305
+3
+10 10 10
+X  0.31323 0.885014 0.186265
+X  0.157139 0.503461 0.828957
+X  0.675654 0.90417 0.191112
+3
+10 10 10
+X  0.394521 0.706067 0.868924
+X  0.547397 0.738959 0.932485
+X  0.233119 0.926576 0.551443
+3
+10 10 10
+X  0.93342 0.494407 0.552568
+X  0.939129 0.799646 0.814139
+X  0.594497 0.657201 0.9953
+3
+10 10 10
+X  0.935852 0.324541 0.874309
+X  0.589157 0.637771 0.759324
+X  0.775421 0.79491 0.262785
+3
+10 10 10
+X  0.604379 0.470564 0.166955
+X  0.79549 0.865086 0.873021
+X  0.664414 0.412483 0.611981
+3
+10 10 10
+X  0.596899 0.645601 0.538557
+X  0.148342 0.579022 0.0329634
+X  0.70091 0.518151 0.832609
+3
+10 10 10
+X  0.515049 0.112648 0.48981
+X  0.510349 0.0484997 0.814351
+X  0.384658 0.637656 0.452122
+3
+10 10 10
+X  0.143982 0.413078 0.247033
+X  0.406767 0.0174566 0.717597
+X  0.573721 0.812947 0.582682
+3
+10 10 10
+X  0.446743 0.477361 0.995165
+X  0.0587232 0.0742604 0.640766
+X  0.59728 0.222602 0.219788
+3
+10 10 10
+X  0.630243 0.923513 0.737939
+X  0.462852 0.438562 0.850586
+X  0.952662 0.948911 0.899086
+3
+10 10 10
+X  0.767014 0.333569 0.536742
+X  0.219136 0.477551 0.94982
+X  0.466169 0.884318 0.967277
+3
+10 10 10
+X  0.183765 0.458039 0.780224
+X  0.766448 0.904782 0.257585
+X  0.761612 0.963505 0.331846
+3
+10 10 10
+X  0.402379 0.560785 0.554448
+X  0.622167 0.191028 0.477961
+X  0.360105 0.65388 0.916523
+3
+10 10 10
+X  0.210692 0.606542 0.865434
+X  0.109778 0.373556 0.199003
+X  0.64652 0.592692 0.676554
+3
+10 10 10
+X  0.596341 0.0588605 0.560872
+X  0.563617 0.242626 0.0189108
+X  0.343841 0.00907344 0.923692
+3
+10 10 10
+X  0.601427 0.770686 0.887197
+X  0.933273 0.173065 0.447982
+X  0.487721 0.795231 0.639009
+3
+10 10 10
+X  0.965682 0.155336 0.292889
+X  0.882204 0.366028 0.899431
+X  0.747638 0.475806 0.272987
+3
+10 10 10
+X  0.94664 0.122326 0.865679
+X  0.623194 0.718666 0.92454
+X  0.184066 0.282284 0.167165
+3
+10 10 10
+X  0.202977 0.626125 0.176239
+X  0.126669 0.227552 0.946925
+X  0.0138663 0.160824 0.119989
+3
+10 10 10
+X  0.461848 0.648545 0.915221
+X  0.100857 0.614227 0.070557
+X  0.393746 0.496431 0.436585
+3
+10 10 10
+X  0.293177 0.244069 0.912391
+X  0.566164 0.190709 0.0347164
+X  0.431844 0.813904 0.753383
+3
+10 10 10
+X  0.356383 0.99797 0.0356664
+X  0.523548 0.200947 0.661792
+X  0.699787 0.327616 0.889343
+3
+10 10 10
+X  0.646712 0.341482 0.0501679
+X  0.766701 0.80333 0.698713
+X  0.681922 0.904187 0.31294
+3
+10 10 10
+X  0.752479 0.297933 0.809371
+X  0.189064 0.591111 0.0534394
+X  0.101454 0.157275 0.244149
+3
+10 10 10
+X  0.136171 0.589119 0.0580523
+X  0.889553 0.945502 0.0560222
+X  0.92522 0.46905 0.256969
+3
+10 10 10
+X  0.587011 0.168837 0.584585
+X  0.476355 0.815549 0.926068
+X  0.526523 0.58225 0.729398
+3
+10 10 10
+X  0.225236 0.264172 0.633585
+X  0.538175 0.0166506 0.931518
+X  0.347546 0.205714 0.522629
+3
+10 10 10
+X  0.400985 0.307168 0.679904
+X  0.645134 0.443339 0.269022
+X  0.703186 0.332892 0.214524
+3
+10 10 10
+X  0.759208 0.258112 0.683574
+X  0.0161775 0.845123 0.852411
+X  0.600763 0.321478 0.66796
+3
+10 10 10
+X  0.52683 0.848 0.25021
+X  0.256228 0.0732357 0.514382
+X  0.889813 0.611411 0.531033
+3
+10 10 10
+X  0.821331 0.958957 0.736747
+X  0.343959 0.359942 0.0439153
+X  0.0238632 0.0050762 0.487254
+3
+10 10 10
+X  0.292886 0.708262 0.820146
+X  0.50741 0.467471 0.0782579
+X  0.190984 0.483648 0.923381
+3
+10 10 10
+X  0.0433947 0.084411 0.244858
+X  0.711355 0.611241 0.0928584
+X  0.961565 0.867469 0.166094
+3
+10 10 10
+X  0.475947 0.757282 0.777505
+X  0.00698012 0.578613 0.736462
+X  0.743727 0.922572 0.0964041
+3
+10 10 10
+X  0.787642 0.946435 0.10148
+X  0.274897 0.239321 0.809743
+X  0.0950427 0.74673 0.277214
+3
+10 10 10
+X  0.173301 0.937714 0.760862
+X  0.0966814 0.981109 0.845273
+X  0.34154 0.692463 0.456514
+3
+10 10 10
+X  0.434398 0.654029 0.323983
+X  0.600492 0.129976 0.081265
+X  0.377997 0.136956 0.659878
+3
+10 10 10
+X  0.114459 0.880683 0.58245
+X  0.210863 0.668326 0.528885
+X  0.312343 0.943222 0.768206
+3
+10 10 10
+X  0.122086 0.0382648 0.514936
+X  0.3993 0.211565 0.45265
+X  0.160162 0.308247 0.433758
+3
+10 10 10
+X  0.00543489 0.649787 0.126222
+X  0.461949 0.0841846 0.780251
+X  0.785932 0.684677 0.910227
+3
+10 10 10
+X  0.867197 0.0626739 0.0471826
+X  0.527075 0.177133 0.927866
+X  0.109525 0.387996 0.596191
+3
+10 10 10
+X  0.638409 0.70034 0.539413
+X  0.406615 0.822426 0.577678
+X  0.921551 0.221726 0.789244
+3
+10 10 10
+X  0.374201 0.381888 0.0974906
+X  0.807959 0.387323 0.747277
+X  0.934181 0.849272 0.831462
+3
+10 10 10
+X  0.714432 0.635204 0.516139
+X  0.624658 0.502401 0.578813
+X  0.671841 0.0294762 0.755945
+3
+10 10 10
+X  0.599707 0.139001 0.143942
+X  0.195898 0.77741 0.844281
+X  0.735311 0.184025 0.666707
+3
+10 10 10
+X  0.31299 0.105576 0.888433
+X  0.102233 0.479777 0.270321
+X  0.199724 0.287736 0.657643
+3
+10 10 10
+X  0.947001 0.221918 0.506915
+X  0.778463 0.936349 0.142119
+X  0.294601 0.561007 0.64452
+3
+10 10 10
+X  0.873414 0.232848 0.673996
+X  0.629359 0.832555 0.812997
+X  0.773301 0.0284525 0.590407
+3
+10 10 10
+X  0.617582 0.763764 0.774432
+X  0.284289 0.0767534 0.880009
+X  0.172722 0.178987 0.359786
+3
+10 10 10
+X  0.443043 0.37871 0.647522
+X  0.100686 0.325711 0.86944
+X  0.6076 0.104174 0.805789
+3
+10 10 10
+X  0.749719 0.398775 0.366796
+X  0.394239 0.272189 0.599644
+X  0.0682348 0.901549 0.432199
+3
+10 10 10
+X  0.881232 0.67485 0.460652
+X  0.471639 0.292432 0.224415
+X  0.246071 0.576721 0.301169
+3
+10 10 10
+X  0.12608 0.749443 0.480156
+X  0.485866 0.192486 0.858866
+X  0.133388 0.293171 0.184577
+3
+10 10 10
+X  0.00282779 0.900772 0.288752
+X  0.808617 0.650491 0.687527
+X  0.175413 0.0447295 0.959716
+3
+10 10 10
+X  0.775058 0.112964 0.861265
+X  0.207257 0.994196 0.536115
+X  0.667908 0.465835 0.828546
+3
+10 10 10
+X  0.892324 0.711906 0.405267
+X  0.193493 0.837986 0.154711
+X  0.673648 0.323852 0.347196
+3
+10 10 10
+X  0.532514 0.45724 0.640368
+X  0.717092 0.460067 0.54114
+X  0.00584319 0.268684 0.19163
+3
+10 10 10
+X  0.69337 0.444097 0.23636
+X  0.653087 0.219155 0.349324
+X  0.514352 0.426412 0.34352
+3
+10 10 10
+X  0.0504663 0.0943199 0.809355
+X  0.879013 0.986644 0.521261
+X  0.28428 0.180136 0.359247
+3
+10 10 10
+X  0.43899 0.853785 0.683098
+X  0.786187 0.386299 0.140338
+X  0.426555 0.10339 0.600405
+3
+10 10 10
+X  0.967694 0.109233 0.86909
+X  0.159324 0.802604 0.313187
+X  0.395684 0.45569 0.532342
+3
+10 10 10
+X  0.745008 0.970042 0.958753
+X  0.0885283 0.0205084 0.0530733
+X  0.897883 0.899521 0.039717
+3
+10 10 10
+X  0.419144 0.183801 0.219853
+X  0.778391 0.622791 0.0736379
+X  0.461489 0.408978 0.459937
+3
+10 10 10
+X  0.601827 0.835533 0.563327
+X  0.202232 0.803227 0.67256
+X  0.071322 0.962551 0.475164
+3
+10 10 10
+X  0.384509 0.358235 0.930854
+X  0.916851 0.103244 0.900896
+X  0.875604 0.191772 0.921405
+3
+10 10 10
+X  0.928678 0.089655 0.820926
+X  0.968395 0.508799 0.00472651
+X  0.188248 0.287189 0.627518
+3
+10 10 10
+X  0.261886 0.748678 0.0364959
+X  0.721822 0.350505 0.872028
+X  0.285149 0.552738 0.675255
+3
+10 10 10
+X  0.957709 0.62406 0.637806
+X  0.432873 0.00856861 0.996042
+X  0.363727 0.92542 0.0992851
+3
+10 10 10
+X  0.264624 0.801024 0.291057
+X  0.186029 0.729702 0.380712
+X  0.00695418 0.698096 0.889511
+3
+10 10 10
+X  0.0116807 0.886344 0.1767
+X  0.639199 0.14823 0.925379
+X  0.675694 0.870053 0.275884
+3
+10 10 10
+X  0.547723 0.155202 0.828622
+X  0.222978 0.112911 0.452681
+X  0.860784 0.545784 0.46125
+3
+10 10 10
+X  0.856826 0.909512 0.386669
+X  0.956111 0.174136 0.187693
+X  0.247168 0.360164 0.917395
+3
+10 10 10
+X  0.62788 0.367118 0.615491
+X  0.517391 0.378799 0.501835
+X  0.694091 0.0179977 0.650066
+3
+10 10 10
+X  0.61947 0.693692 0.520118
+X  0.895354 0.241415 0.67532
+X  0.723975 0.464393 0.788231
+3
+10 10 10
+X  0.176656 0.325177 0.334016
+X  0.637906 0.182003 0.243528
+X  0.0245755 0.138114 0.417663
+3
+10 10 10
+X  0.212269 0.385282 0.777828
+X  0.129663 0.0131615 0.144946
+X  0.745154 0.530552 0.523745
+3
+10 10 10
+X  0.24699 0.224643 0.541743
+X  0.897055 0.844113 0.235435
+X  0.417174 0.739467 0.47685
+3
+10 10 10
+X  0.0924937 0.463442 0.941243
+X  0.880725 0.640098 0.26642
+X  0.214741 0.278005 0.448423
+3
+10 10 10
+X  0.458269 0.30258 0.586537
+X  0.875932 0.514849 0.971818
+X  0.65376 0.644512 0.98498
+3
+10 10 10
+X  0.798706 0.389667 0.515532
+X  0.322451 0.636656 0.740175
+X  0.864194 0.533712 0.584288
+3
+10 10 10
+X  0.0996293 0.950885 0.323755
+X  0.576479 0.043379 0.787197
+X  0.517722 0.924104 0.427295
+3
+10 10 10
+X  0.784142 0.138845 0.7053
+X  0.232565 0.597114 0.00788008
+X  0.819102 0.473045 0.522729
+3
+10 10 10
+X  0.79092 0.126805 0.167241
+X  0.775899 0.925511 0.556908
+X  0.291431 0.247962 0.193564
+3
+10 10 10
+X  0.0316064 0.112157 0.727276
+X  0.615894 0.211786 0.678161
+X  0.939649 0.788265 0.72154
+3
+10 10 10
+X  0.726846 0.305987 0.645644
+X  0.154141 0.0901297 0.784489
+X  0.859441 0.322695 0.381603
+3
+10 10 10
+X  0.867321 0.141796 0.854648
+X  0.39005 0.932716 0.981453
+X  0.557291 0.708616 0.906964
+3
+10 10 10
+X  0.114199 4.68777e-05 0.154927
+X  0.307763 0.0316532 0.267083
+X  0.0350389 0.647548 0.478869
+3
+10 10 10
+X  0.7132 0.587197 0.267134
+X  0.43474 0.314043 0.573122
+X  0.080384 0.468185 0.663252
+3
+10 10 10
+X  0.864873 0.327626 0.985946
+X  0.246476 0.194948 0.127743
+X  0.101124 0.584998 0.0604589
+3
+10 10 10
+X  0.082577 0.142289 0.769074
+X  0.989541 0.256489 0.769121
+X  0.144468 0.564252 0.800775
+3
+10 10 10
+X  0.411551 0.599291 0.448322
+X  0.89042 0.312491 0.0355193
+X  0.157555 0.747231 0.349562
+3
+10 10 10
+X  0.730677 0.827615 0.817747
+X  0.393928 0.692488 0.145373
+X  0.379874 0.938963 0.340321
+3
+10 10 10
+X  0.507617 0.0400871 0.925318
+X  0.568076 0.122664 0.0676078
+X  0.33715 0.112205 0.324096
+3
+10 10 10
+X  0.106272 0.256673 0.888348
+X  0.907046 0.668224 0.487639
+X  0.355369 0.558645 0.800129
+3
+10 10 10
+X  0.390888 0.716199 0.54736
+X  0.74045 0.446876 0.374975
+X  0.558198 0.840804 0.0674623
+3
+10 10 10
+X  0.703571 0.220679 0.0064256
+X  0.0438913 0.728296 0.0465127
+X  0.96921 0.296372 0.169177
+3
+10 10 10
+X  0.0368176 0.633522 0.281382
+X  0.360914 0.739794 0.538055
+X  0.249262 0.64684 0.20628
+3
+10 10 10
+X  0.736901 0.00220922 0.764925
+X  0.53703 0.393097 0.481124
+X  0.0843902 0.133548 0.928
+3
+10 10 10
+X  0.459365 0.691745 0.768804
+X  0.526827 0.395316 0.989483
+X  0.533253 0.439207 0.717778
+3
+10 10 10
+X  0.579765 0.408417 0.0141502
+X  0.748942 0.445235 0.647672
+X  0.030324 0.806149 0.387466
+3
+10 10 10
+X  0.568379 0.0554106 0.0343068
+X  0.774659 0.792311 0.036516
+X  0.539584 0.329342 0.429613
+3
+10 10 10
+X  0.0207081 0.413732 0.563161
+X  0.948708 0.873097 0.254906
+X  0.717512 0.399924 0.650222
+3
+10 10 10
+X  0.706995 0.933176 0.0894297
+X  0.424774 0.512941 0.497847
+X  0.438924 0.261883 0.943081
+3
+10 10 10
+X  0.0865962 0.292207 0.74923
+X  0.474063 0.860587 0.804641
+X  0.508369 0.635246 0.596952
+3
+10 10 10
+X  0.544885 0.17483 0.926294
+X  0.974499 0.195538 0.340026
+X  0.53766 0.144246 0.213122
+3
+10 10 10
+X  0.792566 0.861759 0.613046
+X  0.442789 0.568754 0.546222
+X  0.532218 0.993528 0.0591633
+3
+10 10 10
+X  0.0300651 0.432452 0.321047
+X  0.973147 0.519048 0.613254
+X  0.722377 0.99311 0.473841
+3
+10 10 10
+X  0.527017 0.50148 0.109087
+X  0.123969 0.0463652 0.283917
+X  0.0502633 0.0208639 0.479455
+3
+10 10 10
+X  0.390289 0.558524 0.623701
+X  0.603411 0.35109 0.48546
+X  0.216457 0.793879 0.054214
+3
+10 10 10
+X  0.762679 0.326097 0.0477418
+X  0.821842 0.356162 0.480193
+X  0.142889 0.329309 0.999241
+3
+10 10 10
+X  0.756143 0.0516852 0.992352
+X  0.229984 0.578702 0.493831
+X  0.339071 0.702672 0.540197
+3
+10 10 10
+X  0.622988 0.752935 0.56106
+X  0.102443 0.143224 0.119584
+X  0.726144 0.746635 0.470674
+3
+10 10 10
+X  0.211604 0.963092 0.264553
+X  0.265818 0.725771 0.590649
+X  0.31356 0.547613 0.946811
+3
+10 10 10
+X  0.793753 0.690502 0.27612
+X  0.792995 0.446645 0.327805
+X  0.785346 0.676628 0.906508
+3
+10 10 10
+X  0.279178 0.0156992 0.609179
+X  0.819374 0.638687 0.362115
+X  0.380434 0.74113 0.505339
+3
+10 10 10
+X  0.500019 0.467274 0.251974
+X  0.970693 0.678878 0.215066
+X  0.235245 0.944697 0.940837
+3
+10 10 10
+X  0.825895 0.258257 0.48845
+X  0.772706 0.0520103 0.178952
+X  0.0488258 0.845005 0.625596
+3
+10 10 10
+X  0.376631 0.630351 0.302225
+X  0.283138 0.909529 0.317924
+X  0.892318 0.728903 0.956611
+3
+10 10 10
+X  0.254432 0.109337 0.697741
+X  0.759771 0.609356 0.165015
+X  0.0117453 0.580048 0.843894
+3
+10 10 10
+X  0.226811 0.815294 0.78859
+X  0.167648 0.641188 0.0468473
+X  0.656098 0.413894 0.0988576
+3
+10 10 10
+X  0.83505 0.46272 0.943863
+X  0.460646 0.839351 0.574214
+X  0.762871 0.122489 0.483742
+3
+10 10 10
+X  0.0807953 0.0148069 0.212645
+X  0.0374063 0.269239 0.321982
+X  0.735147 0.0290106 0.931338
+3
+10 10 10
+X  0.900163 0.0407559 0.511386
+X  0.744056 0.267567 0.32668
+X  0.532647 0.435216 0.967868
+3
+10 10 10
+X  0.579494 0.0913142 0.381762
+X  0.678351 0.926364 0.844482
+X  0.622214 0.387011 0.683833
+3
+10 10 10
+X  0.196428 0.149882 0.806322
+X  0.68017 0.230677 0.821129
+X  0.892815 0.268084 0.0903681
+3
+10 10 10
+X  0.214797 0.00323105 0.119379
+X  0.146135 0.903394 0.160135
+X  0.657522 0.64745 0.427702
+3
+10 10 10
+X  0.984202 0.180096 0.862918
+X  0.95207 0.75959 0.954232
+X  0.333832 0.437942 0.880596
+3
+10 10 10
+X  0.178314 0.0601557 0.267607
+X  0.862147 0.256583 0.417489
+X  0.668469 0.936754 0.648167
+3
+10 10 10
+X  0.489597 0.829569 0.91625
+X  0.579965 0.0443661 0.919481
+X  0.699344 0.190501 0.822875
+3
+10 10 10
+X  0.859479 0.848023 0.470325
+X  0.287181 0.832225 0.650421
+X  0.150099 0.784295 0.410011
+3
+10 10 10
+X  0.104331 0.118126 0.847953
+X  0.984927 0.29644 0.908109
+X  0.252535 0.158587 0.164692
+3
+10 10 10
+X  0.670024 0.827056 0.101446
+X  0.318191 0.316653 0.931014
+X  0.234441 0.896618 0.97538
+3
+10 10 10
+X  0.153923 0.595963 0.165882
+X  0.976798 0.455442 0.0139049
+X  0.447123 0.742623 0.84613
+3
+10 10 10
+X  0.0975437 0.892721 0.630424
+X  0.507555 0.997052 0.748551
+X  0.355508 0.98198 0.044991
+3
+10 10 10
+X  0.263617 0.234514 0.203578
+X  0.428309 0.904539 0.0306337
+X  0.529754 0.222729 0.347287
+3
+10 10 10
+X  0.460768 0.457171 0.243905
+X  0.436149 0.611093 0.839868
+X  0.60203 0.587891 0.295309
+3
+10 10 10
+X  0.615935 0.0350138 0.037932
+X  0.462065 0.132558 0.930653
+X  0.0924893 0.640113 0.927706
+3
+10 10 10
+X  0.84104 0.99562 0.909686
+X  0.886031 0.259237 0.1442
+X  0.089609 0.687546 0.0487385
+3
+10 10 10
+X  0.120243 0.2173 0.271468
+X  0.467529 0.678068 0.728638
+X  0.711434 0.114216 0.339732
+3
+10 10 10
+X  0.551302 0.716247 0.927623
+X  0.846611 0.332182 0.962637
+X  0.884543 0.794247 0.0951945
+3
+10 10 10
+X  0.815197 0.886736 0.735307
+X  0.742903 0.727776 0.730928
+X  0.652588 0.613807 0.990165
+3
+10 10 10
+X  0.796788 0.703416 0.67771
+X  0.845527 0.823659 0.89501
+X  0.116995 0.291188 0.573077
+3
+10 10 10
+X  0.845633 0.00262258 0.687294
+X  0.185365 0.553925 0.403541
+X  0.112988 0.400536 0.735723
+3
+10 10 10
+X  0.0756249 0.28508 0.52997
+X  0.170819 0.100276 0.416706
+X  0.906126 0.843179 0.144482
+3
+10 10 10
+X  0.637054 0.495767 0.75829
+X  0.627219 0.292555 0.461706
+X  0.304929 0.138082 0.285365
+3
+10 10 10
+X  0.199938 0.255076 0.576553
+X  0.773016 0.100709 0.579176
+X  0.460309 0.286074 0.1331
+3
+10 10 10
+X  0.86385 0.399062 0.533636
+X  0.599573 0.474687 0.818716
+X  0.129542 0.645506 0.918992
+3
+10 10 10
+X  0.546248 0.551633 0.762171
+X  0.690731 0.188687 0.257939
+X  0.44902 0.815905 0.550494
+3
+10 10 10
+X  0.910726 0.120834 0.688576
+X  0.196091 0.320772 0.943652
+X  0.772644 0.0937877 0.0443619
+3
+10 10 10
+X  0.351819 0.554097 0.330436
+X  0.484919 0.417947 0.729499
+X  0.0185558 0.0175198 0.204186
+3
+10 10 10
+X  0.837272 0.147062 0.849692
+X  0.756264 0.693311 0.401325
+X  0.518436 0.384041 0.590012
+3
+10 10 10
+X  0.776374 0.833062 0.405917
+X  0.326868 0.743788 0.526751
+X  0.0154439 0.939879 0.847523
+3
+10 10 10
+X  0.959096 0.712522 0.941311
+X  0.00345808 0.0643416 0.495408
+X  0.333894 0.549261 0.913355
+3
+10 10 10
+X  0.0633928 0.567817 0.930875
+X  0.267578 0.405089 0.0779371
+X  0.117271 0.161353 0.771248
+3
+10 10 10
+X  0.518596 0.679788 0.155289
+X  0.108608 0.456162 0.988351
+X  0.514525 0.78303 0.732138
+3
+10 10 10
+X  0.041276 0.798474 0.672017
+X  0.888799 0.757571 0.384539
+X  0.83011 0.761029 0.448881
+3
+10 10 10
+X  0.325518 0.094923 0.998142
+X  0.238873 0.158316 0.565959
+X  0.169748 0.425894 0.971047
+3
+10 10 10
+X  0.247685 0.543165 0.1324
+X  0.0189329 0.0617606 0.812189
+X  0.174222 0.170368 0.268351
+3
+10 10 10
+X  0.162572 0.684893 0.0513816
+X  0.894711 0.726169 0.849856
+X  0.566728 0.614968 0.607427
+3
+10 10 10
+X  0.951267 0.445079 0.368455
+X  0.400148 0.770597 0.463378
+X  0.39829 0.00947013 0.621694
+3
+10 10 10
+X  0.964248 0.179218 0.0475882
+X  0.935296 0.426904 0.590753
+X  0.067696 0.445836 0.652514
+3
+10 10 10
+X  0.879885 0.620058 0.822882
+X  0.148236 0.782631 0.507775
+X  0.199617 0.677342 0.233944
+3
+10 10 10
+X  0.0494732 0.244069 0.848912
+X  0.6569 0.195336 0.293991
+X  0.0253549 0.595484 0.0645876
+3
+10 10 10
+X  0.488733 0.993774 0.0740577
+X  0.110427 0.958022 0.253276
+X  0.158015 0.893318 0.68018
+3
+10 10 10
+X  0.748768 0.961014 0.126016
+X  0.401282 0.840899 0.746075
+X  0.224164 0.989134 0.528705
+3
+10 10 10
+X  0.731938 0.188752 0.206047
+X  0.965882 0.238225 0.450117
+X  0.814794 0.895125 0.645453
+3
+10 10 10
+X  0.108785 0.92048 0.240937
+X  0.173373 0.409213 0.234711
+X  0.247431 0.51964 0.192734
+3
+10 10 10
+X  0.500707 0.677655 0.0860517
+X  0.180886 0.426423 0.0470658
+X  0.306902 0.827705 0.887965
+3
+10 10 10
+X  0.0529768 0.0518689 0.877099
+X  0.581682 0.783807 0.0658506
+X  0.787729 0.74969 0.304075
+3
+10 10 10
+X  0.237846 0.564484 0.1992
+X  0.883299 0.673269 0.119679
+X  0.124236 0.846642 0.528892
+3
+10 10 10
+X  0.358948 0.0940727 0.0485317
+X  0.551681 0.594779 0.726187
+X  0.637733 0.775665 0.15261
+3
+10 10 10
+X  0.684799 0.0825677 0.980315
+X  0.572763 0.135545 0.0321839
+X  0.449862 0.717227 0.815991
+3
+10 10 10
+X  0.515713 0.504956 0.565681
+X  0.819788 0.742802 0.130165
+X  0.0189879 0.626101 0.803434
+3
+10 10 10
+X  0.138667 0.750337 0.650077
+X  0.667559 0.109285 0.744149
+X  0.716091 0.660966 0.338929
+3
+10 10 10
+X  0.442278 0.298698 0.114594
+X  0.594888 0.983497 0.197162
+X  0.575203 0.55626 0.332706
+3
+10 10 10
+X  0.607387 0.00612195 0.0499329
+X  0.423378 0.521834 0.554889
+X  0.989059 0.341622 0.297691
+3
+10 10 10
+X  0.119224 0.36061 0.923792
+X  0.922658 0.499278 0.674129
+X  0.572735 0.166837 0.783413
+3
+10 10 10
+X  0.316884 0.882928 0.444379
+X  0.655813 0.325206 0.743078
+X  0.770407 0.920094 0.726575
+3
+10 10 10
+X  0.967568 0.495297 0.282835
+X  0.300275 0.102683 0.288957
+X  0.350207 0.526061 0.810791
+3
+10 10 10
+X  0.905096 0.51512 0.152413
+X  0.202787 0.634344 0.513024
+X  0.126579 0.557002 0.0123013
+3
+10 10 10
+X  0.800708 0.129737 0.179138
+X  0.584121 0.446622 0.0620666
+X  0.0285004 0.102434 0.387273
+3
+10 10 10
+X  0.771578 0.872841 0.307366
+X  0.498153 0.840409 0.802663
+X  0.780987 0.140684 0.905346
+3
+10 10 10
+X  0.0699438 0.490891 0.431407
+X  0.880735 0.395988 0.946527
+X  0.0331482 0.598775 0.580872
+3
+10 10 10
+X  0.546172 0.725354 0.137874
+X  0.558473 0.526062 0.267611
+X  0.737611 0.110183 0.714233
+3
+10 10 10
+X  0.799678 0.138684 0.816667
+X  0.186951 0.910262 0.689509
+X  0.494317 0.408414 0.529918
+3
+10 10 10
+X  0.29698 0.189401 0.670602
+X  0.202326 0.259345 0.161494
+X  0.633734 0.14008 0.557481
+3
+10 10 10
+X  0.580261 0.173228 0.156257
+X  0.161133 0.7194 0.881611
+X  0.299007 0.277873 0.407673
+3
+10 10 10
+X  0.566618 0.0154844 0.517856
+X  0.280851 0.815162 0.65654
+X  0.0975185 0.00211305 0.566801
+3
+10 10 10
+X  0.787027 0.49643 0.975215
+X  0.316945 0.79341 0.164617
+X  0.987547 0.995737 0.423962
+3
+10 10 10
+X  0.149041 0.629471 0.564042
+X  0.706522 0.209732 0.73727
+X  0.862779 0.370865 0.45667
+3
+10 10 10
+X  0.74439 0.669871 0.734543
+X  0.152062 0.23649 0.750027
+X  0.669918 0.517341 0.565189
+3
+10 10 10
+X  0.326458 0.614859 0.567302
+X  0.893259 0.401886 0.0637327
+X  0.868474 0.718831 0.857143
+3
+10 10 10
+X  0.0330907 0.706378 0.85288
+X  0.457052 0.855419 0.48235
+X  0.021094 0.561941 0.692082
+3
+10 10 10
+X  0.758364 0.42472 0.0629468
+X  0.215033 0.169109 0.732818
+X  0.949576 0.321172 0.969308
+3
+10 10 10
+X  0.699603 0.99109 0.486648
+X  0.264793 0.317548 0.101507
+X  0.832095 0.210806 0.503394
+3
+10 10 10
+X  0.895828 0.0792805 0.222225
+X  0.752971 0.112371 0.928603
+X  0.60585 0.569424 0.784022
+3
+10 10 10
+X  0.0882007 0.590518 0.345963
+X  0.780283 0.348881 0.770682
+X  0.84323 0.563915 0.939791
+3
+10 10 10
+X  0.576048 0.513491 0.260963
+X  0.545356 0.213094 0.252053
+X  0.0320041 0.477887 0.5696
+3
+10 10 10
+X  0.133512 0.309982 0.780407
+X  0.636905 0.205809 0.859687
+X  0.85913 0.95878 0.972059
+3
+10 10 10
+X  0.787733 0.56463 0.541482
+X  0.571755 0.652831 0.132
+X  0.917717 0.433114 0.480881
+3
+10 10 10
+X  0.688399 0.276344 0.0447959
+X  0.628191 0.852391 0.558287
+X  0.889154 0.397747 0.771381
+3
+10 10 10
+X  0.141207 0.429751 0.249267
+X  0.710807 0.563263 0.559249
+X  0.491214 0.200168 0.765058
+3
+10 10 10
+X  0.350901 0.0592977 0.723838
+X  0.32296 0.847031 0.288468
+X  0.864442 0.418785 0.941299
+3
+10 10 10
+X  0.996442 0.336502 0.374413
+X  0.477323 0.0249018 0.650757
+X  0.522119 0.653093 0.503148
+3
+10 10 10
+X  0.0804055 0.542247 0.900895
+X  0.851786 0.683453 0.330647
+X  0.101054 0.39426 0.893909
+3
+10 10 10
+X  0.660302 0.885474 0.0940773
+X  0.425361 0.236375 0.153375
+X  0.149199 0.559335 0.000405591
+3
+10 10 10
+X  0.437667 0.423777 0.419191
+X  0.378966 0.420218 0.755693
+X  0.753379 0.897541 0.780595
+3
+10 10 10
+X  0.404136 0.41966 0.433687
+X  0.907284 0.500065 0.975934
+X  0.808179 0.351851 0.659387
+3
+10 10 10
+X  0.138826 0.452905 0.0536473
+X  0.0327351 0.113207 0.939121
+X  0.126812 0.538568 0.175496
+3
+10 10 10
+X  0.280188 0.687766 0.734831
+X  0.280593 0.125433 0.158607
+X  0.699784 0.504399 0.578825
+3
+10 10 10
+X  0.455477 0.257778 0.476366
+X  0.236071 0.661914 0.896026
+X  0.669759 0.569198 0.396091
+3
+10 10 10
+X  0.645693 0.377377 0.747942
+X  0.30508 0.516203 0.200847
+X  0.358727 0.548938 0.314054
+3
+10 10 10
+X  0.297849 0.67575 0.852622
+X  0.473345 0.955938 0.540389
+X  0.208175 0.236531 0.665822
+3
+10 10 10
+X  0.366783 0.936315 0.170221
+X  0.945608 0.391792 0.427999
+X  0.421975 0.627863 0.0899137
+3
+10 10 10
+X  0.318 0.297622 0.659112
+X  0.714091 0.943315 0.0364889
+X  0.462033 0.248395 0.552692
+3
+10 10 10
+X  0.66288 0.607122 0.10163
+X  0.976935 0.904971 0.77738
+X  0.829557 0.378316 0.733318
+3
+10 10 10
+X  0.369946 0.586491 0.969849
+X  0.0357674 0.953274 0.906164
+X  0.205989 0.898882 0.297956
+3
+10 10 10
+X  0.633988 0.320857 0.925819
+X  0.723902 0.638857 0.223441
+X  0.383013 0.352948 0.166755
+3
+10 10 10
+X  0.419502 0.814982 0.41515
+X  0.972194 0.477862 0.0222729
+X  0.0738238 0.454797 0.927244
+3
+10 10 10
+X  0.851204 0.284354 0.30556
+X  0.584522 0.654299 0.892051
+X  0.554371 0.690067 0.845325
+3
+10 10 10
+X  0.460535 0.896055 0.744207
+X  0.758491 0.530043 0.0650635
+X  0.68431 0.253945 0.703921
+3
+10 10 10
+X  0.90775 0.636959 0.056869
+X  0.0745054 0.0564608 0.871851
+X  0.489656 0.0286548 0.349713
+3
+10 10 10
+X  0.511929 0.102479 0.80451
+X  0.439173 0.953683 0.0888636
+X  0.744732 0.538205 0.743163
+3
+10 10 10
+X  0.636783 0.092576 0.43323
+X  0.482107 0.553111 0.329285
+X  0.226314 0.311602 0.859329
+3
+10 10 10
+X  0.291378 0.995912 0.113274
+X  0.995298 0.903662 0.750232
+X  0.0521674 0.978167 0.806693
+3
+10 10 10
+X  0.924018 0.467823 0.835348
+X  0.273731 0.979752 0.937826
+X  0.0782409 0.418925 0.891509
+3
+10 10 10
+X  0.167104 0.163657 0.429714
+X  0.910267 0.80044 0.52229
+X  0.343497 0.282547 0.0754011
+3
+10 10 10
+X  0.672782 0.508861 0.387003
+X  0.532111 0.800239 0.382915
+X  0.645385 0.795537 0.286577
+3
+10 10 10
+X  0.395617 0.847705 0.264745
+X  0.20231 0.771723 0.732568
+X  0.0376578 0.0454541 0.71232
+3
+10 10 10
+X  0.975484 0.123695 0.131244
+X  0.866993 0.290799 0.294901
+X  0.296707 0.201067 0.0953408
+3
+10 10 10
+X  0.818996 0.544564 0.377888
+X  0.894397 0.217346 0.886749
+X  0.281401 0.749457 0.686988
+3
+10 10 10
+X  0.664316 0.394842 0.482525
+X  0.950893 0.790458 0.33023
+X  0.215638 0.992768 0.101953
+3
+10 10 10
+X  0.948206 0.0304262 0.147407
+X  0.660526 0.00591033 0.271102
+X  0.79177 0.872903 0.561902
+3
+10 10 10
+X  0.0866714 0.16961 0.762968
+X  0.182012 0.988606 0.307532
+X  0.5599 0.883004 0.524878
+3
+10 10 10
+X  0.446649 0.164405 0.274335
+X  0.133637 0.828721 0.669177
+X  0.616163 0.779615 0.459635
+3
+10 10 10
+X  0.946393 0.995253 0.452404
+X  0.048346 0.943459 0.48283
+X  0.195753 0.603984 0.48874
+3
+10 10 10
+X  0.466855 0.395754 0.361644
+X  0.028757 0.482426 0.531254
+X  0.791725 0.664438 0.51986
+3
+10 10 10
+X  0.0992575 0.224338 0.402864
+X  0.624136 0.670987 0.567269
+X  0.898471 0.804625 0.39599
+3
+10 10 10
+X  0.567648 0.420787 0.175605
+X  0.0272838 0.36718 0.170857
+X  0.479688 0.415526 0.114316
+3
+10 10 10
+X  0.962518 0.611279 0.7183
+X  0.451258 0.0781347 0.114054
+X  0.812902 0.106892 0.59648
+3
+10 10 10
+X  0.344156 0.898617 0.260918
+X  0.864016 0.997875 0.485257
+X  0.26688 0.622011 0.156244
+3
+10 10 10
+X  0.834149 0.520482 0.960868
+X  0.230139 0.0881301 0.381656
+X  0.405744 0.115414 0.748836
+3
+10 10 10
+X  0.576601 0.595102 0.164362
+X  0.690917 0.557619 0.775641
+X  0.409217 0.00887705 0.853776
+3
+10 10 10
+X  0.523271 0.821779 0.960668
+X  0.119752 0.165934 0.859285
+X  0.38067 0.0299502 0.857159
+3
+10 10 10
+X  0.865927 0.29683 0.47917
+X  0.0221705 0.130979 0.999652
+X  0.983039 0.361119 0.0877818
+3
+10 10 10
+X  0.364695 0.766862 0.203196
+X  0.11353 0.343464 0.798297
+X  0.277892 0.0343803 0.355916
+3
+10 10 10
+X  0.0535336 0.443597 0.364793
+X  0.90731 0.966868 0.186572
+X  0.867977 0.08662 0.352506
+3
+10 10 10
+X  0.727262 0.46729 0.382457
+X  0.584421 0.333217 0.679287
+X  0.0635912 0.355387 0.810266
+3
+10 10 10
+X  0.0632429 0.338426 0.171385
+X  0.151025 0.703121 0.938247
+X  0.354221 0.816651 0.281711
+3
+10 10 10
+X  0.152518 0.0945434 0.316091
+X  0.508434 0.148077 0.759688
+X  0.873228 0.0553866 0.726557
+3
+10 10 10
+X  0.0597998 0.923364 0.813177
+X  0.412306 0.650626 0.280467
+X  0.794763 0.235047 0.613683
+3
+10 10 10
+X  0.47405 0.298639 0.96907
+X  0.284316 0.361881 0.307496
+X  0.455701 0.512906 0.0106171
+3
+10 10 10
+X  0.393948 0.867127 0.827268
+X  0.675659 0.0196445 0.921812
+X  0.991751 0.528079 0.0698885
+3
+10 10 10
+X  0.751439 0.401306 0.125275
+X  0.477996 0.461106 0.048639
+X  0.291173 0.873412 0.699265
+3
+10 10 10
+X  0.571639 0.668175 0.934312
+X  0.185323 0.142225 0.232951
+X  0.154393 0.426541 0.594832
+3
+10 10 10
+X  0.46189 0.882242 0.107738
+X  0.472507 0.27619 0.974865
+X  0.299775 0.95185 0.99451
+3
+10 10 10
+X  0.221587 0.943601 0.522588
+X  0.291475 0.69504 0.923895
+X  0.41675 0.173036 0.385001
+3
+10 10 10
+X  0.465389 0.464208 0.258413
+X  0.164654 0.0358477 0.926589
+X  0.0989663 0.221171 0.0688135
+3
+10 10 10
+X  0.331917 0.375564 0.495355
+X  0.926749 0.837454 0.377597
+X  0.0344874 0.309961 0.653787
+3
+10 10 10
+X  0.00935241 0.609736 0.605637
+X  0.00386199 0.831323 0.549238
+X  0.52645 0.122798 0.244277
+3
+10 10 10
+X  0.450345 0.539549 0.417313
+X  0.835346 0.00493794 0.881521
+X  0.0937589 0.169592 0.917369
+3
+10 10 10
+X  0.0203474 0.268558 0.138539
+X  0.089161 0.600475 0.514103
+X  0.584516 0.527224 0.351557
+3
+10 10 10
+X  0.962112 0.561712 0.661518
+X  0.615899 0.571064 0.271254
+X  0.221536 0.574926 0.102577
+3
+10 10 10
+X  0.770774 0.101377 0.225375
+X  0.015051 0.551721 0.764924
+X  0.432364 0.387067 0.769862
+3
+10 10 10
+X  0.313885 0.480826 0.939454
+X  0.231253 0.501174 0.208012
+X  0.369793 0.590334 0.808488
+3
+10 10 10
+X  0.883896 0.17485 0.335712
+X  0.235453 0.136962 0.897424
+X  0.896971 0.752861 0.468488
+3
+10 10 10
+X  0.168225 0.974398 0.0434146
+X  0.270803 0.745172 0.144791
+X  0.496178 0.760223 0.696513
+3
+10 10 10
+X  0.261102 0.192586 0.0835797
+X  0.0309635 0.506471 0.564406
+X  0.970417 0.737725 0.0655793
+3
+10 10 10
+X  0.17843 0.107517 0.655914
+X  0.986918 0.991413 0.830764
+X  0.32263 0.226866 0.967726
+3
+10 10 10
+X  0.220054 0.123838 0.720587
+X  0.688542 0.292063 0.694985
+X  0.731957 0.562866 0.440157
+3
+10 10 10
+X  0.876748 0.0590435 0.200379
+X  0.573261 0.320145 0.392965
+X  0.65684 0.351109 0.899437
+3
+10 10 10
+X  0.221246 0.321526 0.637161
+X  0.286825 0.499956 0.744678
+X  0.942739 0.486873 0.736092
+3
+10 10 10
+X  0.773503 0.809503 0.962958
+X  0.741229 0.0295571 0.0867955
+X  0.461816 0.718099 0.378859
+3
+10 10 10
+X  0.156801 0.450056 0.941724
+X  0.596958 0.326804 0.000767693
+X  0.797337 0.900065 0.320913
+3
+10 10 10
+X  0.190303 0.556905 0.672021
+X  0.0897392 0.778152 0.993547
+X  0.7269 0.0649769 0.493503
+3
+10 10 10
+X  0.471579 0.00771607 0.980376
+X  0.20767 0.781219 0.789879
+X  0.170628 0.522448 0.819437
+3
+10 10 10
+X  0.257423 0.984264 0.537536
+X  0.636282 0.141065 0.987592
+X  0.578006 0.738023 0.314397
+3
+10 10 10
+X  0.578774 0.53536 0.214462
+X  0.899687 0.725663 0.771367
+X  0.571708 0.815402 0.549519
+3
+10 10 10
+X  0.565256 0.542303 0.614496
+X  0.0587587 0.0138811 0.622212
+X  0.0391351 0.221551 0.403431
+3
+10 10 10
+X  0.829015 0.392179 0.925878
+X  0.648451 0.649603 0.910142
+X  0.185987 0.285885 0.0512077
+3
+10 10 10
+X  0.173579 0.863891 0.789231
+X  0.487976 0.442665 0.324591
+X  0.702437 0.342352 0.0502544
+3
+10 10 10
+X  0.473805 0.91406 0.865657
+X  0.0233231 0.479315 0.407959
+X  0.637819 0.538074 0.42184
+3
+10 10 10
+X  0.26003 0.577209 0.643391
+X  0.663461 0.406224 0.0355706
+X  0.589339 0.0546747 0.685173
+3
+10 10 10
+X  0.499481 0.240662 0.971058
+X  0.550689 0.414241 0.834949
+X  0.33992 0.902217 0.277614
+3
+10 10 10
+X  0.664511 0.604654 0.619965
+X  0.714766 0.0784585 0.534025
+X  0.580422 0.101782 0.0133406
+3
+10 10 10
+X  0.988382 0.7396 0.551415
+X  0.410222 0.99963 0.128624
+X  0.0536133 0.663091 0.534848
+3
+10 10 10
+X  0.0891839 0.25243 0.589522
+X  0.774357 0.751912 0.830184
+X  0.745415 0.302601 0.244425
+3
+10 10 10
+X  0.580364 0.642521 0.146641
+X  0.857978 0.307032 0.751295
+X  0.477943 0.0217983 0.829754
+3
+10 10 10
+X  0.0119682 0.602221 0.931535
+X  0.0253088 0.590602 0.671135
+X  0.576724 0.000824207 0.670766
+3
+10 10 10
+X  0.705347 0.0544375 0.333857
+X  0.240195 0.143621 0.586288
+X  0.829717 0.917979 0.338199
+3
+10 10 10
+X  0.659901 0.663394 0.6408
+X  0.904326 0.243758 0.283321
+X  0.0509667 0.101735 0.590354
+3
+10 10 10
+X  0.802262 0.579678 0.612152
+X  0.632015 0.591647 0.214373
+X  0.56355 0.616955 0.804975
+3
+10 10 10
+X  0.234686 0.193679 0.805799
+X  0.905452 0.899026 0.860237
+X  0.239309 0.139221 0.00385829
+3
+10 10 10
+X  0.825596 0.968939 0.921837
+X  0.163796 0.62884 0.58523
+X  0.804596 0.533165 0.828988
+3
+10 10 10
+X  0.0879172 0.584132 0.930723
+X  0.678271 0.386394 0.510402
+X  0.290423 0.0184091 0.102048
+3
+10 10 10
+X  0.504796 0.58196 0.719004
+X  0.309771 0.816645 0.912683
+X  0.115571 0.722097 0.811709
+3
+10 10 10
+X  0.975807 0.961406 0.95093
+X  0.979666 0.787003 0.919869
+X  0.901503 0.950798 0.548708
+3
+10 10 10
+X  0.486733 0.755394 0.0818735
+X  0.315721 0.843312 0.666005
+X  0.246445 0.521583 0.0523992
+3
+10 10 10
+X  0.756846 0.812006 0.0708083
+X  0.858895 0.316802 0.652768
+X  0.577898 0.626573 0.469413
+3
+10 10 10
+X  0.490581 0.742143 0.191511
+X  0.30229 0.717951 0.152917
+X  0.25322 0.697616 0.93992
+3
+10 10 10
+X  0.173089 0.599119 0.890718
+X  0.721797 0.0858521 0.646113
+X  0.80367 0.401573 0.489424
+3
+10 10 10
+X  0.469676 0.648018 0.0110069
+X  0.522075 0.404864 0.823013
+X  0.592883 0.263759 0.139814
+3
+10 10 10
+X  0.245651 0.841657 0.766387
+X  0.715065 0.332238 0.50853
+X  0.906575 0.634528 0.226481
+3
+10 10 10
+X  0.0594924 0.887748 0.924097
+X  0.999412 0.0608362 0.523216
+X  0.89013 0.782633 0.609068
+3
+10 10 10
+X  0.536243 0.586303 0.0106416
+X  0.0256669 0.0559791 0.658659
+X  0.0366738 0.578054 0.0635237
+3
+10 10 10
+X  0.859686 0.170937 0.327283
+X  0.9995 0.416589 0.16894
+X  0.765887 0.131653 0.501178
+3
+10 10 10
+X  0.274417 0.0382287 0.135705
+X  0.500898 0.0977211 0.0234531
+X  0.424995 0.0971331 0.0842894
+3
+10 10 10
+X  0.948211 0.987263 0.866922
+X  0.557279 0.523506 0.453226
+X  0.567921 0.549173 0.509205
+3
+10 10 10
+X  0.22658 0.585846 0.0872588
+X  0.290104 0.445533 0.258196
+X  0.617387 0.445033 0.674785
+3
+10 10 10
+X  0.786326 0.21092 0.806438
+X  0.287504 0.485337 0.844667
+X  0.423209 0.986235 0.942388
+3
+10 10 10
+X  0.446662 0.41123 0.039521
+X  0.530952 0.359441 0.0267842
+X  0.397874 0.91672 0.55029
+3
+10 10 10
+X  0.8511 0.484641 0.0994628
+X  0.360305 0.711222 0.685309
+X  0.447564 0.00132573 0.130842
+3
+10 10 10
+X  0.70576 0.618712 0.575875
+X  0.380544 0.405038 0.786796
+X  0.186983 0.692542 0.272133
+3
+10 10 10
+X  0.0316495 0.115752 0.258368
+X  0.974037 0.562414 0.669598
+X  0.0135584 0.0933659 0.0290395
+3
+10 10 10
+X  0.0403427 0.49124 0.94576
+X  0.590633 0.34234 0.430401
+X  0.690096 0.702645 0.141623
+3
+10 10 10
+X  0.375405 0.150208 0.142949
+X  0.506247 0.855968 0.761661
+X  0.0821224 0.236512 0.166699
+3
+10 10 10
+X  0.868918 0.423495 0.859242
+X  0.141051 0.455145 0.974993
+X  0.39942 0.429182 0.537407
+3
+10 10 10
+X  0.0690179 0.44274 0.630773
+X  0.0980574 0.483083 0.122013
+X  0.0438174 0.0737159 0.464353
+3
+10 10 10
+X  0.474219 0.763811 0.166998
+X  0.615842 0.139216 0.317206
+X  0.75879 0.645464 0.173174
+3
+10 10 10
+X  0.520451 0.727586 0.409687
+X  0.687151 0.596504 0.833182
+X  0.546393 0.737555 0.288326
+3
+10 10 10
+X  0.521386 0.136975 0.717508
+X  0.0587931 0.205993 0.160248
+X  0.689566 0.30405 0.643331
+3
+10 10 10
+X  0.811579 0.347868 0.717047
+X  0.275933 0.822086 0.480859
+X  0.442931 0.437928 0.620075
+3
+10 10 10
+X  0.760137 0.196719 0.265539
+X  0.933311 0.71717 0.993125
+X  0.342998 0.404321 0.589629
+3
+10 10 10
+X  0.176179 0.950714 0.327184
+X  0.464505 0.472099 0.464159
+X  0.182014 0.530892 0.670152
+3
+10 10 10
+X  0.342262 0.220459 0.974202
+X  0.985593 0.0320382 0.32207
+X  0.702641 0.307971 0.144156
+3
+10 10 10
+X  0.1835 0.750902 0.582084
+X  0.803575 0.511039 0.778803
+X  0.0691138 0.44435 0.495973
+3
+10 10 10
+X  0.0622386 0.787347 0.900294
+X  0.651868 0.963527 0.851007
+X  0.979052 0.428032 0.323107
+3
+10 10 10
+X  0.443211 0.610046 0.853999
+X  0.113363 0.952308 0.0744578
+X  0.0875648 0.937901 0.106496
+3
+10 10 10
+X  0.409635 0.640542 0.414467
+X  0.553791 0.824041 0.165369
+X  0.135875 0.627616 0.676407
+3
+10 10 10
+X  0.914678 0.69673 0.120757
+X  0.410651 0.758969 0.908104
+X  0.310944 0.410836 0.871631
+3
+10 10 10
+X  0.161952 0.389888 0.299663
+X  0.485059 0.833099 0.909708
+X  0.339058 0.946461 0.862016
+3
+10 10 10
+X  0.413516 0.0340263 0.799917
+X  0.520012 0.443661 0.440458
+X  0.934478 0.997451 0.2645
+3
+10 10 10
+X  0.0998469 0.133326 0.892116
+X  0.776254 0.048004 0.588846
+X  0.897011 0.458655 0.347815
+3
+10 10 10
+X  0.805115 0.769599 0.758651
+X  0.676745 0.931551 0.148539
+X  0.976408 0.416609 0.981637
+3
+10 10 10
+X  0.886116 0.755667 0.928099
+X  0.748131 0.169183 0.962125
+X  0.548048 0.689194 0.405786
+3
+10 10 10
+X  0.988506 0.623672 0.403238
+X  0.253006 0.723519 0.536564
+X  0.145122 0.499773 0.584568
+3
+10 10 10
+X  0.733968 0.396784 0.0432225
+X  0.0817827 0.201899 0.812821
+X  0.840433 0.878644 0.744372
+3
+10 10 10
+X  0.988972 0.855051 0.160982
+X  0.97061 0.741167 0.916649
+X  0.898709 0.489298 0.0858311
+3
+10 10 10
+X  0.860834 0.0373466 0.775025
+X  0.26662 0.0258531 0.398698
+X  0.669857 0.278859 0.122217
+3
+10 10 10
+X  0.206421 0.423981 0.62199
+X  0.790989 0.157949 0.0187743
+X  0.834212 0.239732 0.220673
+3
+10 10 10
+X  0.647033 0.0801656 0.0993164
+X  0.391405 0.0691378 0.954368
+X  0.552387 0.0397475 0.695535
+3
+10 10 10
+X  0.469035 0.938456 0.184833
+X  0.554866 0.79929 0.22218
+X  0.329892 0.0659098 0.248033
+3
+10 10 10
+X  0.728589 0.735767 0.526892
+X  0.850806 0.942188 0.950873
+X  0.472796 0.733178 0.108823
+3
+10 10 10
+X  0.491571 0.567389 0.348555
+X  0.712244 0.214422 0.42872
+X  0.81156 0.605827 0.497858
+3
+10 10 10
+X  0.765928 0.158214 0.537606
+X  0.461462 0.62725 0.476062
+X  0.646295 0.182116 0.275352
+3
+10 10 10
+X  0.868475 0.512008 0.341262
+X  0.116508 0.240597 0.0770289
+X  0.6434 0.0914027 0.0192173
+3
+10 10 10
+X  0.594273 0.564199 0.752395
+X  0.703096 0.0557698 0.319784
+X  0.0516508 0.768013 0.534206
+3
+10 10 10
+X  0.480371 0.579573 0.140033
+X  0.978229 0.345501 0.298248
+X  0.515835 0.806963 0.925497
+3
+10 10 10
+X  0.991897 0.453259 0.107613
+X  0.267249 0.321734 0.619621
+X  0.60851 0.438242 0.860217
+3
+10 10 10
+X  0.685539 0.0816417 0.95162
+X  0.704757 0.675915 0.515819
+X  0.457151 0.379011 0.571589
+3
+10 10 10
+X  0.776935 0.430662 0.339602
+X  0.311141 0.911033 0.919176
+X  0.451175 0.889262 0.264676
+3
+10 10 10
+X  0.749422 0.405098 0.0716397
+X  0.674919 0.396995 0.524898
+X  0.782533 0.664243 0.846632
+3
+10 10 10
+X  0.402153 0.272754 0.284874
+X  0.262371 0.958293 0.366516
+X  0.213991 0.663049 0.0424307
+3
+10 10 10
+X  0.72981 0.120201 0.421442
+X  0.301399 0.897136 0.852104
+X  0.641001 0.208278 0.763137
+3
+10 10 10
+X  0.560176 0.659452 0.652399
+X  0.824853 0.408875 0.0574968
+X  0.896493 0.083794 0.454491
+3
+10 10 10
+X  0.421391 0.866327 0.118735
+X  0.268023 0.26848 0.391488
+X  0.552897 0.530851 0.349781
+3
+10 10 10
+X  0.919413 0.744841 0.0128304
+X  0.961843 0.474651 0.133031
+X  0.383285 0.77605 0.0301674
+3
+10 10 10
+X  0.235388 0.417051 0.238445
+X  0.998525 0.977227 0.897897
+X  0.650924 0.80208 0.306772
+3
+10 10 10
+X  0.708421 0.698573 0.390566
+X  0.162912 0.119964 0.256892
+X  0.281647 0.387987 0.525373
+3
+10 10 10
+X  0.673135 0.940884 0.0562232
+X  0.022916 0.860296 0.801065
+X  0.0357464 0.822139 0.275716
+3
+10 10 10
+X  0.168778 0.205424 0.0517661
+X  0.198945 0.440813 0.468817
+X  0.43739 0.439338 0.446045
+3
+10 10 10
+X  0.335287 0.0902622 0.248125
+X  0.642059 0.798683 0.946698
+X  0.032625 0.961596 0.0666617
+3
+10 10 10
+X  0.289518 0.243243 0.454649
+X  0.81489 0.916378 0.395532
+X  0.871113 0.939294 0.255829
+3
+10 10 10
+X  0.672178 0.97504 0.0779679
+X  0.947894 0.143818 0.283392
+X  0.99966 0.342763 0.724205
+3
+10 10 10
+X  0.468477 0.780153 0.163543
+X  0.914522 0.11544 0.253805
+X  0.162647 0.757499 0.0524885
+3
+10 10 10
+X  0.109345 0.790125 0.0140841
+X  0.176006 0.079642 0.257327
+X  0.630655 0.894532 0.173704
+3
+10 10 10
+X  0.0261872 0.765645 0.112998
+X  0.282016 0.437823 0.0880377
+X  0.359984 0.385717 0.231855
+3
+10 10 10
+X  0.643376 0.385378 0.574618
+X  0.367581 0.853855 0.354771
+X  0.531124 0.768377 0.470211
+3
+10 10 10
+X  0.784929 0.931024 0.227711
+X  0.837417 0.0403683 0.0178355
+X  0.851501 0.216375 0.0974775
+3
+10 10 10
+X  0.108828 0.84703 0.99201
+X  0.282532 0.873217 0.757655
+X  0.39553 0.155233 0.195478
+3
+10 10 10
+X  0.483568 0.515216 0.581196
+X  0.715423 0.158592 0.966573
+X  0.290041 0.526173 0.820428
+3
+10 10 10
+X  0.644812 0.0572967 0.588805
+X  0.115024 0.842226 0.519828
+X  0.342735 0.679643 0.560197
+3
+10 10 10
+X  0.36057 0.531144 0.776571
+X  0.458048 0.639973 0.623601
+X  0.450057 0.922505 0.496818
+3
+10 10 10
+X  0.207712 0.318035 0.652051
+X  0.403191 0.801603 0.167267
+X  0.984386 0.517026 0.325859
+3
+10 10 10
+X  0.950959 0.807067 0.852032
+X  0.771387 0.451879 0.909329
+X  0.360192 0.566903 0.751554
+3
+10 10 10
+X  0.88002 0.909638 0.431197
+X  0.440217 0.270209 0.962342
+X  0.216789 0.728256 0.602314
+3
+10 10 10
+X  0.84039 0.178314 0.524819
+X  0.337208 0.386026 0.842854
+X  0.989258 0.789217 0.644457
+3
+10 10 10
+X  0.156525 0.773603 0.161482
+X  0.482384 0.724562 0.968549
+X  0.334416 0.495949 0.420429
+3
+10 10 10
+X  0.243745 0.856141 0.987332
+X  0.995299 0.736162 0.89697
+X  0.426496 0.176379 0.167179
+3
+10 10 10
+X  0.388838 0.393168 0.895435
+X  0.991152 0.233557 0.073749
+X  0.515971 0.570765 0.459775
+3
+10 10 10
+X  0.358825 0.560023 0.248992
+X  0.00328197 0.716548 0.0225948
+X  0.164764 0.198933 0.747157
+3
+10 10 10
+X  0.133314 0.533348 0.243106
+X  0.553743 0.777093 0.0992475
+X  0.541075 0.772392 0.835409
+3
+10 10 10
+X  0.438045 0.198887 0.0117881
+X  0.605223 0.587725 0.404956
+X  0.500659 0.578877 0.638513
+3
+10 10 10
+X  0.574408 0.0948478 0.209278
+X  0.0341828 0.453673 0.769301
+X  0.283175 0.456955 0.48585
+3
+10 10 10
+X  0.30577 0.621719 0.684782
+X  0.0529265 0.755033 0.218131
+X  0.296033 0.308776 0.995223
+3
+10 10 10
+X  0.39528 0.84985 0.767615
+X  0.230689 0.287895 0.966503
+X  0.242477 0.893119 0.554228
+3
+10 10 10
+X  0.647433 0.393777 0.133104
+X  0.285946 0.968185 0.227952
+X  0.495224 0.00236773 0.681625
+3
+10 10 10
+X  0.264525 0.285543 0.13858
+X  0.750374 0.591312 0.7603
+X  0.435157 0.644239 0.515333
+3
+10 10 10
+X  0.653287 0.940271 0.824109
+X  0.648511 0.335551 0.673959
+X  0.416126 0.566241 0.961854
+3
+10 10 10
+X  0.382628 0.808718 0.854973
+X  0.936856 0.456151 0.24875
+X  0.0699601 0.742097 0.216935
+3
+10 10 10
+X  0.297912 0.237321 0.219303
+X  0.979537 0.501846 0.504845
+X  0.118118 0.252221 0.0961575
+3
+10 10 10
+X  0.878417 0.687377 0.740396
+X  0.39375 0.340664 0.680667
+X  0.217858 0.989175 0.0162189
+3
+10 10 10
+X  0.891817 0.405301 0.58246
+X  0.853671 0.787929 0.391178
+X  0.708644 0.724785 0.84733
+3
+10 10 10
+X  0.957394 0.794745 0.589427
+X  0.17433 0.0926569 0.826748
+X  0.393632 0.0721944 0.328595
+3
+10 10 10
+X  0.898478 0.190312 0.580815
+X  0.994635 0.0687289 0.268192
+X  0.735031 0.462479 0.608857
+3
+10 10 10
+X  0.415699 0.680337 0.598032
+X  0.431918 0.572154 0.00333222
+X  0.0143773 0.425826 0.791261
+3
+10 10 10
+X  0.405555 0.13447 0.516045
+X  0.252885 0.0918645 0.31079
+X  0.842312 0.266194 0.403447
+3
+10 10 10
+X  0.66906 0.659826 0.475641
+X  0.997655 0.558304 0.665953
+X  0.57847 0.552939 0.734682
+3
+10 10 10
+X  0.846663 0.28797 0.197161
+X  0.455519 0.703669 0.877498
+X  0.0535511 0.135586 0.449652
+3
+10 10 10
+X  0.0568833 0.149964 0.875478
+X  0.848144 0.555519 0.00994797
+X  0.36419 0.808404 0.101812
+3
+10 10 10
+X  0.67498 0.650716 0.368006
+X  0.078427 0.319776 0.0278327
+X  0.554068 0.317431 0.586137
+3
+10 10 10
+X  0.220022 0.895901 0.139076
+X  0.954704 0.742564 0.427046
+X  0.151865 0.198083 0.130715
+3
+10 10 10
+X  0.0293628 0.251634 0.266301
+X  0.479015 0.308517 0.416264
+X  0.354493 0.156662 0.971783
+3
+10 10 10
+X  0.364441 0.520852 0.780187
+X  0.466253 0.195831 0.430903
+X  0.83426 0.274258 0.750679
+3
+10 10 10
+X  0.862092 0.828327 0.0681104
+X  0.448229 0.0483486 0.964012
+X  0.587305 0.00305258 0.706575
+3
+10 10 10
+X  0.0143505 0.154917 0.904658
+X  0.145065 0.18428 0.156293
+X  0.411366 0.663295 0.46481
+3
+10 10 10
+X  0.82763 0.017788 0.621472
+X  0.799414 0.382229 0.142323
+X  0.579601 0.848482 0.338155
+3
+10 10 10
+X  0.0105039 0.682742 0.612413
+X  0.761183 0.544834 0.44074
+X  0.829294 0.993064 0.489089
+3
+10 10 10
+X  0.793305 0.580368 0.492141
+X  0.499881 0.594719 0.647059
+X  0.404539 0.739784 0.831339
+3
+10 10 10
+X  0.560831 0.151149 0.494634
+X  0.0256415 0.97878 0.512422
+X  0.647113 0.778193 0.894651
+3
+10 10 10
+X  0.789437 0.357794 0.743133
+X  0.127591 0.368298 0.425875
+X  0.740005 0.129481 0.97071
+3
+10 10 10
+X  0.180745 0.958775 0.963773
+X  0.669833 0.75208 0.544142
+X  0.161975 0.251961 0.13886
+3
+10 10 10
+X  0.809034 0.6565 0.878644
+X  0.640373 0.217331 0.0297934
+X  0.135007 0.242973 0.00857304
+3
+10 10 10
+X  0.647429 0.890086 0.786766
+X  0.54208 0.679523 0.14456
+X  0.285213 0.807114 0.512858
+3
+10 10 10
+X  0.711088 0.547119 0.642339
+X  0.681798 0.727863 0.601114
+X  0.645571 0.397697 0.353195
+3
+10 10 10
+X  0.189713 0.559672 0.605156
+X  0.328573 0.368705 0.261656
+X  0.207217 0.00907761 0.478987
+3
+10 10 10
+X  0.23701 0.144084 0.72196
+X  0.245583 0.791513 0.612046
+X  0.0323497 0.333593 0.291569
+3
+10 10 10
+X  0.17691 0.618806 0.0986827
+X  0.689768 0.329894 0.645801
+X  0.332107 0.0116926 0.373665
+3
+10 10 10
+X  0.933221 0.657264 0.771361
+X  0.286416 0.846977 0.331033
+X  0.891572 0.17555 0.699738
+3
+10 10 10
+X  0.153227 0.382767 0.708816
+X  0.632214 0.619777 0.8529
+X  0.354174 0.865361 0.644413
+3
+10 10 10
+X  0.96622 0.89771 0.978006
+X  0.257789 0.0746203 0.596812
+X  0.356471 0.764388 0.926707
+3
+10 10 10
+X  0.00227268 0.0964953 0.938399
+X  0.375937 0.0297167 0.595663
+X  0.147299 0.316133 0.44264
+3
+10 10 10
+X  0.478332 0.207704 0.61819
+X  0.17807 0.360932 0.000956713
+X  0.886886 0.993146 0.620734
+3
+10 10 10
+X  0.739786 0.34732 0.486095
+X  0.384199 0.31354 0.383805
+X  0.362205 0.571328 0.458426
+3
+10 10 10
+X  0.959017 0.9278 0.222814
+X  0.885723 0.930072 0.319309
+X  0.824122 0.30601 0.349026
+3
+10 10 10
+X  0.419785 0.453309 0.665159
+X  0.862425 0.93164 0.872863
+X  0.480615 0.10971 0.233795
+3
+10 10 10
+X  0.481572 0.996596 0.226941
+X  0.102306 0.736382 0.57426
+X  0.588401 0.12058 0.8878
+3
+10 10 10
+X  0.972206 0.482785 0.459128
+X  0.430632 0.441802 0.386928
+X  0.653445 0.327525 0.317
+3
+10 10 10
+X  0.972754 0.151647 0.62301
+X  0.32178 0.571433 0.0763186
+X  0.986939 0.433858 0.00795897
+3
+10 10 10
+X  0.859802 0.914473 0.117669
+X  0.0935964 0.396045 0.114265
+X  0.320537 0.498351 0.850647
+3
+10 10 10
+X  0.894797 0.0867517 0.971227
+X  0.782597 0.0589577 0.454012
+X  0.241726 0.489589 0.895813
+3
+10 10 10
+X  0.628654 0.143034 0.223338
+X  0.945654 0.115789 0.374985
+X  0.568665 0.437569 0.946418
+3
+10 10 10
+X  0.644983 0.424507 0.380276
+X  0.652942 0.284309 0.294749
+X  0.770611 0.377905 0.690794
+3
+10 10 10
+X  0.884877 0.698442 0.189145
+X  0.735523 0.59324 0.275897
+X  0.70675 0.375837 0.334854
+3
+10 10 10
+X  0.160762 0.617563 0.824444
+X  0.0565758 0.246217 0.967478
+X  0.279914 0.191871 0.0832669
+3
+10 10 10
+X  0.654899 0.760536 0.520836
+X  0.601317 0.405519 0.945343
+X  0.981593 0.0584611 0.229652
+3
+10 10 10
+X  0.276343 0.829072 0.607557
+X  0.967137 0.713949 0.306
+X  0.156282 0.449472 0.899239
+3
+10 10 10
+X  0.432179 0.156223 0.275076
+X  0.767033 0.316985 0.892639
+X  0.591477 0.373561 0.138856
+3
+10 10 10
+X  0.558955 0.653475 0.330728
+X  0.642222 0.308374 0.0912634
+X  0.163057 0.909692 0.496782
+3
+10 10 10
+X  0.1084 0.891285 0.555243
+X  0.338052 0.167628 0.384316
+X  0.94561 0.134765 0.0982649
+3
+10 10 10
+X  0.251609 0.291046 0.547737
+X  0.150848 0.723225 0.70396
+X  0.425925 0.490258 0.0209454
+3
+10 10 10
+X  0.318564 0.0817345 0.394506
+X  0.45742 0.640689 0.0479816
+X  0.788148 0.282911 0.356356
+3
+10 10 10
+X  0.879411 0.445968 0.266048
+X  0.376193 0.554369 0.157333
+X  0.931437 0.892421 0.324961
+3
+10 10 10
+X  0.315753 0.83803 0.459726
+X  0.414018 0.0896395 0.750772
+X  0.961755 0.240488 0.473997
+3
+10 10 10
+X  0.665715 0.666412 0.964255
+X  0.686661 0.984976 0.0459892
+X  0.0811671 0.442396 0.686678
+3
+10 10 10
+X  0.129149 0.230544 0.969589
+X  0.485505 0.109955 0.415558
+X  0.751553 0.486148 0.969926
+3
+10 10 10
+X  0.908886 0.417585 0.862347
+X  0.233847 0.733338 0.700378
+X  0.693572 0.147356 0.790017
+3
+10 10 10
+X  0.444344 0.109111 0.0305051
+X  0.918341 0.774826 0.696918
+X  0.882596 0.461486 0.681894
+3
+10 10 10
+X  0.928585 0.542654 0.12429
+X  0.615263 0.671802 0.354834
+X  0.584853 0.157307 0.464789
+3
+10 10 10
+X  0.000410601 0.90886 0.950937
+X  0.970337 0.817745 0.368523
+X  0.832684 0.0515924 0.101861
+3
+10 10 10
+X  0.533062 0.745165 0.249216
+X  0.323079 0.189509 0.358327
+X  0.353584 0.10785 0.133153
+3
+10 10 10
+X  0.0505019 0.990446 0.594639
+X  0.732396 0.919031 0.137293
+X  0.856686 0.534294 0.809095
+3
+10 10 10
+X  0.21152 0.119147 0.966402
+X  0.676309 0.119558 0.875261
+X  0.627247 0.0898948 0.693007
+3
+10 10 10
+X  0.995769 0.922579 0.744599
+X  0.0976298 0.455641 0.489764
+X  0.346846 0.77872 0.679273
+3
+10 10 10
+X  0.705173 0.132305 0.787123
+X  0.838325 0.182807 0.77757
+X  0.432964 0.915202 0.6966
+3
+10 10 10
+X  0.570257 0.771888 0.230895
+X  0.379351 0.983408 0.350042
+X  0.345753 0.659718 0.4696
+3
+10 10 10
+X  0.221014 0.286964 0.559494
+X  0.914021 0.282733 0.482073
+X  0.65862 0.380363 0.937715
+3
+10 10 10
+X  0.148384 0.727209 0.716435
+X  0.827658 0.432382 0.848739
+X  0.614781 0.270707 0.031546
+3
+10 10 10
+X  0.392351 0.703671 0.946748
+X  0.0889511 0.273928 0.718636
+X  0.319846 0.65328 0.702045
+3
+10 10 10
+X  0.669888 0.999033 0.361762
+X  0.139488 0.220047 0.648727
+X  0.698982 0.134069 0.93146
+3
+10 10 10
+X  0.181056 0.792689 0.311823
+X  0.11877 0.941074 0.0390324
+X  0.835205 0.768731 0.471414
+3
+10 10 10
+X  0.683944 0.383512 0.742122
+X  0.71549 0.775863 0.445793
+X  0.662239 0.864814 0.719721
+3
+10 10 10
+X  0.380875 0.18466 0.373001
+X  0.0829198 0.854548 0.372034
+X  0.444682 0.994035 0.592081
+3
+10 10 10
+X  0.0934087 0.693017 0.72615
+X  0.0248686 0.874073 0.518839
+X  0.336692 0.992843 0.459913
+3
+10 10 10
+X  0.375724 0.828048 0.228644
+X  0.847139 0.511992 0.612156
+X  0.58926 0.227483 0.388019
+3
+10 10 10
+X  0.0350534 0.889721 0.252833
+X  0.754775 0.270596 0.437493
+X  0.127776 0.353516 0.292041
+3
+10 10 10
+X  0.49981 0.798198 0.286077
+X  0.0918911 0.891607 0.979094
+X  0.818041 0.916476 0.853167
+3
+10 10 10
+X  0.33688 0.253167 0.84601
+X  0.796793 0.628892 0.674058
+X  0.0254371 0.47603 0.18605
+3
+10 10 10
+X  0.637593 0.0652907 0.413533
+X  0.0256125 0.100344 0.303254
+X  0.278446 0.855119 0.573851
+3
+10 10 10
+X  0.715939 0.982895 0.927367
+X  0.00798011 0.482704 0.725565
+X  0.294057 0.574596 0.617172
+3
+10 10 10
+X  0.273151 0.392637 0.533647
+X  0.126318 0.729517 0.786815
+X  0.972328 0.52631 0.415707
+3
+10 10 10
+X  0.646386 0.551747 0.891737
+X  0.832436 0.189341 0.957028
+X  0.245969 0.214953 0.0573717
+3
+10 10 10
+X  0.549224 0.493399 0.91249
+X  0.123074 0.209338 0.895385
+X  0.0504407 0.217318 0.378089
+3
+10 10 10
+X  0.776006 0.511375 0.952685
+X  0.393178 0.784525 0.345322
+X  0.926825 0.910843 0.0748388
+3
+10 10 10
+X  0.71364 0.883171 0.601149
+X  0.129347 0.529557 0.152896
+X  0.0210835 0.361993 0.342237
+3
+10 10 10
+X  0.978111 0.607963 0.55719
+X  0.0354828 0.157186 0.0505891
+X  0.947973 0.28026 0.259927
+3
+10 10 10
+X  0.843358 0.330701 0.477245
+X  0.221448 0.106706 0.98862
+X  0.174133 0.499884 0.773145
+3
+10 10 10
+X  0.519454 0.426709 0.683988
+X  0.594293 0.140349 0.56716
+X  0.195442 0.269696 0.0967167
+3
+10 10 10
+X  0.348338 0.290779 0.45871
+X  0.690575 0.26889 0.0666728
+X  0.247766 0.304373 0.223859
+3
+10 10 10
+X  0.298355 0.252346 0.504119
+X  0.558282 0.0957045 0.83482
+X  0.0355268 0.317152 0.941527
+3
+10 10 10
+X  0.0241466 0.491285 0.441411
+X  0.797292 0.0107392 0.86812
+X  0.48128 0.605032 0.00846868
+3
+10 10 10
+X  0.0484399 0.800474 0.278164
+X  0.145157 0.148813 0.568943
+X  0.603867 0.839388 0.837833
+3
+10 10 10
+X  0.67054 0.0871539 0.142206
+X  0.894398 0.385509 0.394553
+X  0.398518 0.94379 0.490257
+3
+10 10 10
+X  0.233338 0.979317 0.807409
+X  0.174864 0.00346381 0.298694
+X  0.616275 0.800756 0.309433
+3
+10 10 10
+X  0.484394 0.282036 0.914465
+X  0.492863 0.330476 0.71494
+X  0.771027 0.475632 0.863753
+3
+10 10 10
+X  0.339971 0.0794991 0.703141
+X  0.177804 0.750039 0.790295
+X  0.320011 0.644437 0.175803
+3
+10 10 10
+X  0.714563 0.0429547 0.119594
+X  0.20482 0.276292 0.098911
+X  0.0122294 0.451157 0.102375
+3
+10 10 10
+X  0.310923 0.0674315 0.90313
+X  0.620357 0.551826 0.185166
+X  0.534822 0.0446891 0.515642
+3
+10 10 10
+X  0.249762 0.815716 0.991274
+X  0.113514 0.155687 0.0707733
+X  0.816655 0.333491 0.820812
+3
+10 10 10
+X  0.60695 0.653502 0.465249
+X  0.782753 0.368065 0.508204
+X  0.902347 0.572885 0.784496
+3
+10 10 10
+X  0.00125782 0.585115 0.235653
+X  0.103633 0.896038 0.303084
+X  0.00676295 0.516395 0.85491
+3
+10 10 10
+X  0.191929 0.0512168 0.899599
+X  0.707571 0.300979 0.715316
+X  0.698845 0.414493 0.871003
+3
+10 10 10
+X  0.769619 0.231148 0.204495
+X  0.590431 0.838098 0.857997
+X  0.0556795 0.620851 0.226062
+3
+10 10 10
+X  0.563883 0.523198 0.798947
+X  0.348379 0.524456 0.384062
+X  0.584032 0.628089 0.2801
+3
+10 10 10
+X  0.887117 0.634851 0.796494
+X  0.742027 0.826781 0.847711
+X  0.641626 0.534352 0.14869
+3
+10 10 10
+X  0.356942 0.233197 0.563183
+X  0.227945 0.00281557 0.794331
+X  0.43244 0.593246 0.632429
+3
+10 10 10
+X  0.290436 0.648926 0.25328
+X  0.516498 0.212809 0.776479
+X  0.315445 0.561188 0.300935
+3
+10 10 10
+X  0.699507 0.145221 0.929023
+X  0.979606 0.0323375 0.563875
+X  0.7761 0.774365 0.390655
+3
+10 10 10
+X  0.623811 0.415991 0.925007
+X  0.772501 0.772933 0.158204
+X  0.335684 0.000878856 0.161019
+3
+10 10 10
+X  0.130015 0.433319 0.754266
+X  0.762444 0.723755 0.403191
+X  0.0157245 0.240253 0.616
+3
+10 10 10
+X  0.792203 0.555698 0.177188
+X  0.0931377 0.255205 0.322409
+X  0.0221609 0.234811 0.354747
+3
+10 10 10
+X  0.586035 0.0109114 0.129111
+X  0.976691 0.634723 0.545102
+X  0.901698 0.407224 0.318036
+3
+10 10 10
+X  0.0599016 0.742907 0.318915
+X  0.220921 0.872922 0.752233
+X  0.975187 0.635366 0.475989
+3
+10 10 10
+X  0.378378 0.651091 0.716242
+X  0.994378 0.443294 0.271941
+X  0.171566 0.536432 0.527146
+3
+10 10 10
+X  0.493976 0.558593 0.761957
+X  0.848722 0.144628 0.772868
+X  0.977834 0.121319 0.407591
+3
+10 10 10
+X  0.522936 0.0230164 0.814815
+X  0.840972 0.082918 0.557722
+X  0.159886 0.303839 0.430644
+3
+10 10 10
+X  0.912119 0.279026 0.0660107
+X  0.388108 0.657403 0.717102
+X  0.10435 0.651781 0.160395
+3
+10 10 10
+X  0.376291 0.823348 0.696827
+X  0.903437 0.317323 0.25542
+X  0.665394 0.166045 0.400048
+3
+10 10 10
+X  0.438262 0.143879 0.521366
+X  0.845853 0.666815 0.544383
+X  0.660668 0.507786 0.627301
+3
+10 10 10
+X  0.21839 0.667672 0.93114
+X  0.649034 0.579792 0.210166
+X  0.715045 0.9679 0.867569
+3
+10 10 10
+X  0.432147 0.0722504 0.51935
+X  0.592542 0.448542 0.342698
+X  0.289369 0.351978 0.660021
+3
+10 10 10
+X  0.544789 0.0173722 0.826066
+X  0.944836 0.455634 0.969945
+X  0.466203 0.301487 0.63676
+3
+10 10 10
+X  0.0105854 0.962155 0.144546
+X  0.637886 0.180545 0.812218
+X  0.569026 0.829579 0.39201
+3
+10 10 10
+X  0.779191 0.544624 0.35991
+X  0.64676 0.976771 0.43216
+X  0.166111 0.569313 0.880702
+3
+10 10 10
+X  0.508808 0.858682 0.23268
+X  0.168829 0.403471 0.250052
+X  0.994895 0.348307 0.705687
+3
+10 10 10
+X  0.96484 0.81451 0.00717383
+X  0.601599 0.825095 0.969329
+X  0.746145 0.462981 0.149874
+3
+10 10 10
+X  0.558363 0.0320072 0.979453
+X  0.950373 0.811199 0.524077
+X  0.310283 0.457959 0.500848
+3
+10 10 10
+X  0.742443 0.62407 0.0701613
+X  0.623144 0.132878 0.928843
+X  0.855825 0.301707 0.332314
+3
+10 10 10
+X  0.105877 0.296602 0.680621
+X  0.811564 0.261442 0.495131
+X  0.818737 0.863042 0.320226
+3
+10 10 10
+X  0.788066 0.609187 0.783207
+X  0.93794 0.16755 0.815214
+X  0.917393 0.117923 0.626413
+3
+10 10 10
+X  0.441471 0.428205 0.0843719
+X  0.942319 0.170648 0.708442
+X  0.0124802 0.793793 0.84132
+3
+10 10 10
+X  0.941324 0.649617 0.143027
+X  0.273638 0.755494 0.439629
+X  0.954259 0.567058 0.701071
+3
+10 10 10
+X  0.44939 0.385795 0.564112
+X  0.769615 0.173862 0.173299
+X  0.552822 0.111802 0.340849
+3
+10 10 10
+X  0.368037 0.0291947 0.458772
+X  0.994449 0.470665 0.886977
+X  0.0788214 0.412984 0.0576252
+3
+10 10 10
+X  0.787263 0.425464 0.851418
+X  0.628583 0.366788 0.501035
+X  0.771609 0.640426 0.256529
+3
+10 10 10
+X  0.211238 0.594684 0.823587
+X  0.912309 0.0440741 0.209382
+X  0.476422 0.81369 0.383244
+3
+10 10 10
+X  0.649721 0.366512 0.495046
+X  0.99057 0.734549 0.52424
+X  0.449341 0.728998 0.994905
+3
+10 10 10
+X  0.336318 0.80782 0.40789
+X  0.393943 0.595083 0.833354
+X  0.245361 0.223665 0.200142
+3
+10 10 10
+X  0.746396 0.995275 0.840567
+X  0.00292566 0.206513 0.435252
+X  0.826513 0.118822 0.479326
+3
+10 10 10
+X  0.0358954 0.595243 0.293015
+X  0.419139 0.244964 0.659527
+X  0.914185 0.235534 0.394076
+3
+10 10 10
+X  0.438425 0.684875 0.123074
+X  0.433331 0.0211931 0.930894
+X  0.84122 0.415137 0.525976
+3
+10 10 10
+X  0.674574 0.660498 0.749642
+X  0.874716 0.406894 0.744916
+X  0.715283 0.40982 0.951429
+3
+10 10 10
+X  0.150535 0.236333 0.0702509
+X  0.629861 0.272228 0.665494
+X  0.922876 0.691367 0.910458
+3
+10 10 10
+X  0.582403 0.605552 0.145992
+X  0.976479 0.0439776 0.830867
+X  0.0995537 0.477308 0.85206
+3
+10 10 10
+X  0.0304474 0.318528 0.267197
+X  0.556424 0.993102 0.927695
+X  0.306065 0.867818 0.334589
+3
+10 10 10
+X  0.0509814 0.583101 0.744408
+X  0.00241037 0.733636 0.980741
+X  0.0726613 0.363496 0.252969
+3
+10 10 10
+X  0.738156 0.286372 0.944336
+X  0.648614 0.868776 0.549889
+X  0.794606 0.845255 0.593867
+3
+10 10 10
+X  0.625473 0.944809 0.0711748
+X  0.477534 0.975256 0.389703
+X  0.74473 0.53168 0.382806
+3
+10 10 10
+X  0.672425 0.837745 0.250624
+X  0.00701368 0.888727 0.833725
+X  0.751422 0.891137 0.567361
+3
+10 10 10
+X  0.732163 0.963799 0.930858
+X  0.985132 0.701954 0.21723
+X  0.929469 0.350568 0.0860059
+3
+10 10 10
+X  0.479358 0.145175 0.931261
+X  0.073224 0.770648 0.87607
+X  0.144399 0.248182 0.851327
+3
+10 10 10
+X  0.534102 0.992912 0.383007
+X  0.916908 0.665337 0.220752
+X  0.167532 0.672351 0.109479
+3
+10 10 10
+X  0.00125721 0.423773 0.000616314
+X  0.568618 0.155936 0.964415
+X  0.499476 0.141068 0.666369
+3
+10 10 10
+X  0.716706 0.0705368 0.0169372
+X  0.802712 0.549894 0.162112
+X  0.733973 0.623118 0.93276
+3
+10 10 10
+X  0.610043 0.767517 0.180941
+X  0.46137 0.301619 0.173854
+X  0.844377 0.218527 0.839191
+3
+10 10 10
+X  0.0651288 0.386059 0.511541
+X  0.174608 0.387317 0.935314
+X  0.175224 0.955935 0.0912503
+3
+10 10 10
+X  0.139639 0.455411 0.232318
+X  0.806008 0.172117 0.302855
+X  0.822945 0.974829 0.85275
+3
+10 10 10
+X  0.985057 0.708802 0.475868
+X  0.917817 0.318845 0.243385
+X  0.0987583 0.780215 0.545005
+3
+10 10 10
+X  0.272612 0.624592 0.763532
+X  0.111803 0.68972 0.149591
+X  0.623344 0.864328 0.536908
+3
+10 10 10
+X  0.558658 0.0395525 0.492843
+X  0.649909 0.179192 0.948254
+X  0.882227 0.9852 0.120371
+3
+10 10 10
+X  0.185082 0.808145 0.0951994
+X  0.0378321 0.793202 0.804001
+X  0.5137 0.711019 0.122846
+3
+10 10 10
+X  0.757085 0.809777 0.903061
+X  0.30209 0.0823889 0.527653
+X  0.0656218 0.194191 0.217373
+3
+10 10 10
+X  0.215213 0.817535 0.0817017
+X  0.752121 0.376194 0.121254
+X  0.244964 0.0261023 0.300446
+3
+10 10 10
+X  0.193217 0.908329 0.285645
+X  0.313588 0.0934119 0.0937902
+X  0.408787 0.131244 0.886992
+3
+10 10 10
+X  0.212788 0.644944 0.598011
+X  0.335635 0.402029 0.407788
+X  0.238696 0.704119 0.490177
+3
+10 10 10
+X  0.766349 0.769741 0.684368
+X  0.983723 0.984954 0.501904
+X  0.0654244 0.737075 0.878097
+3
+10 10 10
+X  0.186679 0.982038 0.9042
+X  0.487124 0.175256 0.812529
+X  0.77277 0.488844 0.905941
+3
+10 10 10
+X  0.86656 0.897631 0.037185
+X  0.753552 0.110419 0.682129
+X  0.351563 0.446054 0.0841583
+3
+10 10 10
+X  0.759351 0.68475 0.788277
+X  0.249527 0.4511 0.558018
+X  0.933895 0.434822 0.542972
+3
+10 10 10
+X  0.435799 0.500247 0.280047
+X  0.313896 0.686925 0.262086
+X  0.218096 0.17405 0.437341
+3
+10 10 10
+X  0.0306254 0.94682 0.926185
+X  0.936566 0.81338 0.823816
+X  0.973751 0.566932 0.934235
+3
+10 10 10
+X  0.655881 0.918494 0.380289
+X  0.740039 0.677845 0.0650395
+X  0.528316 0.927372 0.516139
+3
+10 10 10
+X  0.0863347 0.861267 0.950961
+X  0.629307 0.297067 0.451208
+X  0.909354 0.610963 0.138133
+3
+10 10 10
+X  0.17144 0.829059 0.312183
+X  0.608781 0.859685 0.259002
+X  0.534966 0.796251 0.0723815
+3
+10 10 10
+X  0.358782 0.770003 0.639313
+X  0.293017 0.425883 0.557807
+X  0.673306 0.165922 0.235652
+3
+10 10 10
+X  0.738345 0.694238 0.163024
+X  0.254484 0.780573 0.0242916
+X  0.205445 0.40988 0.321358
+3
+10 10 10
+X  0.656653 0.319234 0.932321
+X  0.794786 0.490673 0.76138
+X  0.106969 0.0994544 0.621065
+3
+10 10 10
+X  0.365971 0.63442 0.417316
+X  0.438352 0.993202 0.187319
+X  0.0776651 0.286219 0.613202
+3
+10 10 10
+X  0.635472 0.959525 0.779124
+X  0.871125 0.69787 0.473362
+X  0.0341488 0.952354 0.253935
+3
+10 10 10
+X  0.0584404 0.1578 0.663814
+X  0.379799 0.814453 0.983048
+X  0.31212 0.609239 0.473722
+3
+10 10 10
+X  0.0735002 0.716208 0.573176
+X  0.694565 0.0821781 0.207597
+X  0.111881 0.52053 0.200799
+3
+10 10 10
+X  0.2992 0.598195 0.487018
+X  0.912402 0.233668 0.446542
+X  0.691525 0.104792 0.144412
+3
+10 10 10
+X  0.164887 0.138941 0.0967668
+X  0.418822 0.197382 0.254567
+X  0.0826362 0.57718 0.0690197
+3
+10 10 10
+X  0.0656846 0.8893 0.678259
+X  0.539406 0.9628 0.394466
+X  0.112583 0.657366 0.476645
+3
+10 10 10
+X  0.320179 0.769247 0.997175
+X  0.520978 0.0684469 0.59537
+X  0.00799569 0.980849 0.829038
+3
+10 10 10
+X  0.454538 0.672374 0.93383
+X  0.59895 0.837261 0.0727716
+X  0.695717 0.256083 0.270153
+3
+10 10 10
+X  0.950284 0.338719 0.847334
+X  0.0193035 0.404403 0.736634
+X  0.697562 0.94381 0.699434
+3
+10 10 10
+X  0.0920286 0.0563925 0.3568
+X  0.568673 0.376572 0.126047
+X  0.565848 0.89755 0.194494
+3
+10 10 10
+X  0.161218 0.905546 0.175342
+X  0.990256 0.360084 0.847716
+X  0.924086 0.959034 0.684977
+3
+10 10 10
+X  0.996858 0.654751 0.94106
+X  0.267011 0.605035 0.279778
+X  0.114345 0.624338 0.684182
+3
+10 10 10
+X  0.850978 0.321901 0.627992
+X  0.550413 0.413929 0.684384
+X  0.907212 0.982602 0.0609558
+3
+10 10 10
+X  0.0332592 0.54845 0.958506
+X  0.227753 0.709668 0.864051
+X  0.403095 0.699924 0.224135
+3
+10 10 10
+X  0.250811 0.62401 0.183169
+X  0.935788 0.620868 0.83792
+X  0.876848 0.887879 0.442955
+3
+10 10 10
+X  0.156626 0.00222359 0.0672935
+X  0.840808 0.853202 0.389194
+X  0.468799 0.403615 0.803123
+3
+10 10 10
+X  0.153183 0.310827 0.785726
+X  0.214139 0.344086 0.334176
+X  0.172645 0.571839 0.0438439
+3
+10 10 10
+X  0.0366962 0.974934 0.743768
+X  0.260831 0.225746 0.367778
+X  0.444 0.161534 0.988646
+3
+10 10 10
+X  0.28192 0.0383814 0.876525
+X  0.724876 0.195007 0.878748
+X  0.792169 0.0358152 0.73195
+3
+10 10 10
+X  0.181363 0.504614 0.135565
+X  0.984486 0.657798 0.446392
+X  0.770212 0.871937 0.790478
+3
+10 10 10
+X  0.104388 0.0445814 0.362317
+X  0.148232 0.0812776 0.337251
+X  0.891999 0.342109 0.562997
+3
+10 10 10
+X  0.259777 0.786109 0.724531
+X  0.248423 0.0680296 0.762912
+X  0.124948 0.792905 0.95792
+3
+10 10 10
+X  0.00369629 0.585074 0.993735
+X  0.735647 0.766437 0.498349
+X  0.871212 0.750923 0.156147
+3
+10 10 10
+X  0.317604 0.521135 0.0280833
+X  0.108082 0.625523 0.0726647
+X  0.470399 0.773755 0.153942
+3
+10 10 10
+X  0.80765 0.665754 0.496051
+X  0.370647 0.925532 0.28216
+X  0.095178 0.173955 0.35019
+3
+10 10 10
+X  0.85809 0.298903 0.143095
+X  0.81601 0.302599 0.728169
+X  0.809744 0.0382457 0.494606
+3
+10 10 10
+X  0.308093 0.909457 0.24553
+X  0.46424 0.227061 0.766665
+X  0.492323 0.335143 0.392188
+3
+10 10 10
+X  0.564988 0.805541 0.165943
+X  0.71893 0.613192 0.831697
+X  0.214982 0.983839 0.757229
+3
+10 10 10
+X  0.497142 0.0790171 0.931183
+X  0.847332 0.937107 0.230086
+X  0.990427 0.753117 0.532685
+3
+10 10 10
+X  0.718596 0.562861 0.570931
+X  0.213202 0.870954 0.480388
+X  0.458732 0.335194 0.707449
+3
+10 10 10
+X  0.225397 0.827517 0.0425917
+X  0.617585 0.392505 0.848133
+X  0.783528 0.111436 0.461325
+3
+10 10 10
+X  0.615225 0.326417 0.445164
+X  0.372454 0.823559 0.524181
+X  0.303637 0.670891 0.461288
+3
+10 10 10
+X  0.533723 0.661318 0.214405
+X  0.0664086 0.379914 0.777266
+X  0.63734 0.593116 0.64822
+3
+10 10 10
+X  0.117728 0.0518483 0.983414
+X  0.825177 0.277245 0.810932
+X  0.867769 0.894831 0.203437
+3
+10 10 10
+X  0.715902 0.678359 0.314873
+X  0.177227 0.293584 0.64129
+X  0.622391 0.666037 0.46485
+3
+10 10 10
+X  0.146572 0.969675 0.135741
+X  0.60786 0.503398 0.797059
+X  0.822265 0.569807 0.176973
+3
+10 10 10
+X  0.599531 0.207146 0.770089
+X  0.247751 0.324874 0.821938
+X  0.231166 0.150051 0.099183
+3
+10 10 10
+X  0.0420973 0.0178198 0.994014
+X  0.245534 0.733722 0.672372
+X  0.560407 0.910948 0.965956
+3
+10 10 10
+X  0.201698 0.533339 0.631993
+X  0.666547 0.679911 0.601668
+X  0.802288 0.287771 0.105066
+3
+10 10 10
+X  0.599347 0.110036 0.674873
+X  0.77632 0.709567 0.882019
+X  0.546409 0.957318 0.206893
+3
+10 10 10
+X  0.368347 0.188484 0.356944
+X  0.46753 0.230581 0.374764
+X  0.461543 0.476116 0.108485
+3
+10 10 10
+X  0.133915 0.0365229 0.0194337
+X  0.0998714 0.238221 0.552773
+X  0.731865 0.904768 0.232684
+3
+10 10 10
+X  0.333533 0.707056 0.520455
+X  0.438599 0.306403 0.630491
+X  0.113471 0.0827224 0.340058
+3
+10 10 10
+X  0.99549 0.629132 0.297376
+X  0.202383 0.997478 0.48586
+X  0.559327 0.465008 0.716441
+3
+10 10 10
+X  0.934091 0.926551 0.192557
+X  0.042576 0.0604668 0.229079
+X  0.0620097 0.160338 0.4673
+3
+10 10 10
+X  0.614782 0.892203 0.372068
+X  0.847466 0.225736 0.0791234
+X  0.367921 0.664335 0.385526
+3
+10 10 10
+X  0.998412 0.777806 0.468248
+X  0.33847 0.773296 0.09738
+X  0.635846 0.975679 0.0948584
+3
+10 10 10
+X  0.121706 0.535006 0.559866
+X  0.838147 0.469097 0.486418
+X  0.0307031 0.511673 0.546885
+3
+10 10 10
+X  0.259782 0.573683 0.707223
+X  0.727082 0.188465 0.599426
+X  0.0991501 0.0359314 0.825162
+3
+10 10 10
+X  0.178274 0.403852 0.489496
+X  0.5638 0.402264 0.267302
+X  0.032048 0.740733 0.0405986
+3
+10 10 10
+X  0.129428 0.376579 0.016278
+X  0.224286 0.498285 0.551284
+X  0.784153 0.336431 0.0203813
+3
+10 10 10
+X  0.270571 0.367134 0.532054
+X  0.817455 0.626917 0.105737
+X  0.524678 0.353999 0.294202
+3
+10 10 10
+X  0.124104 0.453149 0.330134
+X  0.949265 0.631423 0.733986
+X  0.438761 0.195222 0.13625
+3
+10 10 10
+X  0.706064 0.22727 0.876984
+X  0.746662 0.356698 0.253563
+X  0.76294 0.580985 0.751847
+3
+10 10 10
+X  0.314225 0.365138 0.0882787
+X  0.334606 0.635708 0.455413
+X  0.86666 0.453163 0.08233
+3
+10 10 10
+X  0.972397 0.977841 0.436329
+X  0.2666 0.101945 0.889479
+X  0.596733 0.0512101 0.520902
+3
+10 10 10
+X  0.330719 0.489971 0.716124
+X  0.466969 0.196035 0.943395
+X  0.343953 0.942697 0.300093
+3
+10 10 10
+X  0.597516 0.705638 0.881078
+X  0.349363 0.019862 0.246216
+X  0.437642 0.354468 0.881924
+3
+10 10 10
+X  0.893055 0.221128 0.335087
+X  0.975385 0.193525 0.312929
+X  0.411714 0.460125 0.414874
+3
+10 10 10
+X  0.301193 0.0568581 0.466084
+X  0.822095 0.387577 0.956055
+X  0.538219 0.854547 0.15209
+3
+10 10 10
+X  0.481613 0.1985 0.0947876
+X  0.781706 0.796015 0.800425
+X  0.662784 0.145378 0.820287
+3
+10 10 10
+X  0.909 0.58302 0.174755
+X  0.790924 0.476075 0.395883
+X  0.126011 0.451459 0.589408
+3
+10 10 10
+X  0.43894 0.863174 0.049533
+X  0.853813 0.164367 0.106391
+X  0.319897 0.986461 0.493969
+3
+10 10 10
+X  0.275952 0.52468 0.348515
+X  0.428043 0.00629338 0.547015
+X  0.52283 0.788 0.34303
+3
+10 10 10
+X  0.323255 0.450784 0.488408
+X  0.143543 0.359784 0.0714281
+X  0.318298 0.150708 0.547503
+3
+10 10 10
+X  0.714181 0.276719 0.998962
+X  0.303589 0.715658 0.862136
+X  0.353122 0.569472 0.0265022
+3
+10 10 10
+X  0.459513 0.889369 0.0129633
+X  0.953481 0.165321 0.537643
+X  0.301997 0.593364 0.543937
+3
+10 10 10
+X  0.849012 0.116194 0.331937
+X  0.192042 0.439449 0.782721
+X  0.68045 0.582992 0.142505
+3
+10 10 10
+X  0.751878 0.901289 0.293212
+X  0.299381 0.61547 0.569931
+X  0.298343 0.919059 0.285589
+3
+10 10 10
+X  0.160479 0.272181 0.855061
+X  0.186981 0.731694 0.744429
+X  0.199944 0.685175 0.90975
+3
+10 10 10
+X  0.737588 0.987172 0.503114
+X  0.281524 0.836184 0.619308
+X  0.613461 0.0282257 0.0587572
+3
+10 10 10
+X  0.396182 0.708676 0.641749
+X  0.538686 0.460554 0.543038
+X  0.831899 0.759935 0.158508
+3
+10 10 10
+X  0.40183 0.0582786 0.0775673
+X  0.687419 0.218758 0.349748
+X  0.542479 0.405739 0.0814416
+3
+10 10 10
+X  0.286909 0.605683 0.766617
+X  0.196659 0.343271 0.753789
+X  0.699773 0.624795 0.589973
+3
+10 10 10
+X  0.319081 0.238256 0.618198
+X  0.377838 0.634438 0.326874
+X  0.0195871 0.173124 0.787428
+3
+10 10 10
+X  0.562626 0.00502245 0.547364
+X  0.721134 0.406852 0.605642
+X  0.798701 0.0942707 0.8244
+3
+10 10 10
+X  0.148449 0.63675 0.230139
+X  0.229891 0.923659 0.835822
+X  0.996508 0.120318 0.179092
+3
+10 10 10
+X  0.750297 0.820091 0.803887
+X  0.340269 0.139171 0.0421432
+X  0.958467 0.517009 0.676581
+3
+10 10 10
+X  0.285341 0.536597 0.849705
+X  0.0727699 0.0992222 0.854727
+X  0.620134 0.820356 0.261579
+3
+10 10 10
+X  0.225776 0.619058 0.35585
+X  0.0501762 0.767507 0.9926
+X  0.280315 0.997398 0.916258
+3
+10 10 10
+X  0.116136 0.993906 0.0365761
+X  0.295228 0.744202 0.856667
+X  0.0991157 0.0844715 0.995838
+3
+10 10 10
+X  0.141259 0.0429388 0.512847
+X  0.81784 0.32828 0.0494439
+X  0.667544 0.40105 0.148666
+3
+10 10 10
+X  0.522272 0.0211838 0.969022
+X  0.783851 0.24696 0.58808
+X  0.1397 0.297136 0.355587
+3
+10 10 10
+X  0.1323 0.577451 0.352985
+X  0.0485586 0.693587 0.346891
+X  0.0851347 0.988816 0.0910929
+3
+10 10 10
+X  0.941801 0.0879312 0.175564
+X  0.937639 0.22919 0.218503
+X  0.450487 0.0470298 0.546783
+3
+10 10 10
+X  0.49993 0.714574 0.947833
+X  0.648596 0.236846 0.969017
+X  0.617619 0.0206964 0.215977
+3
+10 10 10
+X  0.205699 0.160397 0.513113
+X  0.561286 0.292697 0.0905641
+X  0.91427 0.341256 0.784151
+3
+10 10 10
+X  0.261161 0.42639 0.772967
+X  0.352254 0.368191 0.860898
+X  0.527818 0.305831 0.0900882
+3
+10 10 10
+X  0.746321 0.756317 0.137118
+X  0.293104 0.256248 0.851692
+X  0.240938 0.904844 0.088538
+3
+10 10 10
+X  0.209955 0.522463 0.109234
+X  0.425932 0.728161 0.269631
+X  0.939045 0.289447 0.562328
+3
+10 10 10
+X  0.0296093 0.203717 0.903584
+X  0.813761 0.464878 0.329974
+X  0.586727 0.817132 0.698165
+3
+10 10 10
+X  0.447625 0.34495 0.00399594
+X  0.537714 0.0912713 0.760313
+X  0.674832 0.384376 0.0165607
+3
+10 10 10
+X  0.526524 0.625314 0.921405
+X  0.615062 0.835268 0.443867
+X  0.724296 0.2612 0.172029
+3
+10 10 10
+X  0.993927 0.200246 0.461476
+X  0.556255 0.229855 0.665193
+X  0.459839 0.0436154 0.130072
+3
+10 10 10
+X  0.789813 0.630343 0.947204
+X  0.487978 0.0779682 0.292154
+X  0.491974 0.615682 0.383425
+3
+10 10 10
+X  0.252287 0.290513 0.767801
+X  0.268848 0.817037 0.393114
+X  0.190252 0.432099 0.228383
+3
+10 10 10
+X  0.63412 0.156395 0.489583
+X  0.806149 0.150322 0.689829
+X  0.267625 0.706577 0.919683
+3
+10 10 10
+X  0.932818 0.166416 0.963299
+X  0.0628894 0.956229 0.593642
+X  0.0100931 0.444206 0.67161
+3
+10 10 10
+X  0.302247 0.93618 0.287292
+X  0.685672 0.188467 0.577805
+X  0.453473 0.457315 0.394842
+3
+10 10 10
+X  0.846587 0.647567 0.826941
+X  0.07497 0.281687 0.983336
+X  0.564553 0.0878351 0.133659
+3
+10 10 10
+X  0.254382 0.35546 0.840236
+X  0.174065 0.288277 0.00665221
+X  0.137364 0.351167 0.962881
+3
+10 10 10
+X  0.731006 0.36126 0.407087
+X  0.402615 0.663507 0.343268
+X  0.689907 0.349179 0.531735
+3
+10 10 10
+X  0.267712 0.802652 0.989049
+X  0.662554 0.649239 0.636616
+X  0.489495 0.724209 0.918303
+3
+10 10 10
+X  0.472832 0.288762 0.00613772
+X  0.60649 0.543144 0.361597
+X  0.446726 0.717209 0.649875
+3
+10 10 10
+X  0.453378 0.854573 0.00104169
+X  0.416259 0.585579 0.362302
+X  0.823347 0.988194 0.0258086
+3
+10 10 10
+X  0.166614 0.678101 0.374988
+X  0.698349 0.945813 0.177639
+X  0.687398 0.608368 0.826878
+3
+10 10 10
+X  0.324014 0.0978629 0.551088
+X  0.242317 0.570695 0.83985
+X  0.248455 0.177185 0.382994
+3
+10 10 10
+X  0.610052 0.623911 0.100203
+X  0.259927 0.0772893 0.954776
+X  0.260968 0.493549 0.540355
+3
+10 10 10
+X  0.62327 0.316895 0.528549
+X  0.649079 0.48351 0.20665
+X  0.0240662 0.181859 0.152464
+3
+10 10 10
+X  0.201706 0.869257 0.760831
+X  0.0285841 0.193271 0.858694
+X  0.579672 0.435588 0.429389
+3
+10 10 10
+X  0.419521 0.684042 0.606573
+X  0.802515 0.294094 0.230484
+X  0.902718 0.554021 0.307774
+3
+10 10 10
+X  0.857493 0.814989 0.801322
+X  0.397848 0.438259 0.118217
+X  0.926397 0.0873379 0.601727
+3
+10 10 10
+X  0.133047 0.111404 0.783586
+X  0.285511 0.31311 0.652842
+X  0.0463421 0.341694 0.846113
+3
+10 10 10
+X  0.905036 0.921365 0.281701
+X  0.334425 0.340887 0.965743
+X  0.940998 0.143402 0.259837
+3
+10 10 10
+X  0.171482 0.0461191 0.813858
+X  0.479256 0.903612 0.628847
+X  0.280578 0.30146 0.0671061
+3
+10 10 10
+X  0.398795 0.227857 0.154444
+X  0.000522443 0.360904 0.265848
+X  0.784108 0.646415 0.578958
+3
+10 10 10
+X  0.43695 0.692757 0.920652
+X  0.283063 0.597793 0.842017
+X  0.564764 0.932218 0.182904
+3
+10 10 10
+X  0.530507 0.873216 0.326305
+X  0.790344 0.0446988 0.372424
+X  0.604202 0.523955 0.276037
+3
+10 10 10
+X  0.233048 0.804533 0.577497
+X  0.300155 0.203328 0.805354
+X  0.454599 0.203851 0.166258
+3
+10 10 10
+X  0.720447 0.987959 0.812673
+X  0.299405 0.424909 0.505431
+X  0.220056 0.707972 0.103224
+3
+10 10 10
+X  0.0620732 0.272736 0.0354423
+X  0.244977 0.803242 0.908659
+X  0.571282 0.593586 0.953358
+3
+10 10 10
+X  0.943706 0.197788 0.477312
+X  0.219743 0.430836 0.281845
+X  0.79724 0.730991 0.485173
+3
+10 10 10
+X  0.602594 0.185589 0.689024
+X  0.768852 0.906036 0.676982
+X  0.581526 0.205441 0.101891
+3
+10 10 10
+X  0.0869565 0.425497 0.809863
+X  0.190181 0.48757 0.0825982
+X  0.225623 0.732547 0.885841
+3
+10 10 10
+X  0.134282 0.303829 0.479427
+X  0.0876391 0.247535 0.677214
+X  0.564951 0.467278 0.10805
+3
+10 10 10
+X  0.846796 0.264518 0.839041
+X  0.331969 0.867112 0.0246303
+X  0.0209929 0.635965 0.930666
+3
+10 10 10
+X  0.697975 0.21749 0.136107
+X  0.799866 0.304447 0.561603
+X  0.609728 0.494627 0.0491733
+3
+10 10 10
+X  0.692326 0.72025 0.78172
+X  0.578167 0.854532 0.0855488
+X  0.0575937 0.942171 0.333084
+3
+10 10 10
+X  0.734808 0.507122 0.800362
+X  0.842858 0.353919 0.0648805
+X  0.681899 0.685888 0.931993
+3
+10 10 10
+X  0.70653 0.706881 0.567957
+X  0.637196 0.404856 0.785448
+X  0.773303 0.204722 0.0898946
+3
+10 10 10
+X  0.334906 0.81445 0.584522
+X  0.38408 0.506776 0.304772
+X  0.1658 0.0849434 0.159304
+3
+10 10 10
+X  0.251348 0.142537 0.101475
+X  0.584432 0.877345 0.608598
+X  0.384795 0.720204 0.962517
+3
+10 10 10
+X  0.449675 0.402103 0.648405
+X  0.381668 0.108633 0.355285
+X  0.949625 0.745829 0.760141
+3
+10 10 10
+X  0.735073 0.519132 0.964863
+X  0.824967 0.854038 0.779313
+X  0.40949 0.238118 0.286089
+3
+10 10 10
+X  0.714262 0.403917 0.371033
+X  0.873566 0.655266 0.51357
+X  0.975042 0.239698 0.390915
+3
+10 10 10
+X  0.58364 0.624493 0.111119
+X  0.546156 0.0741684 0.513222
+X  0.194561 0.455836 0.621855
+3
+10 10 10
+X  0.549846 0.405461 0.367684
+X  0.309987 0.140534 0.886816
+X  0.27485 0.965502 0.740854
+3
+10 10 10
+X  0.054163 0.374991 0.978972
+X  0.340252 0.0892532 0.382889
+X  0.711285 0.96282 0.0381551
+3
+10 10 10
+X  0.224854 0.937861 0.277854
+X  0.615769 0.521501 0.902347
+X  0.726888 0.0676572 0.976515
+3
+10 10 10
+X  0.24011 0.262218 0.432352
+X  0.861965 0.812064 0.837813
+X  0.229649 0.122052 0.978347
+3
+10 10 10
+X  0.116464 0.396902 0.943849
+X  0.857318 0.451065 0.31884
+X  0.83629 0.791317 0.408093
+3
+10 10 10
+X  0.219179 0.502602 0.370913
+X  0.257334 0.727456 0.308774
+X  0.535188 0.343226 0.830275
+3
+10 10 10
+X  0.437534 0.0701137 0.897932
+X  0.41405 0.310224 0.16015
+X  0.846401 0.172189 0.972215
+3
+10 10 10
+X  0.684214 0.401837 0.0942665
+X  0.662561 0.518301 0.491168
+X  0.60641 0.37562 0.942233
+3
+10 10 10
+X  0.925251 0.211909 0.733551
+X  0.333344 0.431088 0.236152
+X  0.704257 0.688422 0.963609
+3
+10 10 10
+X  0.0130312 0.22361 0.306834
+X  0.843306 0.661144 0.376948
+X  0.741239 0.0751938 0.687172
+3
+10 10 10
+X  0.901389 0.921595 0.85936
+X  0.873604 0.605809 0.261198
+X  0.967871 0.26837 0.779499
+3
+10 10 10
+X  0.459039 0.874781 0.155119
+X  0.401273 0.800031 0.367028
+X  0.134823 0.133375 0.798116
+3
+10 10 10
+X  0.370976 0.837632 0.486538
+X  0.334584 0.850663 0.710148
+X  0.641419 0.69397 0.371292
+3
+10 10 10
+X  0.0183669 0.435209 0.446486
+X  0.705539 0.336598 0.368081
+X  0.564899 0.210202 0.97389
+3
+10 10 10
+X  0.826097 0.178073 0.242261
+X  0.605596 0.637112 0.117041
+X  0.760714 0.0383841 0.917072
+3
+10 10 10
+X  0.127742 0.173207 0.0504474
+X  0.925858 0.544183 0.88808
+X  0.412397 0.878767 0.738743
+3
+10 10 10
+X  0.122545 0.520186 0.432712
+X  0.493837 0.538553 0.867921
+X  0.940324 0.244092 0.204519
+3
+10 10 10
+X  0.308405 0.808991 0.414721
+X  0.282295 0.635088 0.592793
+X  0.524556 0.240683 0.229905
+3
+10 10 10
+X  0.641597 0.00139733 0.268289
+X  0.558669 0.129139 0.441496
+X  0.609117 0.0549977 0.985679
+3
+10 10 10
+X  0.497196 0.467394 0.864447
+X  0.235939 0.589939 0.384633
+X  0.668651 0.0837769 0.923186
+3
+10 10 10
+X  0.536572 0.0241007 0.167278
+X  0.741091 0.332506 0.976269
+X  0.155812 0.614801 0.611356
+3
+10 10 10
+X  0.748606 0.139357 0.852039
+X  0.978511 0.780954 0.853437
+X  0.2468 0.339623 0.982576
+3
+10 10 10
+X  0.688296 0.94874 0.037574
+X  0.673976 0.445936 0.504968
+X  0.538422 0.681875 0.0949078
+3
+10 10 10
+X  0.923055 0.350527 0.178685
+X  0.846241 0.887099 0.202785
+X  0.0135191 0.62819 0.535291
+3
+10 10 10
+X  0.989788 0.784003 0.150092
+X  0.601144 0.532608 0.289449
+X  0.453184 0.511119 0.0704025
+3
+10 10 10
+X  0.306621 0.757918 0.410026
+X  0.289197 0.446215 0.358766
+X  0.326771 0.12019 0.804702
+3
+10 10 10
+X  0.831739 0.658612 0.486577
+X  0.926647 0.581668 0.837104
+X  0.105332 0.427909 0.724203
+3
+10 10 10
+X  0.308117 0.441428 0.352394
+X  0.843408 0.431216 0.136396
+X  0.9935 0.0323602 0.669004
+3
+10 10 10
+X  0.282949 0.485544 0.180123
+X  0.353351 0.792164 0.938041
+X  0.763377 0.0813613 0.384256
+3
+10 10 10
+X  0.122143 0.408132 0.504446
+X  0.926844 0.239871 0.163059
+X  0.413422 0.166518 0.744726
+3
+10 10 10
+X  0.250525 0.27185 0.172635
+X  0.974728 0.579967 0.614064
+X  0.327122 0.423375 0.0452796
+3
+10 10 10
+X  0.463518 0.416875 0.0776398
+X  0.132522 0.699824 0.563184
+X  0.312645 0.053175 0.355348
+3
+10 10 10
+X  0.250687 0.816552 0.43671
+X  0.634943 0.938695 0.844842
+X  0.139389 0.865539 0.0847128
+3
+10 10 10
+X  0.302448 0.278961 0.251231
+X  0.0471742 0.529486 0.523081
+X  0.21981 0.504214 0.103048
+3
+10 10 10
+X  0.833873 0.831336 0.526423
+X  0.879153 0.294854 0.943298
+X  0.956793 0.427377 0.643121
+3
+10 10 10
+X  0.519976 0.740022 0.696296
+X  0.875325 0.990709 0.512848
+X  0.312034 0.625652 0.451543
+3
+10 10 10
+X  0.156876 0.765041 0.317082
+X  0.241589 0.0674892 0.596042
+X  0.49282 0.114663 0.125528
+3
+10 10 10
+X  0.0159006 0.334473 0.629742
+X  0.118948 0.168346 0.461079
+X  0.645371 0.0474988 0.755933
+3
+10 10 10
+X  0.588669 0.00429139 0.18331
+X  0.23179 0.524268 0.923332
+X  0.928086 0.399592 0.914041
+3
+10 10 10
+X  0.440934 0.711627 0.539694
+X  0.892477 0.868503 0.304735
+X  0.209559 0.110091 0.372224
+3
+10 10 10
+X  0.805601 0.602911 0.486887
+X  0.93113 0.618812 0.82136
+X  0.560872 0.73776 0.989706
+3
+10 10 10
+X  0.0219507 0.383131 0.0372052
+X  0.777884 0.971799 0.0414966
+X  0.961194 0.203589 0.565764
+3
+10 10 10
+X  0.884526 0.131675 0.965357
+X  0.798567 0.57261 0.676984
+X  0.338261 0.465087 0.545486
+3
+10 10 10
+X  0.642996 0.674646 0.655577
+X  0.0152197 0.480247 0.258488
+X  0.502107 0.411376 0.8773
+3
+10 10 10
+X  0.323467 0.972249 0.61506
+X  0.313174 0.994199 0.998191
+X  0.350379 0.772083 0.96999
+3
+10 10 10
+X  0.391876 0.733277 0.173579
+X  0.95764 0.617802 0.305254
+X  0.922997 0.416369 0.877864
+3
+10 10 10
+X  0.599981 0.75463 0.342951
+X  0.145467 0.397625 0.0175963
+X  0.801044 0.412845 0.497843
+3
+10 10 10
+X  0.0595323 0.914952 0.90922
+X  0.936832 0.23842 0.881468
+X  0.551892 0.551594 0.875668
+3
+10 10 10
+X  0.550082 0.901973 0.647751
+X  0.520072 0.293849 0.381027
+X  0.693651 0.251489 0.99883
+3
+10 10 10
+X  0.998906 0.174486 0.415199
+X  0.87677 0.774466 0.169829
+X  0.21972 0.919933 0.567454
+3
+10 10 10
+X  0.237317 0.720977 0.9803
+X  0.73516 0.780509 0.895252
+X  0.64438 0.717341 0.133672
+3
+10 10 10
+X  0.525848 0.269233 0.685265
+X  0.401516 0.819316 0.587238
+X  0.0492661 0.339388 0.881087
+3
+10 10 10
+X  0.430293 0.0330394 0.132576
+X  0.429123 0.0319453 0.307061
+X  0.844322 0.908715 0.0815278
+3
+10 10 10
+X  0.014151 0.128435 0.00146079
+X  0.581605 0.365752 0.722438
+X  0.561905 0.100912 0.502947
+3
+10 10 10
+X  0.457157 0.745292 0.220288
+X  0.590828 0.27114 0.489522
+X  0.276094 0.672655 0.308837
+3
+10 10 10
+X  0.863332 0.721922 0.648225
+X  0.744419 0.152215 0.681264
+X  0.876994 0.581338 0.71321
+3
+10 10 10
+X  0.184055 0.42566 0.621925
+X  0.265583 0.439811 0.75036
+X  0.267044 0.0214164 0.116112
+3
+10 10 10
+X  0.989482 0.583321 0.217025
+X  0.492429 0.0404783 0.962317
+X  0.712717 0.631307 0.233456
+3
+10 10 10
+X  0.202239 0.907401 0.906112
+X  0.511076 0.770732 0.628034
+X  0.159301 0.515151 0.780249
+3
+10 10 10
+X  0.840565 0.392145 0.361586
+X  0.553775 0.576201 0.787246
+X  0.1757 0.841784 0.227057
+3
+10 10 10
+X  0.92606 0.108828 0.248474
+X  0.0421726 0.0983097 0.831795
+X  0.259197 0.590739 0.872274
+3
+10 10 10
+X  0.221514 0.303456 0.503581
+X  0.45497 0.505694 0.410981
+X  0.361082 0.0167703 0.181714
+3
+10 10 10
+X  0.989116 0.176071 0.696865
+X  0.769364 0.0166367 0.0890097
+X  0.130951 0.570412 0.66521
+3
+10 10 10
+X  0.918197 0.746112 0.506994
+X  0.145255 0.672172 0.615822
+X  0.393728 0.714344 0.714132
+3
+10 10 10
+X  0.225524 0.973542 0.30487
+X  0.0977975 0.195055 0.608326
+X  0.601378 0.650026 0.11402
+3
+10 10 10
+X  0.0123591 0.0111076 0.130791
+X  0.194073 0.000223212 0.306862
+X  0.890937 0.769587 0.323499
+3
+10 10 10
+X  0.979947 0.900538 0.893911
+X  0.645157 0.818735 0.640022
+X  0.152152 0.96399 0.312194
+3
+10 10 10
+X  0.767974 0.357718 0.0265387
+X  0.482106 0.583242 8.03829e-05
+X  0.786976 0.681039 0.195136
+3
+10 10 10
+X  0.395302 0.282417 0.845161
+X  0.509322 0.294776 0.856269
+X  0.640113 0.488849 0.856492
+3
+10 10 10
+X  0.946975 0.379786 0.626079
+X  0.270474 0.359733 0.526617
+X  0.164385 0.0048907 0.345352
+3
+10 10 10
+X  0.804407 0.157042 0.309342
+X  0.116601 0.925016 0.66706
+X  0.14314 0.407122 0.250302
+3
+10 10 10
+X  0.143221 0.194097 0.931341
+X  0.338356 0.589399 0.213759
+X  0.183518 0.0987217 0.508535
+3
+10 10 10
+X  0.0397864 0.738835 0.997384
+X  0.896278 0.68581 0.37717
+X  0.522358 0.956284 0.736904
+3
+10 10 10
+X  0.0489752 0.120669 0.741794
+X  0.394328 0.925076 0.898837
+X  0.70367 0.0416778 0.823853
+3
+10 10 10
+X  0.37073 0.184818 0.230974
+X  0.621032 0.328038 0.425072
+X  0.552373 0.666395 0.0144709
+3
+10 10 10
+X  0.766132 0.849912 0.113193
+X  0.274667 0.889699 0.852028
+X  0.272051 0.785977 0.537838
+3
+10 10 10
+X  0.649221 0.308335 0.494122
+X  0.386125 0.35731 0.614792
+X  0.127919 0.751638 0.539868
+3
+10 10 10
+X  0.026756 0.455307 0.581546
+X  0.850609 0.826037 0.766364
+X  0.0815829 0.447069 0.0944023
+3
+10 10 10
+X  0.506655 0.999442 0.760797
+X  0.521125 0.765574 0.610709
+X  0.634318 0.0402403 0.500408
+3
+10 10 10
+X  0.486346 0.312291 0.286385
+X  0.0241837 0.961512 0.59472
+X  0.518306 0.347637 0.95203
+3
+10 10 10
+X  0.133098 0.475556 0.703667
+X  0.672966 0.502312 0.158975
+X  0.254512 0.352921 0.985012
+3
+10 10 10
+X  0.0208756 0.434504 0.432081
+X  0.115278 0.941158 0.431523
+X  0.876075 0.462284 0.197096
+3
+10 10 10
+X  0.486784 0.0966018 0.237336
+X  0.987192 0.582948 0.549627
+X  0.273577 0.607131 0.51114
+3
+10 10 10
+X  0.868297 0.125437 0.858777
+X  0.820326 0.258535 0.334333
+X  0.523994 0.931501 0.836645
+3
+10 10 10
+X  0.682968 0.186013 0.189566
+X  0.66798 0.206888 0.62407
+X  0.100061 0.322166 0.565228
+3
+10 10 10
+X  0.531583 0.198241 0.0275116
+X  0.728679 0.685025 0.124113
+X  0.966016 0.672217 0.707061
+3
+10 10 10
+X  0.515643 0.945794 0.314192
+X  0.0267825 0.81409 0.439629
+X  0.885559 0.634416 0.698164
+3
+10 10 10
+X  0.219892 0.15841 0.629665
+X  0.0565368 0.841378 0.815678
+X  0.246103 0.509358 0.0225663
+3
+10 10 10
+X  0.870172 0.609419 0.344732
+X  0.4354 0.141002 0.542973
+X  0.462912 0.869681 0.227998
+3
+10 10 10
+X  0.587025 0.835697 0.900215
+X  0.294086 0.35134 0.846009
+X  0.608278 0.378122 0.660099
+3
+10 10 10
+X  0.0479073 0.263682 0.294515
+X  0.746072 0.483573 0.452926
+X  0.375737 0.54011 0.294304
+3
+10 10 10
+X  0.191415 0.786213 0.803662
+X  0.213982 0.656385 0.413081
+X  0.558714 0.0917848 0.554083
+3
+10 10 10
+X  0.101687 0.554696 0.423765
+X  0.329685 0.141721 0.259462
+X  0.2299 0.435807 0.610801
+3
+10 10 10
+X  0.0759093 0.0440851 0.988924
+X  0.736008 0.0919923 0.252606
+X  0.0305237 0.838064 0.736179
+3
+10 10 10
+X  0.483449 0.213801 0.276289
+X  0.777753 0.405217 0.0625016
+X  0.581415 0.619198 0.718886
+3
+10 10 10
+X  0.994496 0.177912 0.810671
+X  0.54858 0.279599 0.365368
+X  0.972344 0.609284 0.507089
+3
+10 10 10
+X  0.231806 0.839185 0.942896
+X  0.842607 0.915094 0.986981
+X  0.831531 0.651102 0.0789736
+3
+10 10 10
+X  0.0841368 0.681626 0.917038
+X  0.820316 0.165075 0.130839
+X  0.0966047 0.942828 0.536055
+3
+10 10 10
+X  0.159106 0.524244 0.155253
+X  0.877993 0.51874 0.333165
+X  0.688664 0.06732 0.612764
+3
+10 10 10
+X  0.0540318 0.0396644 0.222049
+X  0.561121 0.27147 0.0612336
+X  0.504017 0.114078 0.976328
+3
+10 10 10
+X  0.490998 0.945609 0.62743
+X  0.569972 0.0297458 0.309056
+X  0.487009 0.850061 0.474132
+3
+10 10 10
+X  0.617848 0.946666 0.41696
+X  0.153904 0.105772 0.941204
+X  0.309157 0.983765 0.459944
+3
+10 10 10
+X  0.642323 0.672429 0.527264
+X  0.255087 0.726461 0.566928
+X  0.477136 0.287582 0.838399
+3
+10 10 10
+X  0.53837 0.791599 0.952476
+X  0.514697 0.282597 0.898085
+X  0.142127 0.852569 0.927831
+3
+10 10 10
+X  0.451184 0.339578 0.777892
+X  0.925315 0.957426 0.724559
+X  0.342275 0.11133 0.830331
+3
+10 10 10
+X  0.283479 0.420488 0.814096
+X  0.743423 0.0628103 0.486525
+X  0.270687 0.317897 0.212986
+3
+10 10 10
+X  0.837615 0.795033 0.500568
+X  0.676014 0.333403 0.292167
+X  0.62849 0.8481 0.574764
+3
+10 10 10
+X  0.526576 0.990228 0.427332
+X  0.454406 0.441411 0.76691
+X  0.232299 0.366727 0.724337
+3
+10 10 10
+X  0.956857 0.709002 0.835667
+X  0.787188 0.992481 0.256155
+X  0.601284 0.735904 0.318965
+3
+10 10 10
+X  0.0878097 0.00659137 0.636862
+X  0.300796 0.844207 0.431896
+X  0.801364 0.520221 0.765298
+3
+10 10 10
+X  0.0935307 0.148711 0.613399
+X  0.668294 0.675287 0.603627
+X  0.0956266 0.129693 0.045038
+3
+10 10 10
+X  0.862537 0.361992 0.411765
+X  0.586874 0.318849 0.120767
+X  0.422541 0.106038 0.113248
+3
+10 10 10
+X  0.678695 0.707322 0.849153
+X  0.99766 0.795132 0.855744
+X  0.634522 0.0959277 0.699951
+3
+10 10 10
+X  0.0664177 0.897292 0.220172
+X  0.831716 0.990822 0.368883
+X  0.445115 0.659117 0.0441693
+3
+10 10 10
+X  0.0487414 0.754743 0.173862
+X  0.0937795 0.61728 0.535854
+X  0.505544 0.204154 0.854704
+3
+10 10 10
+X  0.626311 0.626694 0.960741
+X  0.73956 0.30539 0.668063
+X  0.588712 0.303049 0.463195
+3
+10 10 10
+X  0.444456 0.937572 0.559123
+X  0.144407 0.00398931 0.456414
+X  0.364578 0.835705 0.447237
+3
+10 10 10
+X  0.733461 0.28082 0.106354
+X  0.77763 0.329562 0.861097
+X  0.951493 0.423341 0.478377
+3
+10 10 10
+X  0.487347 0.928886 0.682531
+X  0.342051 0.555197 0.309226
+X  0.302792 0.294756 0.614615
+3
+10 10 10
+X  0.970855 0.883469 0.917665
+X  0.434051 0.327925 0.855236
+X  0.993173 0.472332 0.859225
+3
+10 10 10
+X  0.449588 0.83691 0.694931
+X  0.896824 0.570371 0.975751
+X  0.00317807 0.348002 0.305313
+3
+10 10 10
+X  0.864275 0.299494 0.728655
+X  0.342652 0.786841 0.65754
+X  0.0251834 0.128892 0.212737
+3
+10 10 10
+X  0.334409 0.431684 0.507493
+X  0.949024 0.40254 0.390962
+X  0.866688 0.83659 0.718887
+3
+10 10 10
+X  0.721925 0.829763 0.191218
+X  0.58115 0.279351 0.0281286
+X  0.276081 0.176175 0.5985
+3
+10 10 10
+X  0.251832 0.179354 0.946501
+X  0.557146 0.0436286 0.245996
+X  0.2858 0.386281 0.032837
+3
+10 10 10
+X  0.94334 0.411464 0.161729
+X  0.156077 0.745873 0.593413
+X  0.663571 0.694897 0.995953
+3
+10 10 10
+X  0.0545327 0.561585 0.832543
+X  0.77342 0.28351 0.662306
+X  0.964638 0.86466 0.941657
+3
+10 10 10
+X  0.992767 0.140741 0.117833
+X  0.591266 0.392574 0.297186
+X  0.537768 0.949719 0.340815
+3
+10 10 10
+X  0.783763 0.23552 0.727095
+X  0.8166 0.17886 0.13856
+X  0.97833 0.334937 0.884433
+3
+10 10 10
+X  0.571743 0.998508 0.57933
+X  0.567696 0.0530405 0.140915
+X  0.400239 0.82646 0.424425
+3
+10 10 10
+X  0.0625448 0.791098 0.289086
+X  0.00420194 0.783865 0.429827
+X  0.122035 0.375131 0.822401
+3
+10 10 10
+X  0.419221 0.912899 0.77212
+X  0.760035 0.696662 0.00764006
+X  0.487131 0.513263 0.1865
+3
+10 10 10
+X  0.62569 0.491592 0.521437
+X  0.510123 0.0633352 0.519945
+X  0.0894529 0.631031 0.572985
+3
+10 10 10
+X  0.230368 0.0312695 0.399446
+X  0.654794 0.0938142 0.190544
+X  0.943879 0.0980162 0.974408
+3
+10 10 10
+X  0.373706 0.220051 0.349539
+X  0.196107 0.639271 0.262438
+X  0.968228 0.399307 0.959101
+3
+10 10 10
+X  0.975868 0.886438 0.472363
+X  0.162368 0.512128 0.963956
+X  0.683805 0.0222512 0.027291
+3
+10 10 10
+X  0.20375 0.111704 0.658322
+X  0.776735 0.342072 0.689591
+X  0.176181 0.996866 0.783406
+3
+10 10 10
+X  0.366724 0.940745 0.881422
+X  0.341133 0.314451 0.101472
+X  0.690672 0.510559 0.740744
+3
+10 10 10
+X  0.95311 0.478786 0.140051
+X  0.912211 0.454654 0.0264881
+X  0.384574 0.617021 0.538616
+3
+10 10 10
+X  0.34853 0.300826 0.560867
+X  0.375821 0.504576 0.672571
+X  0.0341431 0.281311 0.0146438
+3
+10 10 10
+X  0.723734 0.457491 0.0115097
+X  0.50714 0.824216 0.952255
+X  0.388562 0.165348 0.266706
+3
+10 10 10
+X  0.490034 0.85602 0.777265
+X  0.230778 0.80913 0.256051
+X  0.370829 0.721341 0.710705
+3
+10 10 10
+X  0.397317 0.105916 0.327726
+X  0.935933 0.454446 0.628552
+X  0.4968 0.830267 0.133128
+3
+10 10 10
+X  0.169372 0.86441 0.414439
+X  0.184015 0.588145 0.871931
+X  0.195525 0.0952848 0.696146
+3
+10 10 10
+X  0.14778 0.483847 0.861494
+X  0.414486 0.973881 0.717514
+X  0.191751 0.204659 0.526645
+3
+10 10 10
+X  0.447802 0.575488 0.247986
+X  0.158507 0.972805 0.353902
+X  0.486233 0.908738 0.808348
+3
+10 10 10
+X  0.114786 0.405538 0.638615
+X  0.247914 0.57491 0.503025
+X  0.662353 0.758925 0.0911701
+3
+10 10 10
+X  0.534283 0.95445 0.186455
+X  0.23043 0.10223 0.670302
+X  0.091924 0.516717 0.644183
+3
+10 10 10
+X  0.809439 0.708468 0.848842
+X  0.336083 0.15627 0.42433
+X  0.58407 0.314777 0.397135
+3
+10 10 10
+X  0.937972 0.80101 0.305873
+X  0.74632 0.915795 0.711411
+X  0.384935 0.163709 0.28632
+3
+10 10 10
+X  0.88796 0.826062 0.0452454
+X  0.97913 0.360346 0.999696
+X  0.165585 0.590775 0.101926
+3
+10 10 10
+X  0.835887 0.682699 0.618643
+X  0.48007 0.492138 0.32711
+X  0.328912 0.828221 0.48338
+3
+10 10 10
+X  0.753242 0.412291 0.798157
+X  0.150377 0.350263 0.599167
+X  0.45625 0.0965826 0.514962
+3
+10 10 10
+X  0.16766 0.481518 0.678672
+X  0.453981 0.369478 0.504734
+X  0.499226 0.348608 0.86508
+3
+10 10 10
+X  0.498922 0.514194 0.455855
+X  0.600848 0.350081 0.138554
+X  0.219491 0.83015 0.630692
+3
+10 10 10
+X  0.546601 0.159062 0.458913
+X  0.0299815 0.912304 0.871205
+X  0.828139 0.0626813 0.221467
+3
+10 10 10
+X  0.427305 0.518931 0.31805
+X  0.942268 0.686591 0.799568
+X  0.62094 0.140572 0.169045
+3
+10 10 10
+X  0.125673 0.639798 0.517654
+X  0.990753 0.13872 0.0318471
+X  0.446608 0.739568 0.381928
+3
+10 10 10
+X  0.585162 0.959058 0.212078
+X  0.215854 0.50566 0.37114
+X  0.674768 0.535641 0.283445
+3
+10 10 10
+X  0.545972 0.36378 0.346126
+X  0.76744 0.791085 0.865057
+X  0.0854896 0.733353 0.551648
+3
+10 10 10
+X  0.885057 0.354292 0.69222
+X  0.0541025 0.479966 0.332018
+X  0.571756 0.470719 0.470738
+3
+10 10 10
+X  0.603603 0.917327 0.210306
+X  0.985531 0.502489 0.169365
+X  0.197609 0.718343 0.675024
+3
+10 10 10
+X  0.568749 0.393111 0.210665
+X  0.852194 0.939083 0.574445
+X  0.19832 0.706523 0.36553
+3
+10 10 10
+X  0.0633767 0.792012 0.0988831
+X  0.615025 0.677069 0.453176
+X  0.307245 0.731172 0.933141
+3
+10 10 10
+X  0.639264 0.302928 0.40386
+X  0.110002 0.906531 0.321187
+X  0.320308 0.892062 0.823676
+3
+10 10 10
+X  0.489673 0.0896708 0.542019
+X  0.164697 0.65842 0.93513
+X  0.375362 0.510614 0.874213
+3
+10 10 10
+X  0.949807 0.708934 0.580735
+X  0.315337 0.772311 0.372748
+X  0.414221 0.387336 0.049817
+3
+10 10 10
+X  0.867396 0.694581 0.780989
+X  0.800538 0.333844 0.0839169
+X  0.204398 0.443846 0.990448
+3
+10 10 10
+X  0.525585 0.764155 0.88251
+X  0.349261 0.253827 0.972181
+X  0.89128 0.418524 0.630601
+3
+10 10 10
+X  0.826409 0.793887 0.141215
+X  0.700622 0.743694 0.850149
+X  0.281357 0.0590315 0.622459
+3
+10 10 10
+X  0.654105 0.473252 0.00979468
+X  0.703922 0.340648 0.704375
+X  0.48491 0.141186 0.03822
+3
+10 10 10
+X  0.568827 0.345583 0.482066
+X  0.559275 0.871168 0.246221
+X  0.441785 0.220429 0.500048
+3
+10 10 10
+X  0.413966 0.111709 0.918573
+X  0.0445671 0.938118 0.712459
+X  0.185782 0.63874 0.456153
+3
+10 10 10
+X  0.0359305 0.920097 0.515185
+X  0.65839 0.574201 0.988437
+X  0.668184 0.278123 0.329085
+3
+10 10 10
+X  0.37256 0.763033 0.47027
+X  0.41078 0.331861 0.815854
+X  0.892846 0.891136 0.687022
+3
+10 10 10
+X  0.139067 0.332921 0.907451
+X  0.639115 0.746888 0.0191599
+X  0.557688 0.791455 0.957278
+3
+10 10 10
+X  0.270147 0.977236 0.596017
+X  0.726301 0.013167 0.516114
+X  0.241485 0.671557 0.0903151
+3
+10 10 10
+X  0.229922 0.339741 0.368438
+X  0.559007 0.712301 0.131471
+X  0.0292774 0.12308 0.463332
+3
+10 10 10
+X  0.845131 0.0159267 0.354467
+X  0.532154 0.154994 0.687389
+X  0.439605 0.794109 0.434276
+3
+10 10 10
+X  0.458765 0.351797 0.225731
+X  0.416042 0.621945 0.202968
+X  0.0120595 0.348245 0.216134
+3
+10 10 10
+X  0.528173 0.589731 0.887691
+X  0.618489 0.819653 0.227432
+X  0.986926 0.37866 0.939733
+3
+10 10 10
+X  0.118397 0.407937 0.0628131
+X  0.581729 0.253068 0.0787398
+X  0.936196 0.785222 0.233734
+3
+10 10 10
+X  0.623585 0.224827 0.027843
+X  0.0578614 0.683591 0.37964
+X  0.283592 0.0996335 0.00158508
+3
+10 10 10
+X  0.48656 0.111693 0.34983
+X  0.702694 0.639866 0.939561
+X  0.590385 0.258355 0.759214
+3
+10 10 10
+X  0.817817 0.245281 0.137873
+X  0.75755 0.363679 0.54581
+X  0.820363 0.945407 0.798878
+3
+10 10 10
+X  0.899103 0.881604 0.5841
+X  0.132837 0.505189 0.808926
+X  0.16068 0.56305 0.492518
+3
+10 10 10
+X  0.54032 0.846643 0.592151
+X  0.541905 0.333202 0.703844
+X  0.891735 0.0358969 0.343711
+3
+10 10 10
+X  0.831296 0.626282 0.602065
+X  0.59051 0.4441 0.847347
+X  0.728383 0.20165 0.211025
+3
+10 10 10
+X  0.274193 0.0220132 0.156433
+X  0.0730712 0.921116 0.0380362
+X  0.657171 0.0539527 0.543225
+3
+10 10 10
+X  0.466098 0.214632 0.106275
+X  0.958615 0.754952 0.952918
+X  0.550766 0.296857 0.28612
+3
+10 10 10
+X  0.254611 0.188593 0.322017
+X  0.598321 0.0198888 0.948299
+X  0.200387 0.610399 0.392399
+3
+10 10 10
+X  0.0477334 0.338782 0.594049
+X  0.258759 0.612974 0.616062
+X  0.415191 0.686046 0.537178
+3
+10 10 10
+X  0.453228 0.343217 0.591131
+X  0.996452 0.809315 0.805763
+X  0.102727 0.76793 0.560716
+3
+10 10 10
+X  0.055645 0.318696 0.857573
+X  0.341765 0.573307 0.0461652
+X  0.663782 0.171628 0.066054
+3
+10 10 10
+X  0.612081 0.372015 0.676453
+X  0.0044803 0.419748 0.0152341
+X  0.598529 0.678507 0.628209
+3
+10 10 10
+X  0.214592 0.0936982 0.314254
+X  0.75177 0.546926 0.657471
+X  0.342901 0.543378 0.466786
+3
+10 10 10
+X  0.148664 0.646106 0.234716
+X  0.70938 0.701751 0.553412
+X  0.566953 0.0435155 0.126719
+3
+10 10 10
+X  0.613118 0.707297 0.298347
+X  0.679172 0.319379 0.670362
+X  0.355624 0.323859 0.0901099
+3
+10 10 10
+X  0.370858 0.922388 0.768617
+X  0.999067 0.13698 0.862315
+X  0.313321 0.88875 0.409241
+3
+10 10 10
+X  0.970792 0.231651 0.952619
+X  0.437578 0.380315 0.598724
+X  0.672293 0.0896951 0.300475
+3
+10 10 10
+X  0.225705 0.656648 0.34399
+X  0.352424 0.269765 0.0512878
+X  0.650771 0.948937 0.370666
+3
+10 10 10
+X  0.321133 0.304561 0.694525
+X  0.411243 0.67542 0.616914
+X  0.17986 0.674486 0.753893
+3
+10 10 10
+X  0.0421745 0.987808 0.642643
+X  0.451415 0.9586 0.874294
+X  0.404034 0.396178 0.254609
+3
+10 10 10
+X  0.00275822 0.0684713 0.344305
+X  0.303233 0.294177 0.000952164
+X  0.647224 0.646601 0.270718
+3
+10 10 10
+X  0.698511 0.297372 0.219655
+X  0.0691778 0.618505 0.524216
+X  0.763703 0.0297474 0.199635
+3
+10 10 10
+X  0.380617 0.209607 0.874122
+X  0.13451 0.251781 0.86193
+X  0.777153 0.703197 0.820529
+3
+10 10 10
+X  0.651448 0.10723 0.216707
+X  0.906057 0.109989 0.285179
+X  0.250362 0.413222 0.579355
+3
+10 10 10
+X  0.251314 0.0604453 0.225956
+X  0.522031 0.758957 0.523328
+X  0.741686 0.828134 0.141832
+3
+10 10 10
+X  0.265902 0.591838 0.17158
+X  0.465537 0.972454 0.381187
+X  0.339659 0.106964 0.632968
+3
+10 10 10
+X  0.201589 0.884118 0.336165
+X  0.0221182 0.535565 0.443395
+X  0.238825 0.441622 0.553384
+3
+10 10 10
+X  0.524004 0.691984 0.966605
+X  0.103359 0.943298 0.0270507
+X  0.329315 0.465329 0.786007
+3
+10 10 10
+X  0.852643 0.207015 0.614142
+X  0.994475 0.472916 0.205979
+X  0.166055 0.938453 0.178434
+3
+10 10 10
+X  0.547242 0.278112 0.285398
+X  0.18021 0.479701 0.169516
+X  0.516374 0.501819 0.705081
+3
+10 10 10
+X  0.959769 0.740645 0.146703
+X  0.513153 0.264649 0.838687
+X  0.479759 0.368008 0.781985
+3
+10 10 10
+X  0.506809 0.697323 0.247313
+X  0.292817 0.549966 0.454328
+X  0.906958 0.544441 0.927244
+3
+10 10 10
+X  0.112938 0.710495 0.865697
+X  0.291371 0.257737 0.14381
+X  0.576769 0.437947 0.623511
+3
+10 10 10
+X  0.746285 0.954321 0.125331
+X  0.451366 0.91409 0.865975
+X  0.598069 0.427243 0.130624
+3
+10 10 10
+X  0.436756 0.907002 0.498632
+X  0.218741 0.413811 0.195955
+X  0.466054 0.706628 0.745921
+3
+10 10 10
+X  0.920382 0.613586 0.290361
+X  0.847626 0.726524 0.000856793
+X  0.713324 0.0178958 0.258594
+3
+10 10 10
+X  0.857133 0.594665 0.69654
+X  0.480645 0.34095 0.650861
+X  0.605975 0.792316 0.564952
+3
+10 10 10
+X  0.47195 0.390386 0.992195
+X  0.602575 0.827142 0.899197
+X  0.101207 0.045883 0.313008
+3
+10 10 10
+X  0.297162 0.511937 0.0196364
+X  0.0430831 0.432319 0.633223
+X  0.333445 0.279946 0.359747
+3
+10 10 10
+X  0.334301 0.993269 0.377643
+X  0.592895 0.850403 0.972308
+X  0.289435 0.331047 0.313258
+3
+10 10 10
+X  0.940296 0.937022 0.105575
+X  0.505248 0.408973 0.49596
+X  0.497443 0.0115476 0.323102
+3
+10 10 10
+X  0.39664 0.112755 0.368985
+X  0.709648 0.409917 0.880922
+X  0.729285 0.453 0.313242
+3
+10 10 10
+X  0.362508 0.786445 0.593188
+X  0.722255 0.120746 0.586457
+X  0.0998976 0.713641 0.436859
+3
+10 10 10
+X  0.0722057 0.00307608 0.767907
+X  0.385464 0.943372 0.704929
+X  0.491039 0.44862 0.113902
+3
+10 10 10
+X  0.986999 0.946063 0.125449
+X  0.310101 0.342703 0.238204
+X  0.679087 0.0523519 0.648121
+3
+10 10 10
+X  0.560009 0.781637 0.101121
+X  0.873251 0.144144 0.887565
+X  0.466439 0.866399 0.00831128
+3
+10 10 10
+X  0.0528953 0.966297 0.721952
+X  0.489755 0.0385024 0.725028
+X  0.257662 0.423967 0.668401
+3
+10 10 10
+X  0.962591 0.915005 0.117021
+X  0.0764926 0.902004 0.0630846
+X  0.201942 0.212106 0.405788
+3
+10 10 10
+X  0.440146 0.891192 0.45814
+X  0.0882672 0.451202 0.239777
+X  0.189388 0.324453 0.383921
+3
+10 10 10
+X  0.0769535 0.790891 0.25032
+X  0.0852648 0.843786 0.216617
+X  0.807217 0.333541 0.255119
+3
+10 10 10
+X  0.532245 0.591203 0.679085
+X  0.200646 0.553794 0.594091
+X  0.317667 0.630286 0.496095
+3
+10 10 10
+X  0.380752 0.832228 0.708201
+X  0.78654 0.272374 0.599394
+X  0.24468 0.360642 0.0505952
+3
+10 10 10
+X  0.484456 0.55003 0.375048
+X  0.868377 0.626983 0.165939
+X  0.118697 0.712248 0.00972536
+3
+10 10 10
+X  0.335314 0.519465 0.343267
+X  0.590433 0.0517102 0.934469
+X  0.269518 0.252356 0.488263
+3
+10 10 10
+X  0.863609 0.570023 0.118549
+X  0.359704 0.950775 0.950777
+X  0.0679053 0.737314 0.223152
+3
+10 10 10
+X  0.667299 0.981994 0.583794
+X  0.717894 0.46645 0.133823
+X  0.0929419 0.334827 0.760807
+3
+10 10 10
+X  0.258881 0.453524 0.473055
+X  0.268606 0.788838 0.99252
+X  0.611873 0.37927 0.0442301
+3
+10 10 10
+X  0.546342 0.648788 0.296586
+X  0.0346053 0.512397 0.866609
+X  0.153154 0.872102 0.817384
diff --git a/regtest/basic/rt-mpi6c/trajectory.2.xyz b/regtest/basic/rt-mpi6c/trajectory.2.xyz
new file mode 100644
index 0000000000000000000000000000000000000000..bda14afea4f2aab9cd0b95cd2ead246b5cd5d629
--- /dev/null
+++ b/regtest/basic/rt-mpi6c/trajectory.2.xyz
@@ -0,0 +1,5000 @@
+3
+10 10 10
+X  0.840188 0.394383 0.783099
+X  0.79844 0.911647 0.197551
+X  0.335223 0.76823 0.277775
+3
+10 10 10
+X  0.55397 0.477397 0.628871
+X  0.364784 0.513401 0.95223
+X  0.916195 0.635712 0.717297
+3
+10 10 10
+X  0.141603 0.606969 0.0163006
+X  0.242887 0.137232 0.804177
+X  0.156679 0.400944 0.12979
+3
+10 10 10
+X  0.108809 0.998925 0.218257
+X  0.512932 0.839112 0.61264
+X  0.296032 0.637552 0.524287
+3
+10 10 10
+X  0.493583 0.972775 0.292517
+X  0.771358 0.526745 0.769914
+X  0.400229 0.891529 0.283315
+3
+10 10 10
+X  0.352458 0.807725 0.919026
+X  0.0697553 0.949327 0.525995
+X  0.0860558 0.192214 0.663227
+3
+10 10 10
+X  0.890233 0.348893 0.0641713
+X  0.020023 0.457702 0.0630958
+X  0.23828 0.970634 0.902208
+3
+10 10 10
+X  0.85092 0.266666 0.53976
+X  0.375207 0.760249 0.512535
+X  0.667724 0.531606 0.0392803
+3
+10 10 10
+X  0.437638 0.931835 0.93081
+X  0.720952 0.284293 0.738534
+X  0.639979 0.354049 0.687861
+3
+10 10 10
+X  0.165974 0.440105 0.880075
+X  0.829201 0.330337 0.228968
+X  0.893372 0.35036 0.68667
+3
+10 10 10
+X  0.956468 0.58864 0.657304
+X  0.858676 0.43956 0.92397
+X  0.398437 0.814767 0.684219
+3
+10 10 10
+X  0.910972 0.482491 0.215825
+X  0.950252 0.920128 0.14766
+X  0.881062 0.641081 0.431953
+3
+10 10 10
+X  0.619596 0.281059 0.786002
+X  0.307458 0.447034 0.226107
+X  0.187533 0.276235 0.556444
+3
+10 10 10
+X  0.416501 0.169607 0.906804
+X  0.103171 0.126075 0.495444
+X  0.760475 0.984752 0.935004
+3
+10 10 10
+X  0.684445 0.383188 0.749771
+X  0.368664 0.29416 0.232262
+X  0.584489 0.244413 0.15239
+3
+10 10 10
+X  0.732149 0.125475 0.79347
+X  0.164102 0.745071 0.0745298
+X  0.950104 0.0525293 0.521563
+3
+10 10 10
+X  0.176211 0.240062 0.797798
+X  0.732654 0.656564 0.967405
+X  0.639458 0.759735 0.0934805
+3
+10 10 10
+X  0.134902 0.52021 0.0782321
+X  0.0699064 0.204655 0.46142
+X  0.819677 0.573319 0.755581
+3
+10 10 10
+X  0.0519388 0.157807 0.999994
+X  0.204329 0.889956 0.125468
+X  0.997799 0.0540576 0.87054
+3
+10 10 10
+X  0.0723288 0.00416161 0.923069
+X  0.593892 0.180372 0.163131
+X  0.39169 0.913027 0.819695
+3
+10 10 10
+X  0.359095 0.552485 0.57943
+X  0.452576 0.687387 0.0996401
+X  0.530808 0.757294 0.304295
+3
+10 10 10
+X  0.992228 0.576971 0.877614
+X  0.747809 0.62891 0.0354209
+X  0.747803 0.833239 0.925377
+3
+10 10 10
+X  0.873271 0.831038 0.979434
+X  0.743811 0.903366 0.983596
+X  0.66688 0.497259 0.163968
+3
+10 10 10
+X  0.830012 0.888949 0.0769947
+X  0.649707 0.248044 0.62948
+X  0.229137 0.70062 0.316867
+3
+10 10 10
+X  0.328777 0.231428 0.074161
+X  0.633072 0.223656 0.651132
+X  0.510686 0.971466 0.280042
+3
+10 10 10
+X  0.546107 0.719269 0.113281
+X  0.471483 0.59254 0.944318
+X  0.450918 0.336351 0.847684
+3
+10 10 10
+X  0.434513 0.00323146 0.344943
+X  0.598481 0.833243 0.233892
+X  0.675476 0.48295 0.481936
+3
+10 10 10
+X  0.304956 0.712087 0.182556
+X  0.621823 0.0408643 0.413984
+X  0.695984 0.673936 0.63764
+3
+10 10 10
+X  0.347116 0.184622 0.609106
+X  0.627158 0.730729 0.328374
+X  0.740438 0.202213 0.920914
+3
+10 10 10
+X  0.684757 0.65313 0.257265
+X  0.532441 0.0876436 0.260497
+X  0.877384 0.686125 0.0937402
+3
+10 10 10
+X  0.111276 0.361601 0.576691
+X  0.593211 0.666557 0.288778
+X  0.775767 0.288379 0.329642
+3
+10 10 10
+X  0.189751 0.984363 0.00357857
+X  0.827391 0.331479 0.188201
+X  0.436497 0.958637 0.91893
+3
+10 10 10
+X  0.764871 0.699075 0.121143
+X  0.685786 0.383832 0.774273
+X  0.943051 0.916273 0.861917
+3
+10 10 10
+X  0.203548 0.793657 0.548042
+X  0.297288 0.904932 0.909643
+X  0.873979 0.498144 0.5762
+3
+10 10 10
+X  0.162757 0.273911 0.864579
+X  0.492399 0.463662 0.848942
+X  0.495977 0.291053 0.180421
+3
+10 10 10
+X  0.684178 0.72755 0.139058
+X  0.603109 0.492422 0.838134
+X  0.724252 0.178208 0.221966
+3
+10 10 10
+X  0.498525 0.121259 0.138238
+X  0.360443 0.324807 0.931895
+X  0.908485 0.622095 0.836828
+3
+10 10 10
+X  0.818128 0.496074 0.334972
+X  0.394327 0.658831 0.608883
+X  0.258906 0.15123 0.072545
+3
+10 10 10
+X  0.107848 0.647207 0.363598
+X  0.28827 0.331386 0.0911486
+X  0.427328 0.934495 0.58357
+3
+10 10 10
+X  0.265461 0.658747 0.761778
+X  0.487427 0.157272 0.883037
+X  0.625665 0.517715 0.207844
+3
+10 10 10
+X  0.557561 0.426199 0.829939
+X  0.394388 0.244327 0.326013
+X  0.72936 0.638654 0.984845
+3
+10 10 10
+X  0.338243 0.89756 0.136075
+X  0.410788 0.00540855 0.783282
+X  0.774386 0.293678 0.114668
+3
+10 10 10
+X  0.865535 0.721006 0.0491625
+X  0.449105 0.986467 0.707909
+X  0.210883 0.473894 0.865181
+3
+10 10 10
+X  0.0939195 0.0995593 0.382896
+X  0.301763 0.65712 0.809095
+X  0.131702 0.0515083 0.0534223
+3
+10 10 10
+X  0.457716 0.780868 0.692076
+X  0.44256 0.119111 0.589637
+X  0.578635 0.529899 0.595045
+3
+10 10 10
+X  0.361917 0.304285 0.888723
+X  0.476585 0.16982 0.609729
+X  0.525747 0.618925 0.596196
+3
+10 10 10
+X  0.233656 0.829808 0.0700902
+X  0.0988374 0.923728 0.16965
+X  0.481733 0.225491 0.826769
+3
+10 10 10
+X  0.290829 0.357193 0.878278
+X  0.344251 0.814909 0.659146
+X  0.0363274 0.257469 0.778257
+3
+10 10 10
+X  0.625964 0.836104 0.308157
+X  0.221009 0.198021 0.612442
+X  0.109733 0.674605 0.782262
+3
+10 10 10
+X  0.719462 0.200352 0.401188
+X  0.315658 0.434009 0.230996
+X  0.385748 0.532846 0.154724
+3
+10 10 10
+X  0.555398 0.0145793 0.380215
+X  0.382167 0.305408 0.737408
+X  0.260445 0.649659 0.552316
+3
+10 10 10
+X  0.919591 0.685986 0.809785
+X  0.697848 0.31195 0.645889
+X  0.00600477 0.53296 0.84391
+3
+10 10 10
+X  0.618447 0.642693 0.518515
+X  0.400709 0.362154 0.718867
+X  0.801897 0.677812 0.152876
+3
+10 10 10
+X  0.0328927 0.0635606 0.685722
+X  0.187616 0.618958 0.700301
+X  0.567831 0.00112548 0.00570914
+3
+10 10 10
+X  0.305239 0.26157 0.655368
+X  0.857555 0.181161 0.341354
+X  0.667341 0.879009 0.653305
+3
+10 10 10
+X  0.31323 0.885014 0.186265
+X  0.157139 0.503461 0.828957
+X  0.675654 0.90417 0.191112
+3
+10 10 10
+X  0.394521 0.706067 0.868924
+X  0.547397 0.738959 0.932485
+X  0.233119 0.926576 0.551443
+3
+10 10 10
+X  0.93342 0.494407 0.552568
+X  0.939129 0.799646 0.814139
+X  0.594497 0.657201 0.9953
+3
+10 10 10
+X  0.935852 0.324541 0.874309
+X  0.589157 0.637771 0.759324
+X  0.775421 0.79491 0.262785
+3
+10 10 10
+X  0.604379 0.470564 0.166955
+X  0.79549 0.865086 0.873021
+X  0.664414 0.412483 0.611981
+3
+10 10 10
+X  0.596899 0.645601 0.538557
+X  0.148342 0.579022 0.0329634
+X  0.70091 0.518151 0.832609
+3
+10 10 10
+X  0.515049 0.112648 0.48981
+X  0.510349 0.0484997 0.814351
+X  0.384658 0.637656 0.452122
+3
+10 10 10
+X  0.143982 0.413078 0.247033
+X  0.406767 0.0174566 0.717597
+X  0.573721 0.812947 0.582682
+3
+10 10 10
+X  0.446743 0.477361 0.995165
+X  0.0587232 0.0742604 0.640766
+X  0.59728 0.222602 0.219788
+3
+10 10 10
+X  0.630243 0.923513 0.737939
+X  0.462852 0.438562 0.850586
+X  0.952662 0.948911 0.899086
+3
+10 10 10
+X  0.767014 0.333569 0.536742
+X  0.219136 0.477551 0.94982
+X  0.466169 0.884318 0.967277
+3
+10 10 10
+X  0.183765 0.458039 0.780224
+X  0.766448 0.904782 0.257585
+X  0.761612 0.963505 0.331846
+3
+10 10 10
+X  0.402379 0.560785 0.554448
+X  0.622167 0.191028 0.477961
+X  0.360105 0.65388 0.916523
+3
+10 10 10
+X  0.210692 0.606542 0.865434
+X  0.109778 0.373556 0.199003
+X  0.64652 0.592692 0.676554
+3
+10 10 10
+X  0.596341 0.0588605 0.560872
+X  0.563617 0.242626 0.0189108
+X  0.343841 0.00907344 0.923692
+3
+10 10 10
+X  0.601427 0.770686 0.887197
+X  0.933273 0.173065 0.447982
+X  0.487721 0.795231 0.639009
+3
+10 10 10
+X  0.965682 0.155336 0.292889
+X  0.882204 0.366028 0.899431
+X  0.747638 0.475806 0.272987
+3
+10 10 10
+X  0.94664 0.122326 0.865679
+X  0.623194 0.718666 0.92454
+X  0.184066 0.282284 0.167165
+3
+10 10 10
+X  0.202977 0.626125 0.176239
+X  0.126669 0.227552 0.946925
+X  0.0138663 0.160824 0.119989
+3
+10 10 10
+X  0.461848 0.648545 0.915221
+X  0.100857 0.614227 0.070557
+X  0.393746 0.496431 0.436585
+3
+10 10 10
+X  0.293177 0.244069 0.912391
+X  0.566164 0.190709 0.0347164
+X  0.431844 0.813904 0.753383
+3
+10 10 10
+X  0.356383 0.99797 0.0356664
+X  0.523548 0.200947 0.661792
+X  0.699787 0.327616 0.889343
+3
+10 10 10
+X  0.646712 0.341482 0.0501679
+X  0.766701 0.80333 0.698713
+X  0.681922 0.904187 0.31294
+3
+10 10 10
+X  0.752479 0.297933 0.809371
+X  0.189064 0.591111 0.0534394
+X  0.101454 0.157275 0.244149
+3
+10 10 10
+X  0.136171 0.589119 0.0580523
+X  0.889553 0.945502 0.0560222
+X  0.92522 0.46905 0.256969
+3
+10 10 10
+X  0.587011 0.168837 0.584585
+X  0.476355 0.815549 0.926068
+X  0.526523 0.58225 0.729398
+3
+10 10 10
+X  0.225236 0.264172 0.633585
+X  0.538175 0.0166506 0.931518
+X  0.347546 0.205714 0.522629
+3
+10 10 10
+X  0.400985 0.307168 0.679904
+X  0.645134 0.443339 0.269022
+X  0.703186 0.332892 0.214524
+3
+10 10 10
+X  0.759208 0.258112 0.683574
+X  0.0161775 0.845123 0.852411
+X  0.600763 0.321478 0.66796
+3
+10 10 10
+X  0.52683 0.848 0.25021
+X  0.256228 0.0732357 0.514382
+X  0.889813 0.611411 0.531033
+3
+10 10 10
+X  0.821331 0.958957 0.736747
+X  0.343959 0.359942 0.0439153
+X  0.0238632 0.0050762 0.487254
+3
+10 10 10
+X  0.292886 0.708262 0.820146
+X  0.50741 0.467471 0.0782579
+X  0.190984 0.483648 0.923381
+3
+10 10 10
+X  0.0433947 0.084411 0.244858
+X  0.711355 0.611241 0.0928584
+X  0.961565 0.867469 0.166094
+3
+10 10 10
+X  0.475947 0.757282 0.777505
+X  0.00698012 0.578613 0.736462
+X  0.743727 0.922572 0.0964041
+3
+10 10 10
+X  0.787642 0.946435 0.10148
+X  0.274897 0.239321 0.809743
+X  0.0950427 0.74673 0.277214
+3
+10 10 10
+X  0.173301 0.937714 0.760862
+X  0.0966814 0.981109 0.845273
+X  0.34154 0.692463 0.456514
+3
+10 10 10
+X  0.434398 0.654029 0.323983
+X  0.600492 0.129976 0.081265
+X  0.377997 0.136956 0.659878
+3
+10 10 10
+X  0.114459 0.880683 0.58245
+X  0.210863 0.668326 0.528885
+X  0.312343 0.943222 0.768206
+3
+10 10 10
+X  0.122086 0.0382648 0.514936
+X  0.3993 0.211565 0.45265
+X  0.160162 0.308247 0.433758
+3
+10 10 10
+X  0.00543489 0.649787 0.126222
+X  0.461949 0.0841846 0.780251
+X  0.785932 0.684677 0.910227
+3
+10 10 10
+X  0.867197 0.0626739 0.0471826
+X  0.527075 0.177133 0.927866
+X  0.109525 0.387996 0.596191
+3
+10 10 10
+X  0.638409 0.70034 0.539413
+X  0.406615 0.822426 0.577678
+X  0.921551 0.221726 0.789244
+3
+10 10 10
+X  0.374201 0.381888 0.0974906
+X  0.807959 0.387323 0.747277
+X  0.934181 0.849272 0.831462
+3
+10 10 10
+X  0.714432 0.635204 0.516139
+X  0.624658 0.502401 0.578813
+X  0.671841 0.0294762 0.755945
+3
+10 10 10
+X  0.599707 0.139001 0.143942
+X  0.195898 0.77741 0.844281
+X  0.735311 0.184025 0.666707
+3
+10 10 10
+X  0.31299 0.105576 0.888433
+X  0.102233 0.479777 0.270321
+X  0.199724 0.287736 0.657643
+3
+10 10 10
+X  0.947001 0.221918 0.506915
+X  0.778463 0.936349 0.142119
+X  0.294601 0.561007 0.64452
+3
+10 10 10
+X  0.873414 0.232848 0.673996
+X  0.629359 0.832555 0.812997
+X  0.773301 0.0284525 0.590407
+3
+10 10 10
+X  0.617582 0.763764 0.774432
+X  0.284289 0.0767534 0.880009
+X  0.172722 0.178987 0.359786
+3
+10 10 10
+X  0.443043 0.37871 0.647522
+X  0.100686 0.325711 0.86944
+X  0.6076 0.104174 0.805789
+3
+10 10 10
+X  0.749719 0.398775 0.366796
+X  0.394239 0.272189 0.599644
+X  0.0682348 0.901549 0.432199
+3
+10 10 10
+X  0.881232 0.67485 0.460652
+X  0.471639 0.292432 0.224415
+X  0.246071 0.576721 0.301169
+3
+10 10 10
+X  0.12608 0.749443 0.480156
+X  0.485866 0.192486 0.858866
+X  0.133388 0.293171 0.184577
+3
+10 10 10
+X  0.00282779 0.900772 0.288752
+X  0.808617 0.650491 0.687527
+X  0.175413 0.0447295 0.959716
+3
+10 10 10
+X  0.775058 0.112964 0.861265
+X  0.207257 0.994196 0.536115
+X  0.667908 0.465835 0.828546
+3
+10 10 10
+X  0.892324 0.711906 0.405267
+X  0.193493 0.837986 0.154711
+X  0.673648 0.323852 0.347196
+3
+10 10 10
+X  0.532514 0.45724 0.640368
+X  0.717092 0.460067 0.54114
+X  0.00584319 0.268684 0.19163
+3
+10 10 10
+X  0.69337 0.444097 0.23636
+X  0.653087 0.219155 0.349324
+X  0.514352 0.426412 0.34352
+3
+10 10 10
+X  0.0504663 0.0943199 0.809355
+X  0.879013 0.986644 0.521261
+X  0.28428 0.180136 0.359247
+3
+10 10 10
+X  0.43899 0.853785 0.683098
+X  0.786187 0.386299 0.140338
+X  0.426555 0.10339 0.600405
+3
+10 10 10
+X  0.967694 0.109233 0.86909
+X  0.159324 0.802604 0.313187
+X  0.395684 0.45569 0.532342
+3
+10 10 10
+X  0.745008 0.970042 0.958753
+X  0.0885283 0.0205084 0.0530733
+X  0.897883 0.899521 0.039717
+3
+10 10 10
+X  0.419144 0.183801 0.219853
+X  0.778391 0.622791 0.0736379
+X  0.461489 0.408978 0.459937
+3
+10 10 10
+X  0.601827 0.835533 0.563327
+X  0.202232 0.803227 0.67256
+X  0.071322 0.962551 0.475164
+3
+10 10 10
+X  0.384509 0.358235 0.930854
+X  0.916851 0.103244 0.900896
+X  0.875604 0.191772 0.921405
+3
+10 10 10
+X  0.928678 0.089655 0.820926
+X  0.968395 0.508799 0.00472651
+X  0.188248 0.287189 0.627518
+3
+10 10 10
+X  0.261886 0.748678 0.0364959
+X  0.721822 0.350505 0.872028
+X  0.285149 0.552738 0.675255
+3
+10 10 10
+X  0.957709 0.62406 0.637806
+X  0.432873 0.00856861 0.996042
+X  0.363727 0.92542 0.0992851
+3
+10 10 10
+X  0.264624 0.801024 0.291057
+X  0.186029 0.729702 0.380712
+X  0.00695418 0.698096 0.889511
+3
+10 10 10
+X  0.0116807 0.886344 0.1767
+X  0.639199 0.14823 0.925379
+X  0.675694 0.870053 0.275884
+3
+10 10 10
+X  0.547723 0.155202 0.828622
+X  0.222978 0.112911 0.452681
+X  0.860784 0.545784 0.46125
+3
+10 10 10
+X  0.856826 0.909512 0.386669
+X  0.956111 0.174136 0.187693
+X  0.247168 0.360164 0.917395
+3
+10 10 10
+X  0.62788 0.367118 0.615491
+X  0.517391 0.378799 0.501835
+X  0.694091 0.0179977 0.650066
+3
+10 10 10
+X  0.61947 0.693692 0.520118
+X  0.895354 0.241415 0.67532
+X  0.723975 0.464393 0.788231
+3
+10 10 10
+X  0.176656 0.325177 0.334016
+X  0.637906 0.182003 0.243528
+X  0.0245755 0.138114 0.417663
+3
+10 10 10
+X  0.212269 0.385282 0.777828
+X  0.129663 0.0131615 0.144946
+X  0.745154 0.530552 0.523745
+3
+10 10 10
+X  0.24699 0.224643 0.541743
+X  0.897055 0.844113 0.235435
+X  0.417174 0.739467 0.47685
+3
+10 10 10
+X  0.0924937 0.463442 0.941243
+X  0.880725 0.640098 0.26642
+X  0.214741 0.278005 0.448423
+3
+10 10 10
+X  0.458269 0.30258 0.586537
+X  0.875932 0.514849 0.971818
+X  0.65376 0.644512 0.98498
+3
+10 10 10
+X  0.798706 0.389667 0.515532
+X  0.322451 0.636656 0.740175
+X  0.864194 0.533712 0.584288
+3
+10 10 10
+X  0.0996293 0.950885 0.323755
+X  0.576479 0.043379 0.787197
+X  0.517722 0.924104 0.427295
+3
+10 10 10
+X  0.784142 0.138845 0.7053
+X  0.232565 0.597114 0.00788008
+X  0.819102 0.473045 0.522729
+3
+10 10 10
+X  0.79092 0.126805 0.167241
+X  0.775899 0.925511 0.556908
+X  0.291431 0.247962 0.193564
+3
+10 10 10
+X  0.0316064 0.112157 0.727276
+X  0.615894 0.211786 0.678161
+X  0.939649 0.788265 0.72154
+3
+10 10 10
+X  0.726846 0.305987 0.645644
+X  0.154141 0.0901297 0.784489
+X  0.859441 0.322695 0.381603
+3
+10 10 10
+X  0.867321 0.141796 0.854648
+X  0.39005 0.932716 0.981453
+X  0.557291 0.708616 0.906964
+3
+10 10 10
+X  0.114199 4.68777e-05 0.154927
+X  0.307763 0.0316532 0.267083
+X  0.0350389 0.647548 0.478869
+3
+10 10 10
+X  0.7132 0.587197 0.267134
+X  0.43474 0.314043 0.573122
+X  0.080384 0.468185 0.663252
+3
+10 10 10
+X  0.864873 0.327626 0.985946
+X  0.246476 0.194948 0.127743
+X  0.101124 0.584998 0.0604589
+3
+10 10 10
+X  0.082577 0.142289 0.769074
+X  0.989541 0.256489 0.769121
+X  0.144468 0.564252 0.800775
+3
+10 10 10
+X  0.411551 0.599291 0.448322
+X  0.89042 0.312491 0.0355193
+X  0.157555 0.747231 0.349562
+3
+10 10 10
+X  0.730677 0.827615 0.817747
+X  0.393928 0.692488 0.145373
+X  0.379874 0.938963 0.340321
+3
+10 10 10
+X  0.507617 0.0400871 0.925318
+X  0.568076 0.122664 0.0676078
+X  0.33715 0.112205 0.324096
+3
+10 10 10
+X  0.106272 0.256673 0.888348
+X  0.907046 0.668224 0.487639
+X  0.355369 0.558645 0.800129
+3
+10 10 10
+X  0.390888 0.716199 0.54736
+X  0.74045 0.446876 0.374975
+X  0.558198 0.840804 0.0674623
+3
+10 10 10
+X  0.703571 0.220679 0.0064256
+X  0.0438913 0.728296 0.0465127
+X  0.96921 0.296372 0.169177
+3
+10 10 10
+X  0.0368176 0.633522 0.281382
+X  0.360914 0.739794 0.538055
+X  0.249262 0.64684 0.20628
+3
+10 10 10
+X  0.736901 0.00220922 0.764925
+X  0.53703 0.393097 0.481124
+X  0.0843902 0.133548 0.928
+3
+10 10 10
+X  0.459365 0.691745 0.768804
+X  0.526827 0.395316 0.989483
+X  0.533253 0.439207 0.717778
+3
+10 10 10
+X  0.579765 0.408417 0.0141502
+X  0.748942 0.445235 0.647672
+X  0.030324 0.806149 0.387466
+3
+10 10 10
+X  0.568379 0.0554106 0.0343068
+X  0.774659 0.792311 0.036516
+X  0.539584 0.329342 0.429613
+3
+10 10 10
+X  0.0207081 0.413732 0.563161
+X  0.948708 0.873097 0.254906
+X  0.717512 0.399924 0.650222
+3
+10 10 10
+X  0.706995 0.933176 0.0894297
+X  0.424774 0.512941 0.497847
+X  0.438924 0.261883 0.943081
+3
+10 10 10
+X  0.0865962 0.292207 0.74923
+X  0.474063 0.860587 0.804641
+X  0.508369 0.635246 0.596952
+3
+10 10 10
+X  0.544885 0.17483 0.926294
+X  0.974499 0.195538 0.340026
+X  0.53766 0.144246 0.213122
+3
+10 10 10
+X  0.792566 0.861759 0.613046
+X  0.442789 0.568754 0.546222
+X  0.532218 0.993528 0.0591633
+3
+10 10 10
+X  0.0300651 0.432452 0.321047
+X  0.973147 0.519048 0.613254
+X  0.722377 0.99311 0.473841
+3
+10 10 10
+X  0.527017 0.50148 0.109087
+X  0.123969 0.0463652 0.283917
+X  0.0502633 0.0208639 0.479455
+3
+10 10 10
+X  0.390289 0.558524 0.623701
+X  0.603411 0.35109 0.48546
+X  0.216457 0.793879 0.054214
+3
+10 10 10
+X  0.762679 0.326097 0.0477418
+X  0.821842 0.356162 0.480193
+X  0.142889 0.329309 0.999241
+3
+10 10 10
+X  0.756143 0.0516852 0.992352
+X  0.229984 0.578702 0.493831
+X  0.339071 0.702672 0.540197
+3
+10 10 10
+X  0.622988 0.752935 0.56106
+X  0.102443 0.143224 0.119584
+X  0.726144 0.746635 0.470674
+3
+10 10 10
+X  0.211604 0.963092 0.264553
+X  0.265818 0.725771 0.590649
+X  0.31356 0.547613 0.946811
+3
+10 10 10
+X  0.793753 0.690502 0.27612
+X  0.792995 0.446645 0.327805
+X  0.785346 0.676628 0.906508
+3
+10 10 10
+X  0.279178 0.0156992 0.609179
+X  0.819374 0.638687 0.362115
+X  0.380434 0.74113 0.505339
+3
+10 10 10
+X  0.500019 0.467274 0.251974
+X  0.970693 0.678878 0.215066
+X  0.235245 0.944697 0.940837
+3
+10 10 10
+X  0.825895 0.258257 0.48845
+X  0.772706 0.0520103 0.178952
+X  0.0488258 0.845005 0.625596
+3
+10 10 10
+X  0.376631 0.630351 0.302225
+X  0.283138 0.909529 0.317924
+X  0.892318 0.728903 0.956611
+3
+10 10 10
+X  0.254432 0.109337 0.697741
+X  0.759771 0.609356 0.165015
+X  0.0117453 0.580048 0.843894
+3
+10 10 10
+X  0.226811 0.815294 0.78859
+X  0.167648 0.641188 0.0468473
+X  0.656098 0.413894 0.0988576
+3
+10 10 10
+X  0.83505 0.46272 0.943863
+X  0.460646 0.839351 0.574214
+X  0.762871 0.122489 0.483742
+3
+10 10 10
+X  0.0807953 0.0148069 0.212645
+X  0.0374063 0.269239 0.321982
+X  0.735147 0.0290106 0.931338
+3
+10 10 10
+X  0.900163 0.0407559 0.511386
+X  0.744056 0.267567 0.32668
+X  0.532647 0.435216 0.967868
+3
+10 10 10
+X  0.579494 0.0913142 0.381762
+X  0.678351 0.926364 0.844482
+X  0.622214 0.387011 0.683833
+3
+10 10 10
+X  0.196428 0.149882 0.806322
+X  0.68017 0.230677 0.821129
+X  0.892815 0.268084 0.0903681
+3
+10 10 10
+X  0.214797 0.00323105 0.119379
+X  0.146135 0.903394 0.160135
+X  0.657522 0.64745 0.427702
+3
+10 10 10
+X  0.984202 0.180096 0.862918
+X  0.95207 0.75959 0.954232
+X  0.333832 0.437942 0.880596
+3
+10 10 10
+X  0.178314 0.0601557 0.267607
+X  0.862147 0.256583 0.417489
+X  0.668469 0.936754 0.648167
+3
+10 10 10
+X  0.489597 0.829569 0.91625
+X  0.579965 0.0443661 0.919481
+X  0.699344 0.190501 0.822875
+3
+10 10 10
+X  0.859479 0.848023 0.470325
+X  0.287181 0.832225 0.650421
+X  0.150099 0.784295 0.410011
+3
+10 10 10
+X  0.104331 0.118126 0.847953
+X  0.984927 0.29644 0.908109
+X  0.252535 0.158587 0.164692
+3
+10 10 10
+X  0.670024 0.827056 0.101446
+X  0.318191 0.316653 0.931014
+X  0.234441 0.896618 0.97538
+3
+10 10 10
+X  0.153923 0.595963 0.165882
+X  0.976798 0.455442 0.0139049
+X  0.447123 0.742623 0.84613
+3
+10 10 10
+X  0.0975437 0.892721 0.630424
+X  0.507555 0.997052 0.748551
+X  0.355508 0.98198 0.044991
+3
+10 10 10
+X  0.263617 0.234514 0.203578
+X  0.428309 0.904539 0.0306337
+X  0.529754 0.222729 0.347287
+3
+10 10 10
+X  0.460768 0.457171 0.243905
+X  0.436149 0.611093 0.839868
+X  0.60203 0.587891 0.295309
+3
+10 10 10
+X  0.615935 0.0350138 0.037932
+X  0.462065 0.132558 0.930653
+X  0.0924893 0.640113 0.927706
+3
+10 10 10
+X  0.84104 0.99562 0.909686
+X  0.886031 0.259237 0.1442
+X  0.089609 0.687546 0.0487385
+3
+10 10 10
+X  0.120243 0.2173 0.271468
+X  0.467529 0.678068 0.728638
+X  0.711434 0.114216 0.339732
+3
+10 10 10
+X  0.551302 0.716247 0.927623
+X  0.846611 0.332182 0.962637
+X  0.884543 0.794247 0.0951945
+3
+10 10 10
+X  0.815197 0.886736 0.735307
+X  0.742903 0.727776 0.730928
+X  0.652588 0.613807 0.990165
+3
+10 10 10
+X  0.796788 0.703416 0.67771
+X  0.845527 0.823659 0.89501
+X  0.116995 0.291188 0.573077
+3
+10 10 10
+X  0.845633 0.00262258 0.687294
+X  0.185365 0.553925 0.403541
+X  0.112988 0.400536 0.735723
+3
+10 10 10
+X  0.0756249 0.28508 0.52997
+X  0.170819 0.100276 0.416706
+X  0.906126 0.843179 0.144482
+3
+10 10 10
+X  0.637054 0.495767 0.75829
+X  0.627219 0.292555 0.461706
+X  0.304929 0.138082 0.285365
+3
+10 10 10
+X  0.199938 0.255076 0.576553
+X  0.773016 0.100709 0.579176
+X  0.460309 0.286074 0.1331
+3
+10 10 10
+X  0.86385 0.399062 0.533636
+X  0.599573 0.474687 0.818716
+X  0.129542 0.645506 0.918992
+3
+10 10 10
+X  0.546248 0.551633 0.762171
+X  0.690731 0.188687 0.257939
+X  0.44902 0.815905 0.550494
+3
+10 10 10
+X  0.910726 0.120834 0.688576
+X  0.196091 0.320772 0.943652
+X  0.772644 0.0937877 0.0443619
+3
+10 10 10
+X  0.351819 0.554097 0.330436
+X  0.484919 0.417947 0.729499
+X  0.0185558 0.0175198 0.204186
+3
+10 10 10
+X  0.837272 0.147062 0.849692
+X  0.756264 0.693311 0.401325
+X  0.518436 0.384041 0.590012
+3
+10 10 10
+X  0.776374 0.833062 0.405917
+X  0.326868 0.743788 0.526751
+X  0.0154439 0.939879 0.847523
+3
+10 10 10
+X  0.959096 0.712522 0.941311
+X  0.00345808 0.0643416 0.495408
+X  0.333894 0.549261 0.913355
+3
+10 10 10
+X  0.0633928 0.567817 0.930875
+X  0.267578 0.405089 0.0779371
+X  0.117271 0.161353 0.771248
+3
+10 10 10
+X  0.518596 0.679788 0.155289
+X  0.108608 0.456162 0.988351
+X  0.514525 0.78303 0.732138
+3
+10 10 10
+X  0.041276 0.798474 0.672017
+X  0.888799 0.757571 0.384539
+X  0.83011 0.761029 0.448881
+3
+10 10 10
+X  0.325518 0.094923 0.998142
+X  0.238873 0.158316 0.565959
+X  0.169748 0.425894 0.971047
+3
+10 10 10
+X  0.247685 0.543165 0.1324
+X  0.0189329 0.0617606 0.812189
+X  0.174222 0.170368 0.268351
+3
+10 10 10
+X  0.162572 0.684893 0.0513816
+X  0.894711 0.726169 0.849856
+X  0.566728 0.614968 0.607427
+3
+10 10 10
+X  0.951267 0.445079 0.368455
+X  0.400148 0.770597 0.463378
+X  0.39829 0.00947013 0.621694
+3
+10 10 10
+X  0.964248 0.179218 0.0475882
+X  0.935296 0.426904 0.590753
+X  0.067696 0.445836 0.652514
+3
+10 10 10
+X  0.879885 0.620058 0.822882
+X  0.148236 0.782631 0.507775
+X  0.199617 0.677342 0.233944
+3
+10 10 10
+X  0.0494732 0.244069 0.848912
+X  0.6569 0.195336 0.293991
+X  0.0253549 0.595484 0.0645876
+3
+10 10 10
+X  0.488733 0.993774 0.0740577
+X  0.110427 0.958022 0.253276
+X  0.158015 0.893318 0.68018
+3
+10 10 10
+X  0.748768 0.961014 0.126016
+X  0.401282 0.840899 0.746075
+X  0.224164 0.989134 0.528705
+3
+10 10 10
+X  0.731938 0.188752 0.206047
+X  0.965882 0.238225 0.450117
+X  0.814794 0.895125 0.645453
+3
+10 10 10
+X  0.108785 0.92048 0.240937
+X  0.173373 0.409213 0.234711
+X  0.247431 0.51964 0.192734
+3
+10 10 10
+X  0.500707 0.677655 0.0860517
+X  0.180886 0.426423 0.0470658
+X  0.306902 0.827705 0.887965
+3
+10 10 10
+X  0.0529768 0.0518689 0.877099
+X  0.581682 0.783807 0.0658506
+X  0.787729 0.74969 0.304075
+3
+10 10 10
+X  0.237846 0.564484 0.1992
+X  0.883299 0.673269 0.119679
+X  0.124236 0.846642 0.528892
+3
+10 10 10
+X  0.358948 0.0940727 0.0485317
+X  0.551681 0.594779 0.726187
+X  0.637733 0.775665 0.15261
+3
+10 10 10
+X  0.684799 0.0825677 0.980315
+X  0.572763 0.135545 0.0321839
+X  0.449862 0.717227 0.815991
+3
+10 10 10
+X  0.515713 0.504956 0.565681
+X  0.819788 0.742802 0.130165
+X  0.0189879 0.626101 0.803434
+3
+10 10 10
+X  0.138667 0.750337 0.650077
+X  0.667559 0.109285 0.744149
+X  0.716091 0.660966 0.338929
+3
+10 10 10
+X  0.442278 0.298698 0.114594
+X  0.594888 0.983497 0.197162
+X  0.575203 0.55626 0.332706
+3
+10 10 10
+X  0.607387 0.00612195 0.0499329
+X  0.423378 0.521834 0.554889
+X  0.989059 0.341622 0.297691
+3
+10 10 10
+X  0.119224 0.36061 0.923792
+X  0.922658 0.499278 0.674129
+X  0.572735 0.166837 0.783413
+3
+10 10 10
+X  0.316884 0.882928 0.444379
+X  0.655813 0.325206 0.743078
+X  0.770407 0.920094 0.726575
+3
+10 10 10
+X  0.967568 0.495297 0.282835
+X  0.300275 0.102683 0.288957
+X  0.350207 0.526061 0.810791
+3
+10 10 10
+X  0.905096 0.51512 0.152413
+X  0.202787 0.634344 0.513024
+X  0.126579 0.557002 0.0123013
+3
+10 10 10
+X  0.800708 0.129737 0.179138
+X  0.584121 0.446622 0.0620666
+X  0.0285004 0.102434 0.387273
+3
+10 10 10
+X  0.771578 0.872841 0.307366
+X  0.498153 0.840409 0.802663
+X  0.780987 0.140684 0.905346
+3
+10 10 10
+X  0.0699438 0.490891 0.431407
+X  0.880735 0.395988 0.946527
+X  0.0331482 0.598775 0.580872
+3
+10 10 10
+X  0.546172 0.725354 0.137874
+X  0.558473 0.526062 0.267611
+X  0.737611 0.110183 0.714233
+3
+10 10 10
+X  0.799678 0.138684 0.816667
+X  0.186951 0.910262 0.689509
+X  0.494317 0.408414 0.529918
+3
+10 10 10
+X  0.29698 0.189401 0.670602
+X  0.202326 0.259345 0.161494
+X  0.633734 0.14008 0.557481
+3
+10 10 10
+X  0.580261 0.173228 0.156257
+X  0.161133 0.7194 0.881611
+X  0.299007 0.277873 0.407673
+3
+10 10 10
+X  0.566618 0.0154844 0.517856
+X  0.280851 0.815162 0.65654
+X  0.0975185 0.00211305 0.566801
+3
+10 10 10
+X  0.787027 0.49643 0.975215
+X  0.316945 0.79341 0.164617
+X  0.987547 0.995737 0.423962
+3
+10 10 10
+X  0.149041 0.629471 0.564042
+X  0.706522 0.209732 0.73727
+X  0.862779 0.370865 0.45667
+3
+10 10 10
+X  0.74439 0.669871 0.734543
+X  0.152062 0.23649 0.750027
+X  0.669918 0.517341 0.565189
+3
+10 10 10
+X  0.326458 0.614859 0.567302
+X  0.893259 0.401886 0.0637327
+X  0.868474 0.718831 0.857143
+3
+10 10 10
+X  0.0330907 0.706378 0.85288
+X  0.457052 0.855419 0.48235
+X  0.021094 0.561941 0.692082
+3
+10 10 10
+X  0.758364 0.42472 0.0629468
+X  0.215033 0.169109 0.732818
+X  0.949576 0.321172 0.969308
+3
+10 10 10
+X  0.699603 0.99109 0.486648
+X  0.264793 0.317548 0.101507
+X  0.832095 0.210806 0.503394
+3
+10 10 10
+X  0.895828 0.0792805 0.222225
+X  0.752971 0.112371 0.928603
+X  0.60585 0.569424 0.784022
+3
+10 10 10
+X  0.0882007 0.590518 0.345963
+X  0.780283 0.348881 0.770682
+X  0.84323 0.563915 0.939791
+3
+10 10 10
+X  0.576048 0.513491 0.260963
+X  0.545356 0.213094 0.252053
+X  0.0320041 0.477887 0.5696
+3
+10 10 10
+X  0.133512 0.309982 0.780407
+X  0.636905 0.205809 0.859687
+X  0.85913 0.95878 0.972059
+3
+10 10 10
+X  0.787733 0.56463 0.541482
+X  0.571755 0.652831 0.132
+X  0.917717 0.433114 0.480881
+3
+10 10 10
+X  0.688399 0.276344 0.0447959
+X  0.628191 0.852391 0.558287
+X  0.889154 0.397747 0.771381
+3
+10 10 10
+X  0.141207 0.429751 0.249267
+X  0.710807 0.563263 0.559249
+X  0.491214 0.200168 0.765058
+3
+10 10 10
+X  0.350901 0.0592977 0.723838
+X  0.32296 0.847031 0.288468
+X  0.864442 0.418785 0.941299
+3
+10 10 10
+X  0.996442 0.336502 0.374413
+X  0.477323 0.0249018 0.650757
+X  0.522119 0.653093 0.503148
+3
+10 10 10
+X  0.0804055 0.542247 0.900895
+X  0.851786 0.683453 0.330647
+X  0.101054 0.39426 0.893909
+3
+10 10 10
+X  0.660302 0.885474 0.0940773
+X  0.425361 0.236375 0.153375
+X  0.149199 0.559335 0.000405591
+3
+10 10 10
+X  0.437667 0.423777 0.419191
+X  0.378966 0.420218 0.755693
+X  0.753379 0.897541 0.780595
+3
+10 10 10
+X  0.404136 0.41966 0.433687
+X  0.907284 0.500065 0.975934
+X  0.808179 0.351851 0.659387
+3
+10 10 10
+X  0.138826 0.452905 0.0536473
+X  0.0327351 0.113207 0.939121
+X  0.126812 0.538568 0.175496
+3
+10 10 10
+X  0.280188 0.687766 0.734831
+X  0.280593 0.125433 0.158607
+X  0.699784 0.504399 0.578825
+3
+10 10 10
+X  0.455477 0.257778 0.476366
+X  0.236071 0.661914 0.896026
+X  0.669759 0.569198 0.396091
+3
+10 10 10
+X  0.645693 0.377377 0.747942
+X  0.30508 0.516203 0.200847
+X  0.358727 0.548938 0.314054
+3
+10 10 10
+X  0.297849 0.67575 0.852622
+X  0.473345 0.955938 0.540389
+X  0.208175 0.236531 0.665822
+3
+10 10 10
+X  0.366783 0.936315 0.170221
+X  0.945608 0.391792 0.427999
+X  0.421975 0.627863 0.0899137
+3
+10 10 10
+X  0.318 0.297622 0.659112
+X  0.714091 0.943315 0.0364889
+X  0.462033 0.248395 0.552692
+3
+10 10 10
+X  0.66288 0.607122 0.10163
+X  0.976935 0.904971 0.77738
+X  0.829557 0.378316 0.733318
+3
+10 10 10
+X  0.369946 0.586491 0.969849
+X  0.0357674 0.953274 0.906164
+X  0.205989 0.898882 0.297956
+3
+10 10 10
+X  0.633988 0.320857 0.925819
+X  0.723902 0.638857 0.223441
+X  0.383013 0.352948 0.166755
+3
+10 10 10
+X  0.419502 0.814982 0.41515
+X  0.972194 0.477862 0.0222729
+X  0.0738238 0.454797 0.927244
+3
+10 10 10
+X  0.851204 0.284354 0.30556
+X  0.584522 0.654299 0.892051
+X  0.554371 0.690067 0.845325
+3
+10 10 10
+X  0.460535 0.896055 0.744207
+X  0.758491 0.530043 0.0650635
+X  0.68431 0.253945 0.703921
+3
+10 10 10
+X  0.90775 0.636959 0.056869
+X  0.0745054 0.0564608 0.871851
+X  0.489656 0.0286548 0.349713
+3
+10 10 10
+X  0.511929 0.102479 0.80451
+X  0.439173 0.953683 0.0888636
+X  0.744732 0.538205 0.743163
+3
+10 10 10
+X  0.636783 0.092576 0.43323
+X  0.482107 0.553111 0.329285
+X  0.226314 0.311602 0.859329
+3
+10 10 10
+X  0.291378 0.995912 0.113274
+X  0.995298 0.903662 0.750232
+X  0.0521674 0.978167 0.806693
+3
+10 10 10
+X  0.924018 0.467823 0.835348
+X  0.273731 0.979752 0.937826
+X  0.0782409 0.418925 0.891509
+3
+10 10 10
+X  0.167104 0.163657 0.429714
+X  0.910267 0.80044 0.52229
+X  0.343497 0.282547 0.0754011
+3
+10 10 10
+X  0.672782 0.508861 0.387003
+X  0.532111 0.800239 0.382915
+X  0.645385 0.795537 0.286577
+3
+10 10 10
+X  0.395617 0.847705 0.264745
+X  0.20231 0.771723 0.732568
+X  0.0376578 0.0454541 0.71232
+3
+10 10 10
+X  0.975484 0.123695 0.131244
+X  0.866993 0.290799 0.294901
+X  0.296707 0.201067 0.0953408
+3
+10 10 10
+X  0.818996 0.544564 0.377888
+X  0.894397 0.217346 0.886749
+X  0.281401 0.749457 0.686988
+3
+10 10 10
+X  0.664316 0.394842 0.482525
+X  0.950893 0.790458 0.33023
+X  0.215638 0.992768 0.101953
+3
+10 10 10
+X  0.948206 0.0304262 0.147407
+X  0.660526 0.00591033 0.271102
+X  0.79177 0.872903 0.561902
+3
+10 10 10
+X  0.0866714 0.16961 0.762968
+X  0.182012 0.988606 0.307532
+X  0.5599 0.883004 0.524878
+3
+10 10 10
+X  0.446649 0.164405 0.274335
+X  0.133637 0.828721 0.669177
+X  0.616163 0.779615 0.459635
+3
+10 10 10
+X  0.946393 0.995253 0.452404
+X  0.048346 0.943459 0.48283
+X  0.195753 0.603984 0.48874
+3
+10 10 10
+X  0.466855 0.395754 0.361644
+X  0.028757 0.482426 0.531254
+X  0.791725 0.664438 0.51986
+3
+10 10 10
+X  0.0992575 0.224338 0.402864
+X  0.624136 0.670987 0.567269
+X  0.898471 0.804625 0.39599
+3
+10 10 10
+X  0.567648 0.420787 0.175605
+X  0.0272838 0.36718 0.170857
+X  0.479688 0.415526 0.114316
+3
+10 10 10
+X  0.962518 0.611279 0.7183
+X  0.451258 0.0781347 0.114054
+X  0.812902 0.106892 0.59648
+3
+10 10 10
+X  0.344156 0.898617 0.260918
+X  0.864016 0.997875 0.485257
+X  0.26688 0.622011 0.156244
+3
+10 10 10
+X  0.834149 0.520482 0.960868
+X  0.230139 0.0881301 0.381656
+X  0.405744 0.115414 0.748836
+3
+10 10 10
+X  0.576601 0.595102 0.164362
+X  0.690917 0.557619 0.775641
+X  0.409217 0.00887705 0.853776
+3
+10 10 10
+X  0.523271 0.821779 0.960668
+X  0.119752 0.165934 0.859285
+X  0.38067 0.0299502 0.857159
+3
+10 10 10
+X  0.865927 0.29683 0.47917
+X  0.0221705 0.130979 0.999652
+X  0.983039 0.361119 0.0877818
+3
+10 10 10
+X  0.364695 0.766862 0.203196
+X  0.11353 0.343464 0.798297
+X  0.277892 0.0343803 0.355916
+3
+10 10 10
+X  0.0535336 0.443597 0.364793
+X  0.90731 0.966868 0.186572
+X  0.867977 0.08662 0.352506
+3
+10 10 10
+X  0.727262 0.46729 0.382457
+X  0.584421 0.333217 0.679287
+X  0.0635912 0.355387 0.810266
+3
+10 10 10
+X  0.0632429 0.338426 0.171385
+X  0.151025 0.703121 0.938247
+X  0.354221 0.816651 0.281711
+3
+10 10 10
+X  0.152518 0.0945434 0.316091
+X  0.508434 0.148077 0.759688
+X  0.873228 0.0553866 0.726557
+3
+10 10 10
+X  0.0597998 0.923364 0.813177
+X  0.412306 0.650626 0.280467
+X  0.794763 0.235047 0.613683
+3
+10 10 10
+X  0.47405 0.298639 0.96907
+X  0.284316 0.361881 0.307496
+X  0.455701 0.512906 0.0106171
+3
+10 10 10
+X  0.393948 0.867127 0.827268
+X  0.675659 0.0196445 0.921812
+X  0.991751 0.528079 0.0698885
+3
+10 10 10
+X  0.751439 0.401306 0.125275
+X  0.477996 0.461106 0.048639
+X  0.291173 0.873412 0.699265
+3
+10 10 10
+X  0.571639 0.668175 0.934312
+X  0.185323 0.142225 0.232951
+X  0.154393 0.426541 0.594832
+3
+10 10 10
+X  0.46189 0.882242 0.107738
+X  0.472507 0.27619 0.974865
+X  0.299775 0.95185 0.99451
+3
+10 10 10
+X  0.221587 0.943601 0.522588
+X  0.291475 0.69504 0.923895
+X  0.41675 0.173036 0.385001
+3
+10 10 10
+X  0.465389 0.464208 0.258413
+X  0.164654 0.0358477 0.926589
+X  0.0989663 0.221171 0.0688135
+3
+10 10 10
+X  0.331917 0.375564 0.495355
+X  0.926749 0.837454 0.377597
+X  0.0344874 0.309961 0.653787
+3
+10 10 10
+X  0.00935241 0.609736 0.605637
+X  0.00386199 0.831323 0.549238
+X  0.52645 0.122798 0.244277
+3
+10 10 10
+X  0.450345 0.539549 0.417313
+X  0.835346 0.00493794 0.881521
+X  0.0937589 0.169592 0.917369
+3
+10 10 10
+X  0.0203474 0.268558 0.138539
+X  0.089161 0.600475 0.514103
+X  0.584516 0.527224 0.351557
+3
+10 10 10
+X  0.962112 0.561712 0.661518
+X  0.615899 0.571064 0.271254
+X  0.221536 0.574926 0.102577
+3
+10 10 10
+X  0.770774 0.101377 0.225375
+X  0.015051 0.551721 0.764924
+X  0.432364 0.387067 0.769862
+3
+10 10 10
+X  0.313885 0.480826 0.939454
+X  0.231253 0.501174 0.208012
+X  0.369793 0.590334 0.808488
+3
+10 10 10
+X  0.883896 0.17485 0.335712
+X  0.235453 0.136962 0.897424
+X  0.896971 0.752861 0.468488
+3
+10 10 10
+X  0.168225 0.974398 0.0434146
+X  0.270803 0.745172 0.144791
+X  0.496178 0.760223 0.696513
+3
+10 10 10
+X  0.261102 0.192586 0.0835797
+X  0.0309635 0.506471 0.564406
+X  0.970417 0.737725 0.0655793
+3
+10 10 10
+X  0.17843 0.107517 0.655914
+X  0.986918 0.991413 0.830764
+X  0.32263 0.226866 0.967726
+3
+10 10 10
+X  0.220054 0.123838 0.720587
+X  0.688542 0.292063 0.694985
+X  0.731957 0.562866 0.440157
+3
+10 10 10
+X  0.876748 0.0590435 0.200379
+X  0.573261 0.320145 0.392965
+X  0.65684 0.351109 0.899437
+3
+10 10 10
+X  0.221246 0.321526 0.637161
+X  0.286825 0.499956 0.744678
+X  0.942739 0.486873 0.736092
+3
+10 10 10
+X  0.773503 0.809503 0.962958
+X  0.741229 0.0295571 0.0867955
+X  0.461816 0.718099 0.378859
+3
+10 10 10
+X  0.156801 0.450056 0.941724
+X  0.596958 0.326804 0.000767693
+X  0.797337 0.900065 0.320913
+3
+10 10 10
+X  0.190303 0.556905 0.672021
+X  0.0897392 0.778152 0.993547
+X  0.7269 0.0649769 0.493503
+3
+10 10 10
+X  0.471579 0.00771607 0.980376
+X  0.20767 0.781219 0.789879
+X  0.170628 0.522448 0.819437
+3
+10 10 10
+X  0.257423 0.984264 0.537536
+X  0.636282 0.141065 0.987592
+X  0.578006 0.738023 0.314397
+3
+10 10 10
+X  0.578774 0.53536 0.214462
+X  0.899687 0.725663 0.771367
+X  0.571708 0.815402 0.549519
+3
+10 10 10
+X  0.565256 0.542303 0.614496
+X  0.0587587 0.0138811 0.622212
+X  0.0391351 0.221551 0.403431
+3
+10 10 10
+X  0.829015 0.392179 0.925878
+X  0.648451 0.649603 0.910142
+X  0.185987 0.285885 0.0512077
+3
+10 10 10
+X  0.173579 0.863891 0.789231
+X  0.487976 0.442665 0.324591
+X  0.702437 0.342352 0.0502544
+3
+10 10 10
+X  0.473805 0.91406 0.865657
+X  0.0233231 0.479315 0.407959
+X  0.637819 0.538074 0.42184
+3
+10 10 10
+X  0.26003 0.577209 0.643391
+X  0.663461 0.406224 0.0355706
+X  0.589339 0.0546747 0.685173
+3
+10 10 10
+X  0.499481 0.240662 0.971058
+X  0.550689 0.414241 0.834949
+X  0.33992 0.902217 0.277614
+3
+10 10 10
+X  0.664511 0.604654 0.619965
+X  0.714766 0.0784585 0.534025
+X  0.580422 0.101782 0.0133406
+3
+10 10 10
+X  0.988382 0.7396 0.551415
+X  0.410222 0.99963 0.128624
+X  0.0536133 0.663091 0.534848
+3
+10 10 10
+X  0.0891839 0.25243 0.589522
+X  0.774357 0.751912 0.830184
+X  0.745415 0.302601 0.244425
+3
+10 10 10
+X  0.580364 0.642521 0.146641
+X  0.857978 0.307032 0.751295
+X  0.477943 0.0217983 0.829754
+3
+10 10 10
+X  0.0119682 0.602221 0.931535
+X  0.0253088 0.590602 0.671135
+X  0.576724 0.000824207 0.670766
+3
+10 10 10
+X  0.705347 0.0544375 0.333857
+X  0.240195 0.143621 0.586288
+X  0.829717 0.917979 0.338199
+3
+10 10 10
+X  0.659901 0.663394 0.6408
+X  0.904326 0.243758 0.283321
+X  0.0509667 0.101735 0.590354
+3
+10 10 10
+X  0.802262 0.579678 0.612152
+X  0.632015 0.591647 0.214373
+X  0.56355 0.616955 0.804975
+3
+10 10 10
+X  0.234686 0.193679 0.805799
+X  0.905452 0.899026 0.860237
+X  0.239309 0.139221 0.00385829
+3
+10 10 10
+X  0.825596 0.968939 0.921837
+X  0.163796 0.62884 0.58523
+X  0.804596 0.533165 0.828988
+3
+10 10 10
+X  0.0879172 0.584132 0.930723
+X  0.678271 0.386394 0.510402
+X  0.290423 0.0184091 0.102048
+3
+10 10 10
+X  0.504796 0.58196 0.719004
+X  0.309771 0.816645 0.912683
+X  0.115571 0.722097 0.811709
+3
+10 10 10
+X  0.975807 0.961406 0.95093
+X  0.979666 0.787003 0.919869
+X  0.901503 0.950798 0.548708
+3
+10 10 10
+X  0.486733 0.755394 0.0818735
+X  0.315721 0.843312 0.666005
+X  0.246445 0.521583 0.0523992
+3
+10 10 10
+X  0.756846 0.812006 0.0708083
+X  0.858895 0.316802 0.652768
+X  0.577898 0.626573 0.469413
+3
+10 10 10
+X  0.490581 0.742143 0.191511
+X  0.30229 0.717951 0.152917
+X  0.25322 0.697616 0.93992
+3
+10 10 10
+X  0.173089 0.599119 0.890718
+X  0.721797 0.0858521 0.646113
+X  0.80367 0.401573 0.489424
+3
+10 10 10
+X  0.469676 0.648018 0.0110069
+X  0.522075 0.404864 0.823013
+X  0.592883 0.263759 0.139814
+3
+10 10 10
+X  0.245651 0.841657 0.766387
+X  0.715065 0.332238 0.50853
+X  0.906575 0.634528 0.226481
+3
+10 10 10
+X  0.0594924 0.887748 0.924097
+X  0.999412 0.0608362 0.523216
+X  0.89013 0.782633 0.609068
+3
+10 10 10
+X  0.536243 0.586303 0.0106416
+X  0.0256669 0.0559791 0.658659
+X  0.0366738 0.578054 0.0635237
+3
+10 10 10
+X  0.859686 0.170937 0.327283
+X  0.9995 0.416589 0.16894
+X  0.765887 0.131653 0.501178
+3
+10 10 10
+X  0.274417 0.0382287 0.135705
+X  0.500898 0.0977211 0.0234531
+X  0.424995 0.0971331 0.0842894
+3
+10 10 10
+X  0.948211 0.987263 0.866922
+X  0.557279 0.523506 0.453226
+X  0.567921 0.549173 0.509205
+3
+10 10 10
+X  0.22658 0.585846 0.0872588
+X  0.290104 0.445533 0.258196
+X  0.617387 0.445033 0.674785
+3
+10 10 10
+X  0.786326 0.21092 0.806438
+X  0.287504 0.485337 0.844667
+X  0.423209 0.986235 0.942388
+3
+10 10 10
+X  0.446662 0.41123 0.039521
+X  0.530952 0.359441 0.0267842
+X  0.397874 0.91672 0.55029
+3
+10 10 10
+X  0.8511 0.484641 0.0994628
+X  0.360305 0.711222 0.685309
+X  0.447564 0.00132573 0.130842
+3
+10 10 10
+X  0.70576 0.618712 0.575875
+X  0.380544 0.405038 0.786796
+X  0.186983 0.692542 0.272133
+3
+10 10 10
+X  0.0316495 0.115752 0.258368
+X  0.974037 0.562414 0.669598
+X  0.0135584 0.0933659 0.0290395
+3
+10 10 10
+X  0.0403427 0.49124 0.94576
+X  0.590633 0.34234 0.430401
+X  0.690096 0.702645 0.141623
+3
+10 10 10
+X  0.375405 0.150208 0.142949
+X  0.506247 0.855968 0.761661
+X  0.0821224 0.236512 0.166699
+3
+10 10 10
+X  0.868918 0.423495 0.859242
+X  0.141051 0.455145 0.974993
+X  0.39942 0.429182 0.537407
+3
+10 10 10
+X  0.0690179 0.44274 0.630773
+X  0.0980574 0.483083 0.122013
+X  0.0438174 0.0737159 0.464353
+3
+10 10 10
+X  0.474219 0.763811 0.166998
+X  0.615842 0.139216 0.317206
+X  0.75879 0.645464 0.173174
+3
+10 10 10
+X  0.520451 0.727586 0.409687
+X  0.687151 0.596504 0.833182
+X  0.546393 0.737555 0.288326
+3
+10 10 10
+X  0.521386 0.136975 0.717508
+X  0.0587931 0.205993 0.160248
+X  0.689566 0.30405 0.643331
+3
+10 10 10
+X  0.811579 0.347868 0.717047
+X  0.275933 0.822086 0.480859
+X  0.442931 0.437928 0.620075
+3
+10 10 10
+X  0.760137 0.196719 0.265539
+X  0.933311 0.71717 0.993125
+X  0.342998 0.404321 0.589629
+3
+10 10 10
+X  0.176179 0.950714 0.327184
+X  0.464505 0.472099 0.464159
+X  0.182014 0.530892 0.670152
+3
+10 10 10
+X  0.342262 0.220459 0.974202
+X  0.985593 0.0320382 0.32207
+X  0.702641 0.307971 0.144156
+3
+10 10 10
+X  0.1835 0.750902 0.582084
+X  0.803575 0.511039 0.778803
+X  0.0691138 0.44435 0.495973
+3
+10 10 10
+X  0.0622386 0.787347 0.900294
+X  0.651868 0.963527 0.851007
+X  0.979052 0.428032 0.323107
+3
+10 10 10
+X  0.443211 0.610046 0.853999
+X  0.113363 0.952308 0.0744578
+X  0.0875648 0.937901 0.106496
+3
+10 10 10
+X  0.409635 0.640542 0.414467
+X  0.553791 0.824041 0.165369
+X  0.135875 0.627616 0.676407
+3
+10 10 10
+X  0.914678 0.69673 0.120757
+X  0.410651 0.758969 0.908104
+X  0.310944 0.410836 0.871631
+3
+10 10 10
+X  0.161952 0.389888 0.299663
+X  0.485059 0.833099 0.909708
+X  0.339058 0.946461 0.862016
+3
+10 10 10
+X  0.413516 0.0340263 0.799917
+X  0.520012 0.443661 0.440458
+X  0.934478 0.997451 0.2645
+3
+10 10 10
+X  0.0998469 0.133326 0.892116
+X  0.776254 0.048004 0.588846
+X  0.897011 0.458655 0.347815
+3
+10 10 10
+X  0.805115 0.769599 0.758651
+X  0.676745 0.931551 0.148539
+X  0.976408 0.416609 0.981637
+3
+10 10 10
+X  0.886116 0.755667 0.928099
+X  0.748131 0.169183 0.962125
+X  0.548048 0.689194 0.405786
+3
+10 10 10
+X  0.988506 0.623672 0.403238
+X  0.253006 0.723519 0.536564
+X  0.145122 0.499773 0.584568
+3
+10 10 10
+X  0.733968 0.396784 0.0432225
+X  0.0817827 0.201899 0.812821
+X  0.840433 0.878644 0.744372
+3
+10 10 10
+X  0.988972 0.855051 0.160982
+X  0.97061 0.741167 0.916649
+X  0.898709 0.489298 0.0858311
+3
+10 10 10
+X  0.860834 0.0373466 0.775025
+X  0.26662 0.0258531 0.398698
+X  0.669857 0.278859 0.122217
+3
+10 10 10
+X  0.206421 0.423981 0.62199
+X  0.790989 0.157949 0.0187743
+X  0.834212 0.239732 0.220673
+3
+10 10 10
+X  0.647033 0.0801656 0.0993164
+X  0.391405 0.0691378 0.954368
+X  0.552387 0.0397475 0.695535
+3
+10 10 10
+X  0.469035 0.938456 0.184833
+X  0.554866 0.79929 0.22218
+X  0.329892 0.0659098 0.248033
+3
+10 10 10
+X  0.728589 0.735767 0.526892
+X  0.850806 0.942188 0.950873
+X  0.472796 0.733178 0.108823
+3
+10 10 10
+X  0.491571 0.567389 0.348555
+X  0.712244 0.214422 0.42872
+X  0.81156 0.605827 0.497858
+3
+10 10 10
+X  0.765928 0.158214 0.537606
+X  0.461462 0.62725 0.476062
+X  0.646295 0.182116 0.275352
+3
+10 10 10
+X  0.868475 0.512008 0.341262
+X  0.116508 0.240597 0.0770289
+X  0.6434 0.0914027 0.0192173
+3
+10 10 10
+X  0.594273 0.564199 0.752395
+X  0.703096 0.0557698 0.319784
+X  0.0516508 0.768013 0.534206
+3
+10 10 10
+X  0.480371 0.579573 0.140033
+X  0.978229 0.345501 0.298248
+X  0.515835 0.806963 0.925497
+3
+10 10 10
+X  0.991897 0.453259 0.107613
+X  0.267249 0.321734 0.619621
+X  0.60851 0.438242 0.860217
+3
+10 10 10
+X  0.685539 0.0816417 0.95162
+X  0.704757 0.675915 0.515819
+X  0.457151 0.379011 0.571589
+3
+10 10 10
+X  0.776935 0.430662 0.339602
+X  0.311141 0.911033 0.919176
+X  0.451175 0.889262 0.264676
+3
+10 10 10
+X  0.749422 0.405098 0.0716397
+X  0.674919 0.396995 0.524898
+X  0.782533 0.664243 0.846632
+3
+10 10 10
+X  0.402153 0.272754 0.284874
+X  0.262371 0.958293 0.366516
+X  0.213991 0.663049 0.0424307
+3
+10 10 10
+X  0.72981 0.120201 0.421442
+X  0.301399 0.897136 0.852104
+X  0.641001 0.208278 0.763137
+3
+10 10 10
+X  0.560176 0.659452 0.652399
+X  0.824853 0.408875 0.0574968
+X  0.896493 0.083794 0.454491
+3
+10 10 10
+X  0.421391 0.866327 0.118735
+X  0.268023 0.26848 0.391488
+X  0.552897 0.530851 0.349781
+3
+10 10 10
+X  0.919413 0.744841 0.0128304
+X  0.961843 0.474651 0.133031
+X  0.383285 0.77605 0.0301674
+3
+10 10 10
+X  0.235388 0.417051 0.238445
+X  0.998525 0.977227 0.897897
+X  0.650924 0.80208 0.306772
+3
+10 10 10
+X  0.708421 0.698573 0.390566
+X  0.162912 0.119964 0.256892
+X  0.281647 0.387987 0.525373
+3
+10 10 10
+X  0.673135 0.940884 0.0562232
+X  0.022916 0.860296 0.801065
+X  0.0357464 0.822139 0.275716
+3
+10 10 10
+X  0.168778 0.205424 0.0517661
+X  0.198945 0.440813 0.468817
+X  0.43739 0.439338 0.446045
+3
+10 10 10
+X  0.335287 0.0902622 0.248125
+X  0.642059 0.798683 0.946698
+X  0.032625 0.961596 0.0666617
+3
+10 10 10
+X  0.289518 0.243243 0.454649
+X  0.81489 0.916378 0.395532
+X  0.871113 0.939294 0.255829
+3
+10 10 10
+X  0.672178 0.97504 0.0779679
+X  0.947894 0.143818 0.283392
+X  0.99966 0.342763 0.724205
+3
+10 10 10
+X  0.468477 0.780153 0.163543
+X  0.914522 0.11544 0.253805
+X  0.162647 0.757499 0.0524885
+3
+10 10 10
+X  0.109345 0.790125 0.0140841
+X  0.176006 0.079642 0.257327
+X  0.630655 0.894532 0.173704
+3
+10 10 10
+X  0.0261872 0.765645 0.112998
+X  0.282016 0.437823 0.0880377
+X  0.359984 0.385717 0.231855
+3
+10 10 10
+X  0.643376 0.385378 0.574618
+X  0.367581 0.853855 0.354771
+X  0.531124 0.768377 0.470211
+3
+10 10 10
+X  0.784929 0.931024 0.227711
+X  0.837417 0.0403683 0.0178355
+X  0.851501 0.216375 0.0974775
+3
+10 10 10
+X  0.108828 0.84703 0.99201
+X  0.282532 0.873217 0.757655
+X  0.39553 0.155233 0.195478
+3
+10 10 10
+X  0.483568 0.515216 0.581196
+X  0.715423 0.158592 0.966573
+X  0.290041 0.526173 0.820428
+3
+10 10 10
+X  0.644812 0.0572967 0.588805
+X  0.115024 0.842226 0.519828
+X  0.342735 0.679643 0.560197
+3
+10 10 10
+X  0.36057 0.531144 0.776571
+X  0.458048 0.639973 0.623601
+X  0.450057 0.922505 0.496818
+3
+10 10 10
+X  0.207712 0.318035 0.652051
+X  0.403191 0.801603 0.167267
+X  0.984386 0.517026 0.325859
+3
+10 10 10
+X  0.950959 0.807067 0.852032
+X  0.771387 0.451879 0.909329
+X  0.360192 0.566903 0.751554
+3
+10 10 10
+X  0.88002 0.909638 0.431197
+X  0.440217 0.270209 0.962342
+X  0.216789 0.728256 0.602314
+3
+10 10 10
+X  0.84039 0.178314 0.524819
+X  0.337208 0.386026 0.842854
+X  0.989258 0.789217 0.644457
+3
+10 10 10
+X  0.156525 0.773603 0.161482
+X  0.482384 0.724562 0.968549
+X  0.334416 0.495949 0.420429
+3
+10 10 10
+X  0.243745 0.856141 0.987332
+X  0.995299 0.736162 0.89697
+X  0.426496 0.176379 0.167179
+3
+10 10 10
+X  0.388838 0.393168 0.895435
+X  0.991152 0.233557 0.073749
+X  0.515971 0.570765 0.459775
+3
+10 10 10
+X  0.358825 0.560023 0.248992
+X  0.00328197 0.716548 0.0225948
+X  0.164764 0.198933 0.747157
+3
+10 10 10
+X  0.133314 0.533348 0.243106
+X  0.553743 0.777093 0.0992475
+X  0.541075 0.772392 0.835409
+3
+10 10 10
+X  0.438045 0.198887 0.0117881
+X  0.605223 0.587725 0.404956
+X  0.500659 0.578877 0.638513
+3
+10 10 10
+X  0.574408 0.0948478 0.209278
+X  0.0341828 0.453673 0.769301
+X  0.283175 0.456955 0.48585
+3
+10 10 10
+X  0.30577 0.621719 0.684782
+X  0.0529265 0.755033 0.218131
+X  0.296033 0.308776 0.995223
+3
+10 10 10
+X  0.39528 0.84985 0.767615
+X  0.230689 0.287895 0.966503
+X  0.242477 0.893119 0.554228
+3
+10 10 10
+X  0.647433 0.393777 0.133104
+X  0.285946 0.968185 0.227952
+X  0.495224 0.00236773 0.681625
+3
+10 10 10
+X  0.264525 0.285543 0.13858
+X  0.750374 0.591312 0.7603
+X  0.435157 0.644239 0.515333
+3
+10 10 10
+X  0.653287 0.940271 0.824109
+X  0.648511 0.335551 0.673959
+X  0.416126 0.566241 0.961854
+3
+10 10 10
+X  0.382628 0.808718 0.854973
+X  0.936856 0.456151 0.24875
+X  0.0699601 0.742097 0.216935
+3
+10 10 10
+X  0.297912 0.237321 0.219303
+X  0.979537 0.501846 0.504845
+X  0.118118 0.252221 0.0961575
+3
+10 10 10
+X  0.878417 0.687377 0.740396
+X  0.39375 0.340664 0.680667
+X  0.217858 0.989175 0.0162189
+3
+10 10 10
+X  0.891817 0.405301 0.58246
+X  0.853671 0.787929 0.391178
+X  0.708644 0.724785 0.84733
+3
+10 10 10
+X  0.957394 0.794745 0.589427
+X  0.17433 0.0926569 0.826748
+X  0.393632 0.0721944 0.328595
+3
+10 10 10
+X  0.898478 0.190312 0.580815
+X  0.994635 0.0687289 0.268192
+X  0.735031 0.462479 0.608857
+3
+10 10 10
+X  0.415699 0.680337 0.598032
+X  0.431918 0.572154 0.00333222
+X  0.0143773 0.425826 0.791261
+3
+10 10 10
+X  0.405555 0.13447 0.516045
+X  0.252885 0.0918645 0.31079
+X  0.842312 0.266194 0.403447
+3
+10 10 10
+X  0.66906 0.659826 0.475641
+X  0.997655 0.558304 0.665953
+X  0.57847 0.552939 0.734682
+3
+10 10 10
+X  0.846663 0.28797 0.197161
+X  0.455519 0.703669 0.877498
+X  0.0535511 0.135586 0.449652
+3
+10 10 10
+X  0.0568833 0.149964 0.875478
+X  0.848144 0.555519 0.00994797
+X  0.36419 0.808404 0.101812
+3
+10 10 10
+X  0.67498 0.650716 0.368006
+X  0.078427 0.319776 0.0278327
+X  0.554068 0.317431 0.586137
+3
+10 10 10
+X  0.220022 0.895901 0.139076
+X  0.954704 0.742564 0.427046
+X  0.151865 0.198083 0.130715
+3
+10 10 10
+X  0.0293628 0.251634 0.266301
+X  0.479015 0.308517 0.416264
+X  0.354493 0.156662 0.971783
+3
+10 10 10
+X  0.364441 0.520852 0.780187
+X  0.466253 0.195831 0.430903
+X  0.83426 0.274258 0.750679
+3
+10 10 10
+X  0.862092 0.828327 0.0681104
+X  0.448229 0.0483486 0.964012
+X  0.587305 0.00305258 0.706575
+3
+10 10 10
+X  0.0143505 0.154917 0.904658
+X  0.145065 0.18428 0.156293
+X  0.411366 0.663295 0.46481
+3
+10 10 10
+X  0.82763 0.017788 0.621472
+X  0.799414 0.382229 0.142323
+X  0.579601 0.848482 0.338155
+3
+10 10 10
+X  0.0105039 0.682742 0.612413
+X  0.761183 0.544834 0.44074
+X  0.829294 0.993064 0.489089
+3
+10 10 10
+X  0.793305 0.580368 0.492141
+X  0.499881 0.594719 0.647059
+X  0.404539 0.739784 0.831339
+3
+10 10 10
+X  0.560831 0.151149 0.494634
+X  0.0256415 0.97878 0.512422
+X  0.647113 0.778193 0.894651
+3
+10 10 10
+X  0.789437 0.357794 0.743133
+X  0.127591 0.368298 0.425875
+X  0.740005 0.129481 0.97071
+3
+10 10 10
+X  0.180745 0.958775 0.963773
+X  0.669833 0.75208 0.544142
+X  0.161975 0.251961 0.13886
+3
+10 10 10
+X  0.809034 0.6565 0.878644
+X  0.640373 0.217331 0.0297934
+X  0.135007 0.242973 0.00857304
+3
+10 10 10
+X  0.647429 0.890086 0.786766
+X  0.54208 0.679523 0.14456
+X  0.285213 0.807114 0.512858
+3
+10 10 10
+X  0.711088 0.547119 0.642339
+X  0.681798 0.727863 0.601114
+X  0.645571 0.397697 0.353195
+3
+10 10 10
+X  0.189713 0.559672 0.605156
+X  0.328573 0.368705 0.261656
+X  0.207217 0.00907761 0.478987
+3
+10 10 10
+X  0.23701 0.144084 0.72196
+X  0.245583 0.791513 0.612046
+X  0.0323497 0.333593 0.291569
+3
+10 10 10
+X  0.17691 0.618806 0.0986827
+X  0.689768 0.329894 0.645801
+X  0.332107 0.0116926 0.373665
+3
+10 10 10
+X  0.933221 0.657264 0.771361
+X  0.286416 0.846977 0.331033
+X  0.891572 0.17555 0.699738
+3
+10 10 10
+X  0.153227 0.382767 0.708816
+X  0.632214 0.619777 0.8529
+X  0.354174 0.865361 0.644413
+3
+10 10 10
+X  0.96622 0.89771 0.978006
+X  0.257789 0.0746203 0.596812
+X  0.356471 0.764388 0.926707
+3
+10 10 10
+X  0.00227268 0.0964953 0.938399
+X  0.375937 0.0297167 0.595663
+X  0.147299 0.316133 0.44264
+3
+10 10 10
+X  0.478332 0.207704 0.61819
+X  0.17807 0.360932 0.000956713
+X  0.886886 0.993146 0.620734
+3
+10 10 10
+X  0.739786 0.34732 0.486095
+X  0.384199 0.31354 0.383805
+X  0.362205 0.571328 0.458426
+3
+10 10 10
+X  0.959017 0.9278 0.222814
+X  0.885723 0.930072 0.319309
+X  0.824122 0.30601 0.349026
+3
+10 10 10
+X  0.419785 0.453309 0.665159
+X  0.862425 0.93164 0.872863
+X  0.480615 0.10971 0.233795
+3
+10 10 10
+X  0.481572 0.996596 0.226941
+X  0.102306 0.736382 0.57426
+X  0.588401 0.12058 0.8878
+3
+10 10 10
+X  0.972206 0.482785 0.459128
+X  0.430632 0.441802 0.386928
+X  0.653445 0.327525 0.317
+3
+10 10 10
+X  0.972754 0.151647 0.62301
+X  0.32178 0.571433 0.0763186
+X  0.986939 0.433858 0.00795897
+3
+10 10 10
+X  0.859802 0.914473 0.117669
+X  0.0935964 0.396045 0.114265
+X  0.320537 0.498351 0.850647
+3
+10 10 10
+X  0.894797 0.0867517 0.971227
+X  0.782597 0.0589577 0.454012
+X  0.241726 0.489589 0.895813
+3
+10 10 10
+X  0.628654 0.143034 0.223338
+X  0.945654 0.115789 0.374985
+X  0.568665 0.437569 0.946418
+3
+10 10 10
+X  0.644983 0.424507 0.380276
+X  0.652942 0.284309 0.294749
+X  0.770611 0.377905 0.690794
+3
+10 10 10
+X  0.884877 0.698442 0.189145
+X  0.735523 0.59324 0.275897
+X  0.70675 0.375837 0.334854
+3
+10 10 10
+X  0.160762 0.617563 0.824444
+X  0.0565758 0.246217 0.967478
+X  0.279914 0.191871 0.0832669
+3
+10 10 10
+X  0.654899 0.760536 0.520836
+X  0.601317 0.405519 0.945343
+X  0.981593 0.0584611 0.229652
+3
+10 10 10
+X  0.276343 0.829072 0.607557
+X  0.967137 0.713949 0.306
+X  0.156282 0.449472 0.899239
+3
+10 10 10
+X  0.432179 0.156223 0.275076
+X  0.767033 0.316985 0.892639
+X  0.591477 0.373561 0.138856
+3
+10 10 10
+X  0.558955 0.653475 0.330728
+X  0.642222 0.308374 0.0912634
+X  0.163057 0.909692 0.496782
+3
+10 10 10
+X  0.1084 0.891285 0.555243
+X  0.338052 0.167628 0.384316
+X  0.94561 0.134765 0.0982649
+3
+10 10 10
+X  0.251609 0.291046 0.547737
+X  0.150848 0.723225 0.70396
+X  0.425925 0.490258 0.0209454
+3
+10 10 10
+X  0.318564 0.0817345 0.394506
+X  0.45742 0.640689 0.0479816
+X  0.788148 0.282911 0.356356
+3
+10 10 10
+X  0.879411 0.445968 0.266048
+X  0.376193 0.554369 0.157333
+X  0.931437 0.892421 0.324961
+3
+10 10 10
+X  0.315753 0.83803 0.459726
+X  0.414018 0.0896395 0.750772
+X  0.961755 0.240488 0.473997
+3
+10 10 10
+X  0.665715 0.666412 0.964255
+X  0.686661 0.984976 0.0459892
+X  0.0811671 0.442396 0.686678
+3
+10 10 10
+X  0.129149 0.230544 0.969589
+X  0.485505 0.109955 0.415558
+X  0.751553 0.486148 0.969926
+3
+10 10 10
+X  0.908886 0.417585 0.862347
+X  0.233847 0.733338 0.700378
+X  0.693572 0.147356 0.790017
+3
+10 10 10
+X  0.444344 0.109111 0.0305051
+X  0.918341 0.774826 0.696918
+X  0.882596 0.461486 0.681894
+3
+10 10 10
+X  0.928585 0.542654 0.12429
+X  0.615263 0.671802 0.354834
+X  0.584853 0.157307 0.464789
+3
+10 10 10
+X  0.000410601 0.90886 0.950937
+X  0.970337 0.817745 0.368523
+X  0.832684 0.0515924 0.101861
+3
+10 10 10
+X  0.533062 0.745165 0.249216
+X  0.323079 0.189509 0.358327
+X  0.353584 0.10785 0.133153
+3
+10 10 10
+X  0.0505019 0.990446 0.594639
+X  0.732396 0.919031 0.137293
+X  0.856686 0.534294 0.809095
+3
+10 10 10
+X  0.21152 0.119147 0.966402
+X  0.676309 0.119558 0.875261
+X  0.627247 0.0898948 0.693007
+3
+10 10 10
+X  0.995769 0.922579 0.744599
+X  0.0976298 0.455641 0.489764
+X  0.346846 0.77872 0.679273
+3
+10 10 10
+X  0.705173 0.132305 0.787123
+X  0.838325 0.182807 0.77757
+X  0.432964 0.915202 0.6966
+3
+10 10 10
+X  0.570257 0.771888 0.230895
+X  0.379351 0.983408 0.350042
+X  0.345753 0.659718 0.4696
+3
+10 10 10
+X  0.221014 0.286964 0.559494
+X  0.914021 0.282733 0.482073
+X  0.65862 0.380363 0.937715
+3
+10 10 10
+X  0.148384 0.727209 0.716435
+X  0.827658 0.432382 0.848739
+X  0.614781 0.270707 0.031546
+3
+10 10 10
+X  0.392351 0.703671 0.946748
+X  0.0889511 0.273928 0.718636
+X  0.319846 0.65328 0.702045
+3
+10 10 10
+X  0.669888 0.999033 0.361762
+X  0.139488 0.220047 0.648727
+X  0.698982 0.134069 0.93146
+3
+10 10 10
+X  0.181056 0.792689 0.311823
+X  0.11877 0.941074 0.0390324
+X  0.835205 0.768731 0.471414
+3
+10 10 10
+X  0.683944 0.383512 0.742122
+X  0.71549 0.775863 0.445793
+X  0.662239 0.864814 0.719721
+3
+10 10 10
+X  0.380875 0.18466 0.373001
+X  0.0829198 0.854548 0.372034
+X  0.444682 0.994035 0.592081
+3
+10 10 10
+X  0.0934087 0.693017 0.72615
+X  0.0248686 0.874073 0.518839
+X  0.336692 0.992843 0.459913
+3
+10 10 10
+X  0.375724 0.828048 0.228644
+X  0.847139 0.511992 0.612156
+X  0.58926 0.227483 0.388019
+3
+10 10 10
+X  0.0350534 0.889721 0.252833
+X  0.754775 0.270596 0.437493
+X  0.127776 0.353516 0.292041
+3
+10 10 10
+X  0.49981 0.798198 0.286077
+X  0.0918911 0.891607 0.979094
+X  0.818041 0.916476 0.853167
+3
+10 10 10
+X  0.33688 0.253167 0.84601
+X  0.796793 0.628892 0.674058
+X  0.0254371 0.47603 0.18605
+3
+10 10 10
+X  0.637593 0.0652907 0.413533
+X  0.0256125 0.100344 0.303254
+X  0.278446 0.855119 0.573851
+3
+10 10 10
+X  0.715939 0.982895 0.927367
+X  0.00798011 0.482704 0.725565
+X  0.294057 0.574596 0.617172
+3
+10 10 10
+X  0.273151 0.392637 0.533647
+X  0.126318 0.729517 0.786815
+X  0.972328 0.52631 0.415707
+3
+10 10 10
+X  0.646386 0.551747 0.891737
+X  0.832436 0.189341 0.957028
+X  0.245969 0.214953 0.0573717
+3
+10 10 10
+X  0.549224 0.493399 0.91249
+X  0.123074 0.209338 0.895385
+X  0.0504407 0.217318 0.378089
+3
+10 10 10
+X  0.776006 0.511375 0.952685
+X  0.393178 0.784525 0.345322
+X  0.926825 0.910843 0.0748388
+3
+10 10 10
+X  0.71364 0.883171 0.601149
+X  0.129347 0.529557 0.152896
+X  0.0210835 0.361993 0.342237
+3
+10 10 10
+X  0.978111 0.607963 0.55719
+X  0.0354828 0.157186 0.0505891
+X  0.947973 0.28026 0.259927
+3
+10 10 10
+X  0.843358 0.330701 0.477245
+X  0.221448 0.106706 0.98862
+X  0.174133 0.499884 0.773145
+3
+10 10 10
+X  0.519454 0.426709 0.683988
+X  0.594293 0.140349 0.56716
+X  0.195442 0.269696 0.0967167
+3
+10 10 10
+X  0.348338 0.290779 0.45871
+X  0.690575 0.26889 0.0666728
+X  0.247766 0.304373 0.223859
+3
+10 10 10
+X  0.298355 0.252346 0.504119
+X  0.558282 0.0957045 0.83482
+X  0.0355268 0.317152 0.941527
+3
+10 10 10
+X  0.0241466 0.491285 0.441411
+X  0.797292 0.0107392 0.86812
+X  0.48128 0.605032 0.00846868
+3
+10 10 10
+X  0.0484399 0.800474 0.278164
+X  0.145157 0.148813 0.568943
+X  0.603867 0.839388 0.837833
+3
+10 10 10
+X  0.67054 0.0871539 0.142206
+X  0.894398 0.385509 0.394553
+X  0.398518 0.94379 0.490257
+3
+10 10 10
+X  0.233338 0.979317 0.807409
+X  0.174864 0.00346381 0.298694
+X  0.616275 0.800756 0.309433
+3
+10 10 10
+X  0.484394 0.282036 0.914465
+X  0.492863 0.330476 0.71494
+X  0.771027 0.475632 0.863753
+3
+10 10 10
+X  0.339971 0.0794991 0.703141
+X  0.177804 0.750039 0.790295
+X  0.320011 0.644437 0.175803
+3
+10 10 10
+X  0.714563 0.0429547 0.119594
+X  0.20482 0.276292 0.098911
+X  0.0122294 0.451157 0.102375
+3
+10 10 10
+X  0.310923 0.0674315 0.90313
+X  0.620357 0.551826 0.185166
+X  0.534822 0.0446891 0.515642
+3
+10 10 10
+X  0.249762 0.815716 0.991274
+X  0.113514 0.155687 0.0707733
+X  0.816655 0.333491 0.820812
+3
+10 10 10
+X  0.60695 0.653502 0.465249
+X  0.782753 0.368065 0.508204
+X  0.902347 0.572885 0.784496
+3
+10 10 10
+X  0.00125782 0.585115 0.235653
+X  0.103633 0.896038 0.303084
+X  0.00676295 0.516395 0.85491
+3
+10 10 10
+X  0.191929 0.0512168 0.899599
+X  0.707571 0.300979 0.715316
+X  0.698845 0.414493 0.871003
+3
+10 10 10
+X  0.769619 0.231148 0.204495
+X  0.590431 0.838098 0.857997
+X  0.0556795 0.620851 0.226062
+3
+10 10 10
+X  0.563883 0.523198 0.798947
+X  0.348379 0.524456 0.384062
+X  0.584032 0.628089 0.2801
+3
+10 10 10
+X  0.887117 0.634851 0.796494
+X  0.742027 0.826781 0.847711
+X  0.641626 0.534352 0.14869
+3
+10 10 10
+X  0.356942 0.233197 0.563183
+X  0.227945 0.00281557 0.794331
+X  0.43244 0.593246 0.632429
+3
+10 10 10
+X  0.290436 0.648926 0.25328
+X  0.516498 0.212809 0.776479
+X  0.315445 0.561188 0.300935
+3
+10 10 10
+X  0.699507 0.145221 0.929023
+X  0.979606 0.0323375 0.563875
+X  0.7761 0.774365 0.390655
+3
+10 10 10
+X  0.623811 0.415991 0.925007
+X  0.772501 0.772933 0.158204
+X  0.335684 0.000878856 0.161019
+3
+10 10 10
+X  0.130015 0.433319 0.754266
+X  0.762444 0.723755 0.403191
+X  0.0157245 0.240253 0.616
+3
+10 10 10
+X  0.792203 0.555698 0.177188
+X  0.0931377 0.255205 0.322409
+X  0.0221609 0.234811 0.354747
+3
+10 10 10
+X  0.586035 0.0109114 0.129111
+X  0.976691 0.634723 0.545102
+X  0.901698 0.407224 0.318036
+3
+10 10 10
+X  0.0599016 0.742907 0.318915
+X  0.220921 0.872922 0.752233
+X  0.975187 0.635366 0.475989
+3
+10 10 10
+X  0.378378 0.651091 0.716242
+X  0.994378 0.443294 0.271941
+X  0.171566 0.536432 0.527146
+3
+10 10 10
+X  0.493976 0.558593 0.761957
+X  0.848722 0.144628 0.772868
+X  0.977834 0.121319 0.407591
+3
+10 10 10
+X  0.522936 0.0230164 0.814815
+X  0.840972 0.082918 0.557722
+X  0.159886 0.303839 0.430644
+3
+10 10 10
+X  0.912119 0.279026 0.0660107
+X  0.388108 0.657403 0.717102
+X  0.10435 0.651781 0.160395
+3
+10 10 10
+X  0.376291 0.823348 0.696827
+X  0.903437 0.317323 0.25542
+X  0.665394 0.166045 0.400048
+3
+10 10 10
+X  0.438262 0.143879 0.521366
+X  0.845853 0.666815 0.544383
+X  0.660668 0.507786 0.627301
+3
+10 10 10
+X  0.21839 0.667672 0.93114
+X  0.649034 0.579792 0.210166
+X  0.715045 0.9679 0.867569
+3
+10 10 10
+X  0.432147 0.0722504 0.51935
+X  0.592542 0.448542 0.342698
+X  0.289369 0.351978 0.660021
+3
+10 10 10
+X  0.544789 0.0173722 0.826066
+X  0.944836 0.455634 0.969945
+X  0.466203 0.301487 0.63676
+3
+10 10 10
+X  0.0105854 0.962155 0.144546
+X  0.637886 0.180545 0.812218
+X  0.569026 0.829579 0.39201
+3
+10 10 10
+X  0.779191 0.544624 0.35991
+X  0.64676 0.976771 0.43216
+X  0.166111 0.569313 0.880702
+3
+10 10 10
+X  0.508808 0.858682 0.23268
+X  0.168829 0.403471 0.250052
+X  0.994895 0.348307 0.705687
+3
+10 10 10
+X  0.96484 0.81451 0.00717383
+X  0.601599 0.825095 0.969329
+X  0.746145 0.462981 0.149874
+3
+10 10 10
+X  0.558363 0.0320072 0.979453
+X  0.950373 0.811199 0.524077
+X  0.310283 0.457959 0.500848
+3
+10 10 10
+X  0.742443 0.62407 0.0701613
+X  0.623144 0.132878 0.928843
+X  0.855825 0.301707 0.332314
+3
+10 10 10
+X  0.105877 0.296602 0.680621
+X  0.811564 0.261442 0.495131
+X  0.818737 0.863042 0.320226
+3
+10 10 10
+X  0.788066 0.609187 0.783207
+X  0.93794 0.16755 0.815214
+X  0.917393 0.117923 0.626413
+3
+10 10 10
+X  0.441471 0.428205 0.0843719
+X  0.942319 0.170648 0.708442
+X  0.0124802 0.793793 0.84132
+3
+10 10 10
+X  0.941324 0.649617 0.143027
+X  0.273638 0.755494 0.439629
+X  0.954259 0.567058 0.701071
+3
+10 10 10
+X  0.44939 0.385795 0.564112
+X  0.769615 0.173862 0.173299
+X  0.552822 0.111802 0.340849
+3
+10 10 10
+X  0.368037 0.0291947 0.458772
+X  0.994449 0.470665 0.886977
+X  0.0788214 0.412984 0.0576252
+3
+10 10 10
+X  0.787263 0.425464 0.851418
+X  0.628583 0.366788 0.501035
+X  0.771609 0.640426 0.256529
+3
+10 10 10
+X  0.211238 0.594684 0.823587
+X  0.912309 0.0440741 0.209382
+X  0.476422 0.81369 0.383244
+3
+10 10 10
+X  0.649721 0.366512 0.495046
+X  0.99057 0.734549 0.52424
+X  0.449341 0.728998 0.994905
+3
+10 10 10
+X  0.336318 0.80782 0.40789
+X  0.393943 0.595083 0.833354
+X  0.245361 0.223665 0.200142
+3
+10 10 10
+X  0.746396 0.995275 0.840567
+X  0.00292566 0.206513 0.435252
+X  0.826513 0.118822 0.479326
+3
+10 10 10
+X  0.0358954 0.595243 0.293015
+X  0.419139 0.244964 0.659527
+X  0.914185 0.235534 0.394076
+3
+10 10 10
+X  0.438425 0.684875 0.123074
+X  0.433331 0.0211931 0.930894
+X  0.84122 0.415137 0.525976
+3
+10 10 10
+X  0.674574 0.660498 0.749642
+X  0.874716 0.406894 0.744916
+X  0.715283 0.40982 0.951429
+3
+10 10 10
+X  0.150535 0.236333 0.0702509
+X  0.629861 0.272228 0.665494
+X  0.922876 0.691367 0.910458
+3
+10 10 10
+X  0.582403 0.605552 0.145992
+X  0.976479 0.0439776 0.830867
+X  0.0995537 0.477308 0.85206
+3
+10 10 10
+X  0.0304474 0.318528 0.267197
+X  0.556424 0.993102 0.927695
+X  0.306065 0.867818 0.334589
+3
+10 10 10
+X  0.0509814 0.583101 0.744408
+X  0.00241037 0.733636 0.980741
+X  0.0726613 0.363496 0.252969
+3
+10 10 10
+X  0.738156 0.286372 0.944336
+X  0.648614 0.868776 0.549889
+X  0.794606 0.845255 0.593867
+3
+10 10 10
+X  0.625473 0.944809 0.0711748
+X  0.477534 0.975256 0.389703
+X  0.74473 0.53168 0.382806
+3
+10 10 10
+X  0.672425 0.837745 0.250624
+X  0.00701368 0.888727 0.833725
+X  0.751422 0.891137 0.567361
+3
+10 10 10
+X  0.732163 0.963799 0.930858
+X  0.985132 0.701954 0.21723
+X  0.929469 0.350568 0.0860059
+3
+10 10 10
+X  0.479358 0.145175 0.931261
+X  0.073224 0.770648 0.87607
+X  0.144399 0.248182 0.851327
+3
+10 10 10
+X  0.534102 0.992912 0.383007
+X  0.916908 0.665337 0.220752
+X  0.167532 0.672351 0.109479
+3
+10 10 10
+X  0.00125721 0.423773 0.000616314
+X  0.568618 0.155936 0.964415
+X  0.499476 0.141068 0.666369
+3
+10 10 10
+X  0.716706 0.0705368 0.0169372
+X  0.802712 0.549894 0.162112
+X  0.733973 0.623118 0.93276
+3
+10 10 10
+X  0.610043 0.767517 0.180941
+X  0.46137 0.301619 0.173854
+X  0.844377 0.218527 0.839191
+3
+10 10 10
+X  0.0651288 0.386059 0.511541
+X  0.174608 0.387317 0.935314
+X  0.175224 0.955935 0.0912503
+3
+10 10 10
+X  0.139639 0.455411 0.232318
+X  0.806008 0.172117 0.302855
+X  0.822945 0.974829 0.85275
+3
+10 10 10
+X  0.985057 0.708802 0.475868
+X  0.917817 0.318845 0.243385
+X  0.0987583 0.780215 0.545005
+3
+10 10 10
+X  0.272612 0.624592 0.763532
+X  0.111803 0.68972 0.149591
+X  0.623344 0.864328 0.536908
+3
+10 10 10
+X  0.558658 0.0395525 0.492843
+X  0.649909 0.179192 0.948254
+X  0.882227 0.9852 0.120371
+3
+10 10 10
+X  0.185082 0.808145 0.0951994
+X  0.0378321 0.793202 0.804001
+X  0.5137 0.711019 0.122846
+3
+10 10 10
+X  0.757085 0.809777 0.903061
+X  0.30209 0.0823889 0.527653
+X  0.0656218 0.194191 0.217373
+3
+10 10 10
+X  0.215213 0.817535 0.0817017
+X  0.752121 0.376194 0.121254
+X  0.244964 0.0261023 0.300446
+3
+10 10 10
+X  0.193217 0.908329 0.285645
+X  0.313588 0.0934119 0.0937902
+X  0.408787 0.131244 0.886992
+3
+10 10 10
+X  0.212788 0.644944 0.598011
+X  0.335635 0.402029 0.407788
+X  0.238696 0.704119 0.490177
+3
+10 10 10
+X  0.766349 0.769741 0.684368
+X  0.983723 0.984954 0.501904
+X  0.0654244 0.737075 0.878097
+3
+10 10 10
+X  0.186679 0.982038 0.9042
+X  0.487124 0.175256 0.812529
+X  0.77277 0.488844 0.905941
+3
+10 10 10
+X  0.86656 0.897631 0.037185
+X  0.753552 0.110419 0.682129
+X  0.351563 0.446054 0.0841583
+3
+10 10 10
+X  0.759351 0.68475 0.788277
+X  0.249527 0.4511 0.558018
+X  0.933895 0.434822 0.542972
+3
+10 10 10
+X  0.435799 0.500247 0.280047
+X  0.313896 0.686925 0.262086
+X  0.218096 0.17405 0.437341
+3
+10 10 10
+X  0.0306254 0.94682 0.926185
+X  0.936566 0.81338 0.823816
+X  0.973751 0.566932 0.934235
+3
+10 10 10
+X  0.655881 0.918494 0.380289
+X  0.740039 0.677845 0.0650395
+X  0.528316 0.927372 0.516139
+3
+10 10 10
+X  0.0863347 0.861267 0.950961
+X  0.629307 0.297067 0.451208
+X  0.909354 0.610963 0.138133
+3
+10 10 10
+X  0.17144 0.829059 0.312183
+X  0.608781 0.859685 0.259002
+X  0.534966 0.796251 0.0723815
+3
+10 10 10
+X  0.358782 0.770003 0.639313
+X  0.293017 0.425883 0.557807
+X  0.673306 0.165922 0.235652
+3
+10 10 10
+X  0.738345 0.694238 0.163024
+X  0.254484 0.780573 0.0242916
+X  0.205445 0.40988 0.321358
+3
+10 10 10
+X  0.656653 0.319234 0.932321
+X  0.794786 0.490673 0.76138
+X  0.106969 0.0994544 0.621065
+3
+10 10 10
+X  0.365971 0.63442 0.417316
+X  0.438352 0.993202 0.187319
+X  0.0776651 0.286219 0.613202
+3
+10 10 10
+X  0.635472 0.959525 0.779124
+X  0.871125 0.69787 0.473362
+X  0.0341488 0.952354 0.253935
+3
+10 10 10
+X  0.0584404 0.1578 0.663814
+X  0.379799 0.814453 0.983048
+X  0.31212 0.609239 0.473722
+3
+10 10 10
+X  0.0735002 0.716208 0.573176
+X  0.694565 0.0821781 0.207597
+X  0.111881 0.52053 0.200799
+3
+10 10 10
+X  0.2992 0.598195 0.487018
+X  0.912402 0.233668 0.446542
+X  0.691525 0.104792 0.144412
+3
+10 10 10
+X  0.164887 0.138941 0.0967668
+X  0.418822 0.197382 0.254567
+X  0.0826362 0.57718 0.0690197
+3
+10 10 10
+X  0.0656846 0.8893 0.678259
+X  0.539406 0.9628 0.394466
+X  0.112583 0.657366 0.476645
+3
+10 10 10
+X  0.320179 0.769247 0.997175
+X  0.520978 0.0684469 0.59537
+X  0.00799569 0.980849 0.829038
+3
+10 10 10
+X  0.454538 0.672374 0.93383
+X  0.59895 0.837261 0.0727716
+X  0.695717 0.256083 0.270153
+3
+10 10 10
+X  0.950284 0.338719 0.847334
+X  0.0193035 0.404403 0.736634
+X  0.697562 0.94381 0.699434
+3
+10 10 10
+X  0.0920286 0.0563925 0.3568
+X  0.568673 0.376572 0.126047
+X  0.565848 0.89755 0.194494
+3
+10 10 10
+X  0.161218 0.905546 0.175342
+X  0.990256 0.360084 0.847716
+X  0.924086 0.959034 0.684977
+3
+10 10 10
+X  0.996858 0.654751 0.94106
+X  0.267011 0.605035 0.279778
+X  0.114345 0.624338 0.684182
+3
+10 10 10
+X  0.850978 0.321901 0.627992
+X  0.550413 0.413929 0.684384
+X  0.907212 0.982602 0.0609558
+3
+10 10 10
+X  0.0332592 0.54845 0.958506
+X  0.227753 0.709668 0.864051
+X  0.403095 0.699924 0.224135
+3
+10 10 10
+X  0.250811 0.62401 0.183169
+X  0.935788 0.620868 0.83792
+X  0.876848 0.887879 0.442955
+3
+10 10 10
+X  0.156626 0.00222359 0.0672935
+X  0.840808 0.853202 0.389194
+X  0.468799 0.403615 0.803123
+3
+10 10 10
+X  0.153183 0.310827 0.785726
+X  0.214139 0.344086 0.334176
+X  0.172645 0.571839 0.0438439
+3
+10 10 10
+X  0.0366962 0.974934 0.743768
+X  0.260831 0.225746 0.367778
+X  0.444 0.161534 0.988646
+3
+10 10 10
+X  0.28192 0.0383814 0.876525
+X  0.724876 0.195007 0.878748
+X  0.792169 0.0358152 0.73195
+3
+10 10 10
+X  0.181363 0.504614 0.135565
+X  0.984486 0.657798 0.446392
+X  0.770212 0.871937 0.790478
+3
+10 10 10
+X  0.104388 0.0445814 0.362317
+X  0.148232 0.0812776 0.337251
+X  0.891999 0.342109 0.562997
+3
+10 10 10
+X  0.259777 0.786109 0.724531
+X  0.248423 0.0680296 0.762912
+X  0.124948 0.792905 0.95792
+3
+10 10 10
+X  0.00369629 0.585074 0.993735
+X  0.735647 0.766437 0.498349
+X  0.871212 0.750923 0.156147
+3
+10 10 10
+X  0.317604 0.521135 0.0280833
+X  0.108082 0.625523 0.0726647
+X  0.470399 0.773755 0.153942
+3
+10 10 10
+X  0.80765 0.665754 0.496051
+X  0.370647 0.925532 0.28216
+X  0.095178 0.173955 0.35019
+3
+10 10 10
+X  0.85809 0.298903 0.143095
+X  0.81601 0.302599 0.728169
+X  0.809744 0.0382457 0.494606
+3
+10 10 10
+X  0.308093 0.909457 0.24553
+X  0.46424 0.227061 0.766665
+X  0.492323 0.335143 0.392188
+3
+10 10 10
+X  0.564988 0.805541 0.165943
+X  0.71893 0.613192 0.831697
+X  0.214982 0.983839 0.757229
+3
+10 10 10
+X  0.497142 0.0790171 0.931183
+X  0.847332 0.937107 0.230086
+X  0.990427 0.753117 0.532685
+3
+10 10 10
+X  0.718596 0.562861 0.570931
+X  0.213202 0.870954 0.480388
+X  0.458732 0.335194 0.707449
+3
+10 10 10
+X  0.225397 0.827517 0.0425917
+X  0.617585 0.392505 0.848133
+X  0.783528 0.111436 0.461325
+3
+10 10 10
+X  0.615225 0.326417 0.445164
+X  0.372454 0.823559 0.524181
+X  0.303637 0.670891 0.461288
+3
+10 10 10
+X  0.533723 0.661318 0.214405
+X  0.0664086 0.379914 0.777266
+X  0.63734 0.593116 0.64822
+3
+10 10 10
+X  0.117728 0.0518483 0.983414
+X  0.825177 0.277245 0.810932
+X  0.867769 0.894831 0.203437
+3
+10 10 10
+X  0.715902 0.678359 0.314873
+X  0.177227 0.293584 0.64129
+X  0.622391 0.666037 0.46485
+3
+10 10 10
+X  0.146572 0.969675 0.135741
+X  0.60786 0.503398 0.797059
+X  0.822265 0.569807 0.176973
+3
+10 10 10
+X  0.599531 0.207146 0.770089
+X  0.247751 0.324874 0.821938
+X  0.231166 0.150051 0.099183
+3
+10 10 10
+X  0.0420973 0.0178198 0.994014
+X  0.245534 0.733722 0.672372
+X  0.560407 0.910948 0.965956
+3
+10 10 10
+X  0.201698 0.533339 0.631993
+X  0.666547 0.679911 0.601668
+X  0.802288 0.287771 0.105066
+3
+10 10 10
+X  0.599347 0.110036 0.674873
+X  0.77632 0.709567 0.882019
+X  0.546409 0.957318 0.206893
+3
+10 10 10
+X  0.368347 0.188484 0.356944
+X  0.46753 0.230581 0.374764
+X  0.461543 0.476116 0.108485
+3
+10 10 10
+X  0.133915 0.0365229 0.0194337
+X  0.0998714 0.238221 0.552773
+X  0.731865 0.904768 0.232684
+3
+10 10 10
+X  0.333533 0.707056 0.520455
+X  0.438599 0.306403 0.630491
+X  0.113471 0.0827224 0.340058
+3
+10 10 10
+X  0.99549 0.629132 0.297376
+X  0.202383 0.997478 0.48586
+X  0.559327 0.465008 0.716441
+3
+10 10 10
+X  0.934091 0.926551 0.192557
+X  0.042576 0.0604668 0.229079
+X  0.0620097 0.160338 0.4673
+3
+10 10 10
+X  0.614782 0.892203 0.372068
+X  0.847466 0.225736 0.0791234
+X  0.367921 0.664335 0.385526
+3
+10 10 10
+X  0.998412 0.777806 0.468248
+X  0.33847 0.773296 0.09738
+X  0.635846 0.975679 0.0948584
+3
+10 10 10
+X  0.121706 0.535006 0.559866
+X  0.838147 0.469097 0.486418
+X  0.0307031 0.511673 0.546885
+3
+10 10 10
+X  0.259782 0.573683 0.707223
+X  0.727082 0.188465 0.599426
+X  0.0991501 0.0359314 0.825162
+3
+10 10 10
+X  0.178274 0.403852 0.489496
+X  0.5638 0.402264 0.267302
+X  0.032048 0.740733 0.0405986
+3
+10 10 10
+X  0.129428 0.376579 0.016278
+X  0.224286 0.498285 0.551284
+X  0.784153 0.336431 0.0203813
+3
+10 10 10
+X  0.270571 0.367134 0.532054
+X  0.817455 0.626917 0.105737
+X  0.524678 0.353999 0.294202
+3
+10 10 10
+X  0.124104 0.453149 0.330134
+X  0.949265 0.631423 0.733986
+X  0.438761 0.195222 0.13625
+3
+10 10 10
+X  0.706064 0.22727 0.876984
+X  0.746662 0.356698 0.253563
+X  0.76294 0.580985 0.751847
+3
+10 10 10
+X  0.314225 0.365138 0.0882787
+X  0.334606 0.635708 0.455413
+X  0.86666 0.453163 0.08233
+3
+10 10 10
+X  0.972397 0.977841 0.436329
+X  0.2666 0.101945 0.889479
+X  0.596733 0.0512101 0.520902
+3
+10 10 10
+X  0.330719 0.489971 0.716124
+X  0.466969 0.196035 0.943395
+X  0.343953 0.942697 0.300093
+3
+10 10 10
+X  0.597516 0.705638 0.881078
+X  0.349363 0.019862 0.246216
+X  0.437642 0.354468 0.881924
+3
+10 10 10
+X  0.893055 0.221128 0.335087
+X  0.975385 0.193525 0.312929
+X  0.411714 0.460125 0.414874
+3
+10 10 10
+X  0.301193 0.0568581 0.466084
+X  0.822095 0.387577 0.956055
+X  0.538219 0.854547 0.15209
+3
+10 10 10
+X  0.481613 0.1985 0.0947876
+X  0.781706 0.796015 0.800425
+X  0.662784 0.145378 0.820287
+3
+10 10 10
+X  0.909 0.58302 0.174755
+X  0.790924 0.476075 0.395883
+X  0.126011 0.451459 0.589408
+3
+10 10 10
+X  0.43894 0.863174 0.049533
+X  0.853813 0.164367 0.106391
+X  0.319897 0.986461 0.493969
+3
+10 10 10
+X  0.275952 0.52468 0.348515
+X  0.428043 0.00629338 0.547015
+X  0.52283 0.788 0.34303
+3
+10 10 10
+X  0.323255 0.450784 0.488408
+X  0.143543 0.359784 0.0714281
+X  0.318298 0.150708 0.547503
+3
+10 10 10
+X  0.714181 0.276719 0.998962
+X  0.303589 0.715658 0.862136
+X  0.353122 0.569472 0.0265022
+3
+10 10 10
+X  0.459513 0.889369 0.0129633
+X  0.953481 0.165321 0.537643
+X  0.301997 0.593364 0.543937
+3
+10 10 10
+X  0.849012 0.116194 0.331937
+X  0.192042 0.439449 0.782721
+X  0.68045 0.582992 0.142505
+3
+10 10 10
+X  0.751878 0.901289 0.293212
+X  0.299381 0.61547 0.569931
+X  0.298343 0.919059 0.285589
+3
+10 10 10
+X  0.160479 0.272181 0.855061
+X  0.186981 0.731694 0.744429
+X  0.199944 0.685175 0.90975
+3
+10 10 10
+X  0.737588 0.987172 0.503114
+X  0.281524 0.836184 0.619308
+X  0.613461 0.0282257 0.0587572
+3
+10 10 10
+X  0.396182 0.708676 0.641749
+X  0.538686 0.460554 0.543038
+X  0.831899 0.759935 0.158508
+3
+10 10 10
+X  0.40183 0.0582786 0.0775673
+X  0.687419 0.218758 0.349748
+X  0.542479 0.405739 0.0814416
+3
+10 10 10
+X  0.286909 0.605683 0.766617
+X  0.196659 0.343271 0.753789
+X  0.699773 0.624795 0.589973
+3
+10 10 10
+X  0.319081 0.238256 0.618198
+X  0.377838 0.634438 0.326874
+X  0.0195871 0.173124 0.787428
+3
+10 10 10
+X  0.562626 0.00502245 0.547364
+X  0.721134 0.406852 0.605642
+X  0.798701 0.0942707 0.8244
+3
+10 10 10
+X  0.148449 0.63675 0.230139
+X  0.229891 0.923659 0.835822
+X  0.996508 0.120318 0.179092
+3
+10 10 10
+X  0.750297 0.820091 0.803887
+X  0.340269 0.139171 0.0421432
+X  0.958467 0.517009 0.676581
+3
+10 10 10
+X  0.285341 0.536597 0.849705
+X  0.0727699 0.0992222 0.854727
+X  0.620134 0.820356 0.261579
+3
+10 10 10
+X  0.225776 0.619058 0.35585
+X  0.0501762 0.767507 0.9926
+X  0.280315 0.997398 0.916258
+3
+10 10 10
+X  0.116136 0.993906 0.0365761
+X  0.295228 0.744202 0.856667
+X  0.0991157 0.0844715 0.995838
+3
+10 10 10
+X  0.141259 0.0429388 0.512847
+X  0.81784 0.32828 0.0494439
+X  0.667544 0.40105 0.148666
+3
+10 10 10
+X  0.522272 0.0211838 0.969022
+X  0.783851 0.24696 0.58808
+X  0.1397 0.297136 0.355587
+3
+10 10 10
+X  0.1323 0.577451 0.352985
+X  0.0485586 0.693587 0.346891
+X  0.0851347 0.988816 0.0910929
+3
+10 10 10
+X  0.941801 0.0879312 0.175564
+X  0.937639 0.22919 0.218503
+X  0.450487 0.0470298 0.546783
+3
+10 10 10
+X  0.49993 0.714574 0.947833
+X  0.648596 0.236846 0.969017
+X  0.617619 0.0206964 0.215977
+3
+10 10 10
+X  0.205699 0.160397 0.513113
+X  0.561286 0.292697 0.0905641
+X  0.91427 0.341256 0.784151
+3
+10 10 10
+X  0.261161 0.42639 0.772967
+X  0.352254 0.368191 0.860898
+X  0.527818 0.305831 0.0900882
+3
+10 10 10
+X  0.746321 0.756317 0.137118
+X  0.293104 0.256248 0.851692
+X  0.240938 0.904844 0.088538
+3
+10 10 10
+X  0.209955 0.522463 0.109234
+X  0.425932 0.728161 0.269631
+X  0.939045 0.289447 0.562328
+3
+10 10 10
+X  0.0296093 0.203717 0.903584
+X  0.813761 0.464878 0.329974
+X  0.586727 0.817132 0.698165
+3
+10 10 10
+X  0.447625 0.34495 0.00399594
+X  0.537714 0.0912713 0.760313
+X  0.674832 0.384376 0.0165607
+3
+10 10 10
+X  0.526524 0.625314 0.921405
+X  0.615062 0.835268 0.443867
+X  0.724296 0.2612 0.172029
+3
+10 10 10
+X  0.993927 0.200246 0.461476
+X  0.556255 0.229855 0.665193
+X  0.459839 0.0436154 0.130072
+3
+10 10 10
+X  0.789813 0.630343 0.947204
+X  0.487978 0.0779682 0.292154
+X  0.491974 0.615682 0.383425
+3
+10 10 10
+X  0.252287 0.290513 0.767801
+X  0.268848 0.817037 0.393114
+X  0.190252 0.432099 0.228383
+3
+10 10 10
+X  0.63412 0.156395 0.489583
+X  0.806149 0.150322 0.689829
+X  0.267625 0.706577 0.919683
+3
+10 10 10
+X  0.932818 0.166416 0.963299
+X  0.0628894 0.956229 0.593642
+X  0.0100931 0.444206 0.67161
+3
+10 10 10
+X  0.302247 0.93618 0.287292
+X  0.685672 0.188467 0.577805
+X  0.453473 0.457315 0.394842
+3
+10 10 10
+X  0.846587 0.647567 0.826941
+X  0.07497 0.281687 0.983336
+X  0.564553 0.0878351 0.133659
+3
+10 10 10
+X  0.254382 0.35546 0.840236
+X  0.174065 0.288277 0.00665221
+X  0.137364 0.351167 0.962881
+3
+10 10 10
+X  0.731006 0.36126 0.407087
+X  0.402615 0.663507 0.343268
+X  0.689907 0.349179 0.531735
+3
+10 10 10
+X  0.267712 0.802652 0.989049
+X  0.662554 0.649239 0.636616
+X  0.489495 0.724209 0.918303
+3
+10 10 10
+X  0.472832 0.288762 0.00613772
+X  0.60649 0.543144 0.361597
+X  0.446726 0.717209 0.649875
+3
+10 10 10
+X  0.453378 0.854573 0.00104169
+X  0.416259 0.585579 0.362302
+X  0.823347 0.988194 0.0258086
+3
+10 10 10
+X  0.166614 0.678101 0.374988
+X  0.698349 0.945813 0.177639
+X  0.687398 0.608368 0.826878
+3
+10 10 10
+X  0.324014 0.0978629 0.551088
+X  0.242317 0.570695 0.83985
+X  0.248455 0.177185 0.382994
+3
+10 10 10
+X  0.610052 0.623911 0.100203
+X  0.259927 0.0772893 0.954776
+X  0.260968 0.493549 0.540355
+3
+10 10 10
+X  0.62327 0.316895 0.528549
+X  0.649079 0.48351 0.20665
+X  0.0240662 0.181859 0.152464
+3
+10 10 10
+X  0.201706 0.869257 0.760831
+X  0.0285841 0.193271 0.858694
+X  0.579672 0.435588 0.429389
+3
+10 10 10
+X  0.419521 0.684042 0.606573
+X  0.802515 0.294094 0.230484
+X  0.902718 0.554021 0.307774
+3
+10 10 10
+X  0.857493 0.814989 0.801322
+X  0.397848 0.438259 0.118217
+X  0.926397 0.0873379 0.601727
+3
+10 10 10
+X  0.133047 0.111404 0.783586
+X  0.285511 0.31311 0.652842
+X  0.0463421 0.341694 0.846113
+3
+10 10 10
+X  0.905036 0.921365 0.281701
+X  0.334425 0.340887 0.965743
+X  0.940998 0.143402 0.259837
+3
+10 10 10
+X  0.171482 0.0461191 0.813858
+X  0.479256 0.903612 0.628847
+X  0.280578 0.30146 0.0671061
+3
+10 10 10
+X  0.398795 0.227857 0.154444
+X  0.000522443 0.360904 0.265848
+X  0.784108 0.646415 0.578958
+3
+10 10 10
+X  0.43695 0.692757 0.920652
+X  0.283063 0.597793 0.842017
+X  0.564764 0.932218 0.182904
+3
+10 10 10
+X  0.530507 0.873216 0.326305
+X  0.790344 0.0446988 0.372424
+X  0.604202 0.523955 0.276037
+3
+10 10 10
+X  0.233048 0.804533 0.577497
+X  0.300155 0.203328 0.805354
+X  0.454599 0.203851 0.166258
+3
+10 10 10
+X  0.720447 0.987959 0.812673
+X  0.299405 0.424909 0.505431
+X  0.220056 0.707972 0.103224
+3
+10 10 10
+X  0.0620732 0.272736 0.0354423
+X  0.244977 0.803242 0.908659
+X  0.571282 0.593586 0.953358
+3
+10 10 10
+X  0.943706 0.197788 0.477312
+X  0.219743 0.430836 0.281845
+X  0.79724 0.730991 0.485173
+3
+10 10 10
+X  0.602594 0.185589 0.689024
+X  0.768852 0.906036 0.676982
+X  0.581526 0.205441 0.101891
+3
+10 10 10
+X  0.0869565 0.425497 0.809863
+X  0.190181 0.48757 0.0825982
+X  0.225623 0.732547 0.885841
+3
+10 10 10
+X  0.134282 0.303829 0.479427
+X  0.0876391 0.247535 0.677214
+X  0.564951 0.467278 0.10805
+3
+10 10 10
+X  0.846796 0.264518 0.839041
+X  0.331969 0.867112 0.0246303
+X  0.0209929 0.635965 0.930666
+3
+10 10 10
+X  0.697975 0.21749 0.136107
+X  0.799866 0.304447 0.561603
+X  0.609728 0.494627 0.0491733
+3
+10 10 10
+X  0.692326 0.72025 0.78172
+X  0.578167 0.854532 0.0855488
+X  0.0575937 0.942171 0.333084
+3
+10 10 10
+X  0.734808 0.507122 0.800362
+X  0.842858 0.353919 0.0648805
+X  0.681899 0.685888 0.931993
+3
+10 10 10
+X  0.70653 0.706881 0.567957
+X  0.637196 0.404856 0.785448
+X  0.773303 0.204722 0.0898946
+3
+10 10 10
+X  0.334906 0.81445 0.584522
+X  0.38408 0.506776 0.304772
+X  0.1658 0.0849434 0.159304
+3
+10 10 10
+X  0.251348 0.142537 0.101475
+X  0.584432 0.877345 0.608598
+X  0.384795 0.720204 0.962517
+3
+10 10 10
+X  0.449675 0.402103 0.648405
+X  0.381668 0.108633 0.355285
+X  0.949625 0.745829 0.760141
+3
+10 10 10
+X  0.735073 0.519132 0.964863
+X  0.824967 0.854038 0.779313
+X  0.40949 0.238118 0.286089
+3
+10 10 10
+X  0.714262 0.403917 0.371033
+X  0.873566 0.655266 0.51357
+X  0.975042 0.239698 0.390915
+3
+10 10 10
+X  0.58364 0.624493 0.111119
+X  0.546156 0.0741684 0.513222
+X  0.194561 0.455836 0.621855
+3
+10 10 10
+X  0.549846 0.405461 0.367684
+X  0.309987 0.140534 0.886816
+X  0.27485 0.965502 0.740854
+3
+10 10 10
+X  0.054163 0.374991 0.978972
+X  0.340252 0.0892532 0.382889
+X  0.711285 0.96282 0.0381551
+3
+10 10 10
+X  0.224854 0.937861 0.277854
+X  0.615769 0.521501 0.902347
+X  0.726888 0.0676572 0.976515
+3
+10 10 10
+X  0.24011 0.262218 0.432352
+X  0.861965 0.812064 0.837813
+X  0.229649 0.122052 0.978347
+3
+10 10 10
+X  0.116464 0.396902 0.943849
+X  0.857318 0.451065 0.31884
+X  0.83629 0.791317 0.408093
+3
+10 10 10
+X  0.219179 0.502602 0.370913
+X  0.257334 0.727456 0.308774
+X  0.535188 0.343226 0.830275
+3
+10 10 10
+X  0.437534 0.0701137 0.897932
+X  0.41405 0.310224 0.16015
+X  0.846401 0.172189 0.972215
+3
+10 10 10
+X  0.684214 0.401837 0.0942665
+X  0.662561 0.518301 0.491168
+X  0.60641 0.37562 0.942233
+3
+10 10 10
+X  0.925251 0.211909 0.733551
+X  0.333344 0.431088 0.236152
+X  0.704257 0.688422 0.963609
+3
+10 10 10
+X  0.0130312 0.22361 0.306834
+X  0.843306 0.661144 0.376948
+X  0.741239 0.0751938 0.687172
+3
+10 10 10
+X  0.901389 0.921595 0.85936
+X  0.873604 0.605809 0.261198
+X  0.967871 0.26837 0.779499
+3
+10 10 10
+X  0.459039 0.874781 0.155119
+X  0.401273 0.800031 0.367028
+X  0.134823 0.133375 0.798116
+3
+10 10 10
+X  0.370976 0.837632 0.486538
+X  0.334584 0.850663 0.710148
+X  0.641419 0.69397 0.371292
+3
+10 10 10
+X  0.0183669 0.435209 0.446486
+X  0.705539 0.336598 0.368081
+X  0.564899 0.210202 0.97389
+3
+10 10 10
+X  0.826097 0.178073 0.242261
+X  0.605596 0.637112 0.117041
+X  0.760714 0.0383841 0.917072
+3
+10 10 10
+X  0.127742 0.173207 0.0504474
+X  0.925858 0.544183 0.88808
+X  0.412397 0.878767 0.738743
+3
+10 10 10
+X  0.122545 0.520186 0.432712
+X  0.493837 0.538553 0.867921
+X  0.940324 0.244092 0.204519
+3
+10 10 10
+X  0.308405 0.808991 0.414721
+X  0.282295 0.635088 0.592793
+X  0.524556 0.240683 0.229905
+3
+10 10 10
+X  0.641597 0.00139733 0.268289
+X  0.558669 0.129139 0.441496
+X  0.609117 0.0549977 0.985679
+3
+10 10 10
+X  0.497196 0.467394 0.864447
+X  0.235939 0.589939 0.384633
+X  0.668651 0.0837769 0.923186
+3
+10 10 10
+X  0.536572 0.0241007 0.167278
+X  0.741091 0.332506 0.976269
+X  0.155812 0.614801 0.611356
+3
+10 10 10
+X  0.748606 0.139357 0.852039
+X  0.978511 0.780954 0.853437
+X  0.2468 0.339623 0.982576
+3
+10 10 10
+X  0.688296 0.94874 0.037574
+X  0.673976 0.445936 0.504968
+X  0.538422 0.681875 0.0949078
+3
+10 10 10
+X  0.923055 0.350527 0.178685
+X  0.846241 0.887099 0.202785
+X  0.0135191 0.62819 0.535291
+3
+10 10 10
+X  0.989788 0.784003 0.150092
+X  0.601144 0.532608 0.289449
+X  0.453184 0.511119 0.0704025
+3
+10 10 10
+X  0.306621 0.757918 0.410026
+X  0.289197 0.446215 0.358766
+X  0.326771 0.12019 0.804702
+3
+10 10 10
+X  0.831739 0.658612 0.486577
+X  0.926647 0.581668 0.837104
+X  0.105332 0.427909 0.724203
+3
+10 10 10
+X  0.308117 0.441428 0.352394
+X  0.843408 0.431216 0.136396
+X  0.9935 0.0323602 0.669004
+3
+10 10 10
+X  0.282949 0.485544 0.180123
+X  0.353351 0.792164 0.938041
+X  0.763377 0.0813613 0.384256
+3
+10 10 10
+X  0.122143 0.408132 0.504446
+X  0.926844 0.239871 0.163059
+X  0.413422 0.166518 0.744726
+3
+10 10 10
+X  0.250525 0.27185 0.172635
+X  0.974728 0.579967 0.614064
+X  0.327122 0.423375 0.0452796
+3
+10 10 10
+X  0.463518 0.416875 0.0776398
+X  0.132522 0.699824 0.563184
+X  0.312645 0.053175 0.355348
+3
+10 10 10
+X  0.250687 0.816552 0.43671
+X  0.634943 0.938695 0.844842
+X  0.139389 0.865539 0.0847128
+3
+10 10 10
+X  0.302448 0.278961 0.251231
+X  0.0471742 0.529486 0.523081
+X  0.21981 0.504214 0.103048
+3
+10 10 10
+X  0.833873 0.831336 0.526423
+X  0.879153 0.294854 0.943298
+X  0.956793 0.427377 0.643121
+3
+10 10 10
+X  0.519976 0.740022 0.696296
+X  0.875325 0.990709 0.512848
+X  0.312034 0.625652 0.451543
+3
+10 10 10
+X  0.156876 0.765041 0.317082
+X  0.241589 0.0674892 0.596042
+X  0.49282 0.114663 0.125528
+3
+10 10 10
+X  0.0159006 0.334473 0.629742
+X  0.118948 0.168346 0.461079
+X  0.645371 0.0474988 0.755933
+3
+10 10 10
+X  0.588669 0.00429139 0.18331
+X  0.23179 0.524268 0.923332
+X  0.928086 0.399592 0.914041
+3
+10 10 10
+X  0.440934 0.711627 0.539694
+X  0.892477 0.868503 0.304735
+X  0.209559 0.110091 0.372224
+3
+10 10 10
+X  0.805601 0.602911 0.486887
+X  0.93113 0.618812 0.82136
+X  0.560872 0.73776 0.989706
+3
+10 10 10
+X  0.0219507 0.383131 0.0372052
+X  0.777884 0.971799 0.0414966
+X  0.961194 0.203589 0.565764
+3
+10 10 10
+X  0.884526 0.131675 0.965357
+X  0.798567 0.57261 0.676984
+X  0.338261 0.465087 0.545486
+3
+10 10 10
+X  0.642996 0.674646 0.655577
+X  0.0152197 0.480247 0.258488
+X  0.502107 0.411376 0.8773
+3
+10 10 10
+X  0.323467 0.972249 0.61506
+X  0.313174 0.994199 0.998191
+X  0.350379 0.772083 0.96999
+3
+10 10 10
+X  0.391876 0.733277 0.173579
+X  0.95764 0.617802 0.305254
+X  0.922997 0.416369 0.877864
+3
+10 10 10
+X  0.599981 0.75463 0.342951
+X  0.145467 0.397625 0.0175963
+X  0.801044 0.412845 0.497843
+3
+10 10 10
+X  0.0595323 0.914952 0.90922
+X  0.936832 0.23842 0.881468
+X  0.551892 0.551594 0.875668
+3
+10 10 10
+X  0.550082 0.901973 0.647751
+X  0.520072 0.293849 0.381027
+X  0.693651 0.251489 0.99883
+3
+10 10 10
+X  0.998906 0.174486 0.415199
+X  0.87677 0.774466 0.169829
+X  0.21972 0.919933 0.567454
+3
+10 10 10
+X  0.237317 0.720977 0.9803
+X  0.73516 0.780509 0.895252
+X  0.64438 0.717341 0.133672
+3
+10 10 10
+X  0.525848 0.269233 0.685265
+X  0.401516 0.819316 0.587238
+X  0.0492661 0.339388 0.881087
+3
+10 10 10
+X  0.430293 0.0330394 0.132576
+X  0.429123 0.0319453 0.307061
+X  0.844322 0.908715 0.0815278
+3
+10 10 10
+X  0.014151 0.128435 0.00146079
+X  0.581605 0.365752 0.722438
+X  0.561905 0.100912 0.502947
+3
+10 10 10
+X  0.457157 0.745292 0.220288
+X  0.590828 0.27114 0.489522
+X  0.276094 0.672655 0.308837
+3
+10 10 10
+X  0.863332 0.721922 0.648225
+X  0.744419 0.152215 0.681264
+X  0.876994 0.581338 0.71321
+3
+10 10 10
+X  0.184055 0.42566 0.621925
+X  0.265583 0.439811 0.75036
+X  0.267044 0.0214164 0.116112
+3
+10 10 10
+X  0.989482 0.583321 0.217025
+X  0.492429 0.0404783 0.962317
+X  0.712717 0.631307 0.233456
+3
+10 10 10
+X  0.202239 0.907401 0.906112
+X  0.511076 0.770732 0.628034
+X  0.159301 0.515151 0.780249
+3
+10 10 10
+X  0.840565 0.392145 0.361586
+X  0.553775 0.576201 0.787246
+X  0.1757 0.841784 0.227057
+3
+10 10 10
+X  0.92606 0.108828 0.248474
+X  0.0421726 0.0983097 0.831795
+X  0.259197 0.590739 0.872274
+3
+10 10 10
+X  0.221514 0.303456 0.503581
+X  0.45497 0.505694 0.410981
+X  0.361082 0.0167703 0.181714
+3
+10 10 10
+X  0.989116 0.176071 0.696865
+X  0.769364 0.0166367 0.0890097
+X  0.130951 0.570412 0.66521
+3
+10 10 10
+X  0.918197 0.746112 0.506994
+X  0.145255 0.672172 0.615822
+X  0.393728 0.714344 0.714132
+3
+10 10 10
+X  0.225524 0.973542 0.30487
+X  0.0977975 0.195055 0.608326
+X  0.601378 0.650026 0.11402
+3
+10 10 10
+X  0.0123591 0.0111076 0.130791
+X  0.194073 0.000223212 0.306862
+X  0.890937 0.769587 0.323499
+3
+10 10 10
+X  0.979947 0.900538 0.893911
+X  0.645157 0.818735 0.640022
+X  0.152152 0.96399 0.312194
+3
+10 10 10
+X  0.767974 0.357718 0.0265387
+X  0.482106 0.583242 8.03829e-05
+X  0.786976 0.681039 0.195136
+3
+10 10 10
+X  0.395302 0.282417 0.845161
+X  0.509322 0.294776 0.856269
+X  0.640113 0.488849 0.856492
+3
+10 10 10
+X  0.946975 0.379786 0.626079
+X  0.270474 0.359733 0.526617
+X  0.164385 0.0048907 0.345352
+3
+10 10 10
+X  0.804407 0.157042 0.309342
+X  0.116601 0.925016 0.66706
+X  0.14314 0.407122 0.250302
+3
+10 10 10
+X  0.143221 0.194097 0.931341
+X  0.338356 0.589399 0.213759
+X  0.183518 0.0987217 0.508535
+3
+10 10 10
+X  0.0397864 0.738835 0.997384
+X  0.896278 0.68581 0.37717
+X  0.522358 0.956284 0.736904
+3
+10 10 10
+X  0.0489752 0.120669 0.741794
+X  0.394328 0.925076 0.898837
+X  0.70367 0.0416778 0.823853
+3
+10 10 10
+X  0.37073 0.184818 0.230974
+X  0.621032 0.328038 0.425072
+X  0.552373 0.666395 0.0144709
+3
+10 10 10
+X  0.766132 0.849912 0.113193
+X  0.274667 0.889699 0.852028
+X  0.272051 0.785977 0.537838
+3
+10 10 10
+X  0.649221 0.308335 0.494122
+X  0.386125 0.35731 0.614792
+X  0.127919 0.751638 0.539868
+3
+10 10 10
+X  0.026756 0.455307 0.581546
+X  0.850609 0.826037 0.766364
+X  0.0815829 0.447069 0.0944023
+3
+10 10 10
+X  0.506655 0.999442 0.760797
+X  0.521125 0.765574 0.610709
+X  0.634318 0.0402403 0.500408
+3
+10 10 10
+X  0.486346 0.312291 0.286385
+X  0.0241837 0.961512 0.59472
+X  0.518306 0.347637 0.95203
+3
+10 10 10
+X  0.133098 0.475556 0.703667
+X  0.672966 0.502312 0.158975
+X  0.254512 0.352921 0.985012
+3
+10 10 10
+X  0.0208756 0.434504 0.432081
+X  0.115278 0.941158 0.431523
+X  0.876075 0.462284 0.197096
+3
+10 10 10
+X  0.486784 0.0966018 0.237336
+X  0.987192 0.582948 0.549627
+X  0.273577 0.607131 0.51114
+3
+10 10 10
+X  0.868297 0.125437 0.858777
+X  0.820326 0.258535 0.334333
+X  0.523994 0.931501 0.836645
+3
+10 10 10
+X  0.682968 0.186013 0.189566
+X  0.66798 0.206888 0.62407
+X  0.100061 0.322166 0.565228
+3
+10 10 10
+X  0.531583 0.198241 0.0275116
+X  0.728679 0.685025 0.124113
+X  0.966016 0.672217 0.707061
+3
+10 10 10
+X  0.515643 0.945794 0.314192
+X  0.0267825 0.81409 0.439629
+X  0.885559 0.634416 0.698164
+3
+10 10 10
+X  0.219892 0.15841 0.629665
+X  0.0565368 0.841378 0.815678
+X  0.246103 0.509358 0.0225663
+3
+10 10 10
+X  0.870172 0.609419 0.344732
+X  0.4354 0.141002 0.542973
+X  0.462912 0.869681 0.227998
+3
+10 10 10
+X  0.587025 0.835697 0.900215
+X  0.294086 0.35134 0.846009
+X  0.608278 0.378122 0.660099
+3
+10 10 10
+X  0.0479073 0.263682 0.294515
+X  0.746072 0.483573 0.452926
+X  0.375737 0.54011 0.294304
+3
+10 10 10
+X  0.191415 0.786213 0.803662
+X  0.213982 0.656385 0.413081
+X  0.558714 0.0917848 0.554083
+3
+10 10 10
+X  0.101687 0.554696 0.423765
+X  0.329685 0.141721 0.259462
+X  0.2299 0.435807 0.610801
+3
+10 10 10
+X  0.0759093 0.0440851 0.988924
+X  0.736008 0.0919923 0.252606
+X  0.0305237 0.838064 0.736179
+3
+10 10 10
+X  0.483449 0.213801 0.276289
+X  0.777753 0.405217 0.0625016
+X  0.581415 0.619198 0.718886
+3
+10 10 10
+X  0.994496 0.177912 0.810671
+X  0.54858 0.279599 0.365368
+X  0.972344 0.609284 0.507089
+3
+10 10 10
+X  0.231806 0.839185 0.942896
+X  0.842607 0.915094 0.986981
+X  0.831531 0.651102 0.0789736
+3
+10 10 10
+X  0.0841368 0.681626 0.917038
+X  0.820316 0.165075 0.130839
+X  0.0966047 0.942828 0.536055
+3
+10 10 10
+X  0.159106 0.524244 0.155253
+X  0.877993 0.51874 0.333165
+X  0.688664 0.06732 0.612764
+3
+10 10 10
+X  0.0540318 0.0396644 0.222049
+X  0.561121 0.27147 0.0612336
+X  0.504017 0.114078 0.976328
+3
+10 10 10
+X  0.490998 0.945609 0.62743
+X  0.569972 0.0297458 0.309056
+X  0.487009 0.850061 0.474132
+3
+10 10 10
+X  0.617848 0.946666 0.41696
+X  0.153904 0.105772 0.941204
+X  0.309157 0.983765 0.459944
+3
+10 10 10
+X  0.642323 0.672429 0.527264
+X  0.255087 0.726461 0.566928
+X  0.477136 0.287582 0.838399
+3
+10 10 10
+X  0.53837 0.791599 0.952476
+X  0.514697 0.282597 0.898085
+X  0.142127 0.852569 0.927831
+3
+10 10 10
+X  0.451184 0.339578 0.777892
+X  0.925315 0.957426 0.724559
+X  0.342275 0.11133 0.830331
+3
+10 10 10
+X  0.283479 0.420488 0.814096
+X  0.743423 0.0628103 0.486525
+X  0.270687 0.317897 0.212986
+3
+10 10 10
+X  0.837615 0.795033 0.500568
+X  0.676014 0.333403 0.292167
+X  0.62849 0.8481 0.574764
+3
+10 10 10
+X  0.526576 0.990228 0.427332
+X  0.454406 0.441411 0.76691
+X  0.232299 0.366727 0.724337
+3
+10 10 10
+X  0.956857 0.709002 0.835667
+X  0.787188 0.992481 0.256155
+X  0.601284 0.735904 0.318965
+3
+10 10 10
+X  0.0878097 0.00659137 0.636862
+X  0.300796 0.844207 0.431896
+X  0.801364 0.520221 0.765298
+3
+10 10 10
+X  0.0935307 0.148711 0.613399
+X  0.668294 0.675287 0.603627
+X  0.0956266 0.129693 0.045038
+3
+10 10 10
+X  0.862537 0.361992 0.411765
+X  0.586874 0.318849 0.120767
+X  0.422541 0.106038 0.113248
+3
+10 10 10
+X  0.678695 0.707322 0.849153
+X  0.99766 0.795132 0.855744
+X  0.634522 0.0959277 0.699951
+3
+10 10 10
+X  0.0664177 0.897292 0.220172
+X  0.831716 0.990822 0.368883
+X  0.445115 0.659117 0.0441693
+3
+10 10 10
+X  0.0487414 0.754743 0.173862
+X  0.0937795 0.61728 0.535854
+X  0.505544 0.204154 0.854704
+3
+10 10 10
+X  0.626311 0.626694 0.960741
+X  0.73956 0.30539 0.668063
+X  0.588712 0.303049 0.463195
+3
+10 10 10
+X  0.444456 0.937572 0.559123
+X  0.144407 0.00398931 0.456414
+X  0.364578 0.835705 0.447237
+3
+10 10 10
+X  0.733461 0.28082 0.106354
+X  0.77763 0.329562 0.861097
+X  0.951493 0.423341 0.478377
+3
+10 10 10
+X  0.487347 0.928886 0.682531
+X  0.342051 0.555197 0.309226
+X  0.302792 0.294756 0.614615
+3
+10 10 10
+X  0.970855 0.883469 0.917665
+X  0.434051 0.327925 0.855236
+X  0.993173 0.472332 0.859225
+3
+10 10 10
+X  0.449588 0.83691 0.694931
+X  0.896824 0.570371 0.975751
+X  0.00317807 0.348002 0.305313
+3
+10 10 10
+X  0.864275 0.299494 0.728655
+X  0.342652 0.786841 0.65754
+X  0.0251834 0.128892 0.212737
+3
+10 10 10
+X  0.334409 0.431684 0.507493
+X  0.949024 0.40254 0.390962
+X  0.866688 0.83659 0.718887
+3
+10 10 10
+X  0.721925 0.829763 0.191218
+X  0.58115 0.279351 0.0281286
+X  0.276081 0.176175 0.5985
+3
+10 10 10
+X  0.251832 0.179354 0.946501
+X  0.557146 0.0436286 0.245996
+X  0.2858 0.386281 0.032837
+3
+10 10 10
+X  0.94334 0.411464 0.161729
+X  0.156077 0.745873 0.593413
+X  0.663571 0.694897 0.995953
+3
+10 10 10
+X  0.0545327 0.561585 0.832543
+X  0.77342 0.28351 0.662306
+X  0.964638 0.86466 0.941657
+3
+10 10 10
+X  0.992767 0.140741 0.117833
+X  0.591266 0.392574 0.297186
+X  0.537768 0.949719 0.340815
+3
+10 10 10
+X  0.783763 0.23552 0.727095
+X  0.8166 0.17886 0.13856
+X  0.97833 0.334937 0.884433
+3
+10 10 10
+X  0.571743 0.998508 0.57933
+X  0.567696 0.0530405 0.140915
+X  0.400239 0.82646 0.424425
+3
+10 10 10
+X  0.0625448 0.791098 0.289086
+X  0.00420194 0.783865 0.429827
+X  0.122035 0.375131 0.822401
+3
+10 10 10
+X  0.419221 0.912899 0.77212
+X  0.760035 0.696662 0.00764006
+X  0.487131 0.513263 0.1865
+3
+10 10 10
+X  0.62569 0.491592 0.521437
+X  0.510123 0.0633352 0.519945
+X  0.0894529 0.631031 0.572985
+3
+10 10 10
+X  0.230368 0.0312695 0.399446
+X  0.654794 0.0938142 0.190544
+X  0.943879 0.0980162 0.974408
+3
+10 10 10
+X  0.373706 0.220051 0.349539
+X  0.196107 0.639271 0.262438
+X  0.968228 0.399307 0.959101
+3
+10 10 10
+X  0.975868 0.886438 0.472363
+X  0.162368 0.512128 0.963956
+X  0.683805 0.0222512 0.027291
+3
+10 10 10
+X  0.20375 0.111704 0.658322
+X  0.776735 0.342072 0.689591
+X  0.176181 0.996866 0.783406
+3
+10 10 10
+X  0.366724 0.940745 0.881422
+X  0.341133 0.314451 0.101472
+X  0.690672 0.510559 0.740744
+3
+10 10 10
+X  0.95311 0.478786 0.140051
+X  0.912211 0.454654 0.0264881
+X  0.384574 0.617021 0.538616
+3
+10 10 10
+X  0.34853 0.300826 0.560867
+X  0.375821 0.504576 0.672571
+X  0.0341431 0.281311 0.0146438
+3
+10 10 10
+X  0.723734 0.457491 0.0115097
+X  0.50714 0.824216 0.952255
+X  0.388562 0.165348 0.266706
+3
+10 10 10
+X  0.490034 0.85602 0.777265
+X  0.230778 0.80913 0.256051
+X  0.370829 0.721341 0.710705
+3
+10 10 10
+X  0.397317 0.105916 0.327726
+X  0.935933 0.454446 0.628552
+X  0.4968 0.830267 0.133128
+3
+10 10 10
+X  0.169372 0.86441 0.414439
+X  0.184015 0.588145 0.871931
+X  0.195525 0.0952848 0.696146
+3
+10 10 10
+X  0.14778 0.483847 0.861494
+X  0.414486 0.973881 0.717514
+X  0.191751 0.204659 0.526645
+3
+10 10 10
+X  0.447802 0.575488 0.247986
+X  0.158507 0.972805 0.353902
+X  0.486233 0.908738 0.808348
+3
+10 10 10
+X  0.114786 0.405538 0.638615
+X  0.247914 0.57491 0.503025
+X  0.662353 0.758925 0.0911701
+3
+10 10 10
+X  0.534283 0.95445 0.186455
+X  0.23043 0.10223 0.670302
+X  0.091924 0.516717 0.644183
+3
+10 10 10
+X  0.809439 0.708468 0.848842
+X  0.336083 0.15627 0.42433
+X  0.58407 0.314777 0.397135
+3
+10 10 10
+X  0.937972 0.80101 0.305873
+X  0.74632 0.915795 0.711411
+X  0.384935 0.163709 0.28632
+3
+10 10 10
+X  0.88796 0.826062 0.0452454
+X  0.97913 0.360346 0.999696
+X  0.165585 0.590775 0.101926
+3
+10 10 10
+X  0.835887 0.682699 0.618643
+X  0.48007 0.492138 0.32711
+X  0.328912 0.828221 0.48338
+3
+10 10 10
+X  0.753242 0.412291 0.798157
+X  0.150377 0.350263 0.599167
+X  0.45625 0.0965826 0.514962
+3
+10 10 10
+X  0.16766 0.481518 0.678672
+X  0.453981 0.369478 0.504734
+X  0.499226 0.348608 0.86508
+3
+10 10 10
+X  0.498922 0.514194 0.455855
+X  0.600848 0.350081 0.138554
+X  0.219491 0.83015 0.630692
+3
+10 10 10
+X  0.546601 0.159062 0.458913
+X  0.0299815 0.912304 0.871205
+X  0.828139 0.0626813 0.221467
+3
+10 10 10
+X  0.427305 0.518931 0.31805
+X  0.942268 0.686591 0.799568
+X  0.62094 0.140572 0.169045
+3
+10 10 10
+X  0.125673 0.639798 0.517654
+X  0.990753 0.13872 0.0318471
+X  0.446608 0.739568 0.381928
+3
+10 10 10
+X  0.585162 0.959058 0.212078
+X  0.215854 0.50566 0.37114
+X  0.674768 0.535641 0.283445
+3
+10 10 10
+X  0.545972 0.36378 0.346126
+X  0.76744 0.791085 0.865057
+X  0.0854896 0.733353 0.551648
+3
+10 10 10
+X  0.885057 0.354292 0.69222
+X  0.0541025 0.479966 0.332018
+X  0.571756 0.470719 0.470738
+3
+10 10 10
+X  0.603603 0.917327 0.210306
+X  0.985531 0.502489 0.169365
+X  0.197609 0.718343 0.675024
+3
+10 10 10
+X  0.568749 0.393111 0.210665
+X  0.852194 0.939083 0.574445
+X  0.19832 0.706523 0.36553
+3
+10 10 10
+X  0.0633767 0.792012 0.0988831
+X  0.615025 0.677069 0.453176
+X  0.307245 0.731172 0.933141
+3
+10 10 10
+X  0.639264 0.302928 0.40386
+X  0.110002 0.906531 0.321187
+X  0.320308 0.892062 0.823676
+3
+10 10 10
+X  0.489673 0.0896708 0.542019
+X  0.164697 0.65842 0.93513
+X  0.375362 0.510614 0.874213
+3
+10 10 10
+X  0.949807 0.708934 0.580735
+X  0.315337 0.772311 0.372748
+X  0.414221 0.387336 0.049817
+3
+10 10 10
+X  0.867396 0.694581 0.780989
+X  0.800538 0.333844 0.0839169
+X  0.204398 0.443846 0.990448
+3
+10 10 10
+X  0.525585 0.764155 0.88251
+X  0.349261 0.253827 0.972181
+X  0.89128 0.418524 0.630601
+3
+10 10 10
+X  0.826409 0.793887 0.141215
+X  0.700622 0.743694 0.850149
+X  0.281357 0.0590315 0.622459
+3
+10 10 10
+X  0.654105 0.473252 0.00979468
+X  0.703922 0.340648 0.704375
+X  0.48491 0.141186 0.03822
+3
+10 10 10
+X  0.568827 0.345583 0.482066
+X  0.559275 0.871168 0.246221
+X  0.441785 0.220429 0.500048
+3
+10 10 10
+X  0.413966 0.111709 0.918573
+X  0.0445671 0.938118 0.712459
+X  0.185782 0.63874 0.456153
+3
+10 10 10
+X  0.0359305 0.920097 0.515185
+X  0.65839 0.574201 0.988437
+X  0.668184 0.278123 0.329085
+3
+10 10 10
+X  0.37256 0.763033 0.47027
+X  0.41078 0.331861 0.815854
+X  0.892846 0.891136 0.687022
+3
+10 10 10
+X  0.139067 0.332921 0.907451
+X  0.639115 0.746888 0.0191599
+X  0.557688 0.791455 0.957278
+3
+10 10 10
+X  0.270147 0.977236 0.596017
+X  0.726301 0.013167 0.516114
+X  0.241485 0.671557 0.0903151
+3
+10 10 10
+X  0.229922 0.339741 0.368438
+X  0.559007 0.712301 0.131471
+X  0.0292774 0.12308 0.463332
+3
+10 10 10
+X  0.845131 0.0159267 0.354467
+X  0.532154 0.154994 0.687389
+X  0.439605 0.794109 0.434276
+3
+10 10 10
+X  0.458765 0.351797 0.225731
+X  0.416042 0.621945 0.202968
+X  0.0120595 0.348245 0.216134
+3
+10 10 10
+X  0.528173 0.589731 0.887691
+X  0.618489 0.819653 0.227432
+X  0.986926 0.37866 0.939733
+3
+10 10 10
+X  0.118397 0.407937 0.0628131
+X  0.581729 0.253068 0.0787398
+X  0.936196 0.785222 0.233734
+3
+10 10 10
+X  0.623585 0.224827 0.027843
+X  0.0578614 0.683591 0.37964
+X  0.283592 0.0996335 0.00158508
+3
+10 10 10
+X  0.48656 0.111693 0.34983
+X  0.702694 0.639866 0.939561
+X  0.590385 0.258355 0.759214
+3
+10 10 10
+X  0.817817 0.245281 0.137873
+X  0.75755 0.363679 0.54581
+X  0.820363 0.945407 0.798878
+3
+10 10 10
+X  0.899103 0.881604 0.5841
+X  0.132837 0.505189 0.808926
+X  0.16068 0.56305 0.492518
+3
+10 10 10
+X  0.54032 0.846643 0.592151
+X  0.541905 0.333202 0.703844
+X  0.891735 0.0358969 0.343711
+3
+10 10 10
+X  0.831296 0.626282 0.602065
+X  0.59051 0.4441 0.847347
+X  0.728383 0.20165 0.211025
+3
+10 10 10
+X  0.274193 0.0220132 0.156433
+X  0.0730712 0.921116 0.0380362
+X  0.657171 0.0539527 0.543225
+3
+10 10 10
+X  0.466098 0.214632 0.106275
+X  0.958615 0.754952 0.952918
+X  0.550766 0.296857 0.28612
+3
+10 10 10
+X  0.254611 0.188593 0.322017
+X  0.598321 0.0198888 0.948299
+X  0.200387 0.610399 0.392399
+3
+10 10 10
+X  0.0477334 0.338782 0.594049
+X  0.258759 0.612974 0.616062
+X  0.415191 0.686046 0.537178
+3
+10 10 10
+X  0.453228 0.343217 0.591131
+X  0.996452 0.809315 0.805763
+X  0.102727 0.76793 0.560716
+3
+10 10 10
+X  0.055645 0.318696 0.857573
+X  0.341765 0.573307 0.0461652
+X  0.663782 0.171628 0.066054
+3
+10 10 10
+X  0.612081 0.372015 0.676453
+X  0.0044803 0.419748 0.0152341
+X  0.598529 0.678507 0.628209
+3
+10 10 10
+X  0.214592 0.0936982 0.314254
+X  0.75177 0.546926 0.657471
+X  0.342901 0.543378 0.466786
+3
+10 10 10
+X  0.148664 0.646106 0.234716
+X  0.70938 0.701751 0.553412
+X  0.566953 0.0435155 0.126719
+3
+10 10 10
+X  0.613118 0.707297 0.298347
+X  0.679172 0.319379 0.670362
+X  0.355624 0.323859 0.0901099
+3
+10 10 10
+X  0.370858 0.922388 0.768617
+X  0.999067 0.13698 0.862315
+X  0.313321 0.88875 0.409241
+3
+10 10 10
+X  0.970792 0.231651 0.952619
+X  0.437578 0.380315 0.598724
+X  0.672293 0.0896951 0.300475
+3
+10 10 10
+X  0.225705 0.656648 0.34399
+X  0.352424 0.269765 0.0512878
+X  0.650771 0.948937 0.370666
+3
+10 10 10
+X  0.321133 0.304561 0.694525
+X  0.411243 0.67542 0.616914
+X  0.17986 0.674486 0.753893
+3
+10 10 10
+X  0.0421745 0.987808 0.642643
+X  0.451415 0.9586 0.874294
+X  0.404034 0.396178 0.254609
+3
+10 10 10
+X  0.00275822 0.0684713 0.344305
+X  0.303233 0.294177 0.000952164
+X  0.647224 0.646601 0.270718
+3
+10 10 10
+X  0.698511 0.297372 0.219655
+X  0.0691778 0.618505 0.524216
+X  0.763703 0.0297474 0.199635
+3
+10 10 10
+X  0.380617 0.209607 0.874122
+X  0.13451 0.251781 0.86193
+X  0.777153 0.703197 0.820529
+3
+10 10 10
+X  0.651448 0.10723 0.216707
+X  0.906057 0.109989 0.285179
+X  0.250362 0.413222 0.579355
+3
+10 10 10
+X  0.251314 0.0604453 0.225956
+X  0.522031 0.758957 0.523328
+X  0.741686 0.828134 0.141832
+3
+10 10 10
+X  0.265902 0.591838 0.17158
+X  0.465537 0.972454 0.381187
+X  0.339659 0.106964 0.632968
+3
+10 10 10
+X  0.201589 0.884118 0.336165
+X  0.0221182 0.535565 0.443395
+X  0.238825 0.441622 0.553384
+3
+10 10 10
+X  0.524004 0.691984 0.966605
+X  0.103359 0.943298 0.0270507
+X  0.329315 0.465329 0.786007
+3
+10 10 10
+X  0.852643 0.207015 0.614142
+X  0.994475 0.472916 0.205979
+X  0.166055 0.938453 0.178434
+3
+10 10 10
+X  0.547242 0.278112 0.285398
+X  0.18021 0.479701 0.169516
+X  0.516374 0.501819 0.705081
+3
+10 10 10
+X  0.959769 0.740645 0.146703
+X  0.513153 0.264649 0.838687
+X  0.479759 0.368008 0.781985
+3
+10 10 10
+X  0.506809 0.697323 0.247313
+X  0.292817 0.549966 0.454328
+X  0.906958 0.544441 0.927244
+3
+10 10 10
+X  0.112938 0.710495 0.865697
+X  0.291371 0.257737 0.14381
+X  0.576769 0.437947 0.623511
+3
+10 10 10
+X  0.746285 0.954321 0.125331
+X  0.451366 0.91409 0.865975
+X  0.598069 0.427243 0.130624
+3
+10 10 10
+X  0.436756 0.907002 0.498632
+X  0.218741 0.413811 0.195955
+X  0.466054 0.706628 0.745921
+3
+10 10 10
+X  0.920382 0.613586 0.290361
+X  0.847626 0.726524 0.000856793
+X  0.713324 0.0178958 0.258594
+3
+10 10 10
+X  0.857133 0.594665 0.69654
+X  0.480645 0.34095 0.650861
+X  0.605975 0.792316 0.564952
+3
+10 10 10
+X  0.47195 0.390386 0.992195
+X  0.602575 0.827142 0.899197
+X  0.101207 0.045883 0.313008
+3
+10 10 10
+X  0.297162 0.511937 0.0196364
+X  0.0430831 0.432319 0.633223
+X  0.333445 0.279946 0.359747
+3
+10 10 10
+X  0.334301 0.993269 0.377643
+X  0.592895 0.850403 0.972308
+X  0.289435 0.331047 0.313258
+3
+10 10 10
+X  0.940296 0.937022 0.105575
+X  0.505248 0.408973 0.49596
+X  0.497443 0.0115476 0.323102
+3
+10 10 10
+X  0.39664 0.112755 0.368985
+X  0.709648 0.409917 0.880922
+X  0.729285 0.453 0.313242
+3
+10 10 10
+X  0.362508 0.786445 0.593188
+X  0.722255 0.120746 0.586457
+X  0.0998976 0.713641 0.436859
+3
+10 10 10
+X  0.0722057 0.00307608 0.767907
+X  0.385464 0.943372 0.704929
+X  0.491039 0.44862 0.113902
+3
+10 10 10
+X  0.986999 0.946063 0.125449
+X  0.310101 0.342703 0.238204
+X  0.679087 0.0523519 0.648121
+3
+10 10 10
+X  0.560009 0.781637 0.101121
+X  0.873251 0.144144 0.887565
+X  0.466439 0.866399 0.00831128
+3
+10 10 10
+X  0.0528953 0.966297 0.721952
+X  0.489755 0.0385024 0.725028
+X  0.257662 0.423967 0.668401
+3
+10 10 10
+X  0.962591 0.915005 0.117021
+X  0.0764926 0.902004 0.0630846
+X  0.201942 0.212106 0.405788
+3
+10 10 10
+X  0.440146 0.891192 0.45814
+X  0.0882672 0.451202 0.239777
+X  0.189388 0.324453 0.383921
+3
+10 10 10
+X  0.0769535 0.790891 0.25032
+X  0.0852648 0.843786 0.216617
+X  0.807217 0.333541 0.255119
+3
+10 10 10
+X  0.532245 0.591203 0.679085
+X  0.200646 0.553794 0.594091
+X  0.317667 0.630286 0.496095
+3
+10 10 10
+X  0.380752 0.832228 0.708201
+X  0.78654 0.272374 0.599394
+X  0.24468 0.360642 0.0505952
+3
+10 10 10
+X  0.484456 0.55003 0.375048
+X  0.868377 0.626983 0.165939
+X  0.118697 0.712248 0.00972536
+3
+10 10 10
+X  0.335314 0.519465 0.343267
+X  0.590433 0.0517102 0.934469
+X  0.269518 0.252356 0.488263
+3
+10 10 10
+X  0.863609 0.570023 0.118549
+X  0.359704 0.950775 0.950777
+X  0.0679053 0.737314 0.223152
+3
+10 10 10
+X  0.667299 0.981994 0.583794
+X  0.717894 0.46645 0.133823
+X  0.0929419 0.334827 0.760807
+3
+10 10 10
+X  0.258881 0.453524 0.473055
+X  0.268606 0.788838 0.99252
+X  0.611873 0.37927 0.0442301
+3
+10 10 10
+X  0.546342 0.648788 0.296586
+X  0.0346053 0.512397 0.866609
+X  0.153154 0.872102 0.817384
diff --git a/src/bias/External.cpp b/src/bias/External.cpp
index 0a8193466426b2588940e6d34a6e52cdde3b73a2..b01c47fc642d7aeadcdfdd6f07dd19fa1c5e6a28 100644
--- a/src/bias/External.cpp
+++ b/src/bias/External.cpp
@@ -41,7 +41,7 @@ The following is an input for a calculation with an external potential that is
 defined in the file bias.dat and that acts on the distance between atoms 3 and 5.
 \verbatim
 DISTANCE ATOMS=3,5 LABEL=d1
-EXTERNAL ARG=d1 FILENAME=bias.dat LABEL=external 
+EXTERNAL ARG=d1 FILE=bias.dat LABEL=external 
 \endverbatim
 (See also \ref DISTANCE \ref PRINT).
 
@@ -64,7 +64,7 @@ potential acting on two torsional angles:
 \verbatim
 TORSION ATOMS=4,5,6,7 LABEL=t1
 TORSION ATOMS=6,7,8,9 LABEL=t2
-EXTERNAL ARG=t1,t2 FILENAME=bias.dat LABEL=ext
+EXTERNAL ARG=t1,t2 FILE=bias.dat LABEL=ext
 \endverbatim
 
 The header in the file bias.dat for this calculation would read:
diff --git a/src/bias/MetaD.cpp b/src/bias/MetaD.cpp
index 4444641661988dd8f3582d4ad32cda46890a372c..fb2842e50b3e5e620c0f592fbab60f0d9e2a7c8a 100644
--- a/src/bias/MetaD.cpp
+++ b/src/bias/MetaD.cpp
@@ -600,6 +600,7 @@ last_step_warn_grid(0)
     uppI_=tmpI.at(1);
     if(getNumberOfArguments()!=1) error("INTERVAL limits correction works only for monodimensional metadynamics!");
     if(uppI_<lowI_) error("The Upper limit must be greater than the Lower limit!");
+    if(getPntrToArgument(0)->isPeriodic()) error("INTERVAL cannot be used with periodic variables!");
     doInt_=true;
   }
 
diff --git a/src/bias/PBMetaD.cpp b/src/bias/PBMetaD.cpp
index 9606572ca797c4239cfc6ced3e4d882b24490b0f..51a22c05a8825c193f01a93c3595b9c3763bd184 100644
--- a/src/bias/PBMetaD.cpp
+++ b/src/bias/PBMetaD.cpp
@@ -205,7 +205,7 @@ private:
   bool    multiple_w;
   vector<double> uppI_;
   vector<double> lowI_;
-  bool doInt_;
+  vector<bool>  doInt_;
   bool isFirstStep;
 
   void   readGaussians(int iarg, IFile*);
@@ -264,7 +264,7 @@ PBMetaD::PBMetaD(const ActionOptions& ao):
 PLUMED_BIAS_INIT(ao),
 grid_(false), height0_(std::numeric_limits<double>::max()),
 biasf_(1.0), kbt_(0.0), stride_(0), welltemp_(false),
-multiple_w(false), doInt_(false), isFirstStep(true)
+multiple_w(false), isFirstStep(true)
 {
 
   parse("FMT",fmt);
@@ -350,16 +350,20 @@ multiple_w(false), doInt_(false), isFirstStep(true)
   parseFlag("GRID_NOSPLINE",nospline);
   bool spline=!nospline;
   if(gbin.size()>0){grid_=true;}
-  
+
+  doInt_.resize(getNumberOfArguments(),false);  
   // Interval keyword
   parseVector("INTERVAL_MIN",lowI_);
   parseVector("INTERVAL_MAX",uppI_);
   // various checks
   if(lowI_.size()!=uppI_.size()) error("both a lower and an upper limits must be provided with INTERVAL");
   if(lowI_.size()!=0 && lowI_.size()!=getNumberOfArguments()) error("check number of argument of INTERVAL");
-  for(unsigned i=0; i<lowI_.size(); ++i) if(uppI_[i]<lowI_[i]) error("The Upper limit must be greater than the Lower limit!");
-  if(lowI_.size()>0) doInt_=true;
-  
+  for(unsigned i=0; i<lowI_.size(); ++i) {
+    if(uppI_[i]<lowI_[i]) error("The Upper limit must be greater than the Lower limit!");
+    if(getPntrToArgument(i)->isPeriodic()) warning("INTERVAL is not used for periodic variables");
+    else doInt_[i]=true;
+  }
+ 
   checkRead();
 
   log.printf("  Gaussian width ");
@@ -376,7 +380,9 @@ multiple_w(false), doInt_(false), isFirstStep(true)
     log.printf("  KbT %f\n",kbt_);
   }
   if(multiple_w) log.printf("  Multiple walkers active using MPI communnication\n");
-  if(doInt_) log.printf("  Upper and Lower limits boundaries for the bias are activated\n");
+  for(unsigned i=0; i<doInt_.size();i++) {
+    if(doInt_[i]) log.printf("  Upper and Lower limits boundaries for the bias of CV %u are activated\n", i);
+  }
   if(grid_){
    log.printf("  Grid min");
    for(unsigned i=0;i<gmin.size();++i) log.printf(" %s",gmin[i].c_str() );
@@ -391,7 +397,7 @@ multiple_w(false), doInt_(false), isFirstStep(true)
    if(sparsegrid){log.printf("  Grid uses sparse grid\n");}
   }
 
-  addComponentWithDerivatives("bias"); componentIsNotPeriodic("bias");
+  addComponent("bias"); componentIsNotPeriodic("bias");
 
 // initializing vector of hills
   hills_.resize(getNumberOfArguments());
@@ -470,7 +476,7 @@ multiple_w(false), doInt_(false), isFirstStep(true)
   ofile->open(hillsfname_tmp);
   if(fmt.length()>0) ofile->fmtField(fmt);
   ofile->addConstantField("multivariate");
-  if(doInt_) {
+  if(doInt_[i]) {
     ofile->addConstantField("lower_int").printField("lower_int",lowI_[i]);
     ofile->addConstantField("upper_int").printField("upper_int",uppI_[i]);
   }
@@ -482,14 +488,12 @@ multiple_w(false), doInt_(false), isFirstStep(true)
  }
 
   log<<"  Bibliography "<<plumed.cite("Pfaendtner and Bonomi. J. Chem. Theory Comput. 11, 5062 (2015)");
-  if(doInt_) log<<plumed.cite(
+  if(doInt_[0]) log<<plumed.cite(
      "Baftizadeh, Cossio, Pietrucci, and Laio, Curr. Phys. Chem. 2, 79 (2012)");
   if(multiple_w) log<<plumed.cite(
     "Raiteri, Laio, Gervasio, Micheletti, and Parrinello, J. Phys. Chem. B 110, 3533 (2006)");   
  
   log<<"\n";
-
-  turnOnDerivatives();
 }
 
 void PBMetaD::readGaussians(int iarg, IFile *ifile){
@@ -580,9 +584,8 @@ void PBMetaD::addGaussian(int iarg, const Gaussian& hill){
 
 vector<unsigned> PBMetaD::getGaussianSupport(int iarg, const Gaussian& hill){
  vector<unsigned> nneigh;
- 
- if(doInt_){
-   double cutoff=sqrt(2.0*DP2CUTOFF)*hill.sigma[0];
+ const double cutoff=sqrt(2.0*DP2CUTOFF)*hill.sigma[0];
+ if(doInt_[iarg]){
    if(hill.center[0]+cutoff > uppI_[iarg] || hill.center[0]-cutoff < lowI_[iarg]) { 
      // in this case, we updated the entire grid to avoid problems
      return BiasGrids_[iarg]->getNbin();
@@ -592,7 +595,6 @@ vector<unsigned> PBMetaD::getGaussianSupport(int iarg, const Gaussian& hill){
    }
  }
 
- double cutoff=sqrt(2.0*DP2CUTOFF)*hill.sigma[0];
  nneigh.push_back( static_cast<unsigned>(ceil(cutoff/BiasGrids_[iarg]->getDx()[0])) );
 
  return nneigh;
@@ -631,7 +633,7 @@ double PBMetaD::evaluateGaussian
  const double *pcv=NULL; // pointer to cv
  double tmpcv[1]; // tmp array with cv (to be used with doInt_)
  if(cv.size()>0) pcv=&cv[0];
- if(doInt_){
+ if(doInt_[iarg]){
    plumed_assert(cv.size()==1);
    tmpcv[0]=cv[0];
    if(cv[0]<lowI_[iarg]) tmpcv[0]=lowI_[iarg];
@@ -644,7 +646,7 @@ double PBMetaD::evaluateGaussian
        bias = hill.height*exp(-dp2);
        if(der){der[0]+= -bias * dp / hill.sigma[0];}
  }
- if(doInt_){
+ if(doInt_[iarg]){
    if((cv[0]<lowI_[iarg] || cv[0]>uppI_[iarg]) && der ) der[0] = 0.0;
  }
  return bias;
@@ -671,7 +673,6 @@ void PBMetaD::calculate()
   for(unsigned i=0; i<getNumberOfArguments(); ++i){
     const double f = - exp(-bias[i]/kbt_) / (ene) * deriv[i];
     setOutputForce(i, f);
-    getPntrToComponent("bias")->addDerivative(i,-f);
   }
   delete [] der;
 
diff --git a/src/colvar/Template.cpp b/src/colvar/Template.cpp
index 5b4b88a4169aef61bdd5e16ba70bf21cab2ec538..0f09740ea4fbfba1d38b73eea310a61e49d72f0b 100644
--- a/src/colvar/Template.cpp
+++ b/src/colvar/Template.cpp
@@ -61,7 +61,7 @@ void Template::registerKeywords(Keywords& keys){
   keys.addFlag("TEMPLATE_DEFAULT_ON_FLAG",true,"flags that are by default performed should be specified like this");
   keys.add("compulsory","TEMPLATE_COMPULSORY","all compulsory keywords should be added like this with a description here");
   keys.add("optional","TEMPLATE_OPTIONAL","all optional keywords that have input should be added like a description here");
-  keys.add("atoms","TEMPLATE_INPUT","the keyword with which you specify what atoms to use should be added like this");
+  keys.add("atoms","ATOMS","the keyword with which you specify what atoms to use should be added like this");
 }
 
 Template::Template(const ActionOptions&ao):
diff --git a/src/config/Makefile b/src/config/Makefile
index 5fb978fe0e229da4c0b712766b786b4f1c5936e5..bdcddde9374f78c189d45469c4e9b9606e361db3 100644
--- a/src/config/Makefile
+++ b/src/config/Makefile
@@ -1,6 +1,8 @@
 
 # include the machine dependent configuration
--include ../../Makefile.conf
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../../Makefile.conf
+endif
 
 # sed script to edit program name defaults to do nothing
 ifndef program_transform_name
diff --git a/src/core/CLTool.cpp b/src/core/CLTool.cpp
index 8f6b814e206abe4e9829521ef15e9733edee17b0..527e5b6cbed7ebe7cd4e6f4fc4ec2c60ecbae4b7 100644
--- a/src/core/CLTool.cpp
+++ b/src/core/CLTool.cpp
@@ -94,7 +94,7 @@ bool CLTool::readCommandLineArgs( int argc, char**argv, FILE*out ){
                if( a==thiskey ){
                    prefix=thiskey+"="; found=true;
                    inputData.insert(std::pair<std::string,std::string>(thiskey,""));
-               } else if( a.find(thiskey+"=")==0){
+               } else if(Tools::startWith(a,thiskey+"=")){
                    a.erase(0,a.find("=")+1); prefix=""; found=true;
                    if(inputData.count(thiskey)==0){
                       inputData.insert(std::pair<std::string,std::string>(thiskey,a));
diff --git a/src/core/CLToolMain.cpp b/src/core/CLToolMain.cpp
index e5eb16190b36e104c2b4de80f6d4c14cd3c0bd28..10fa902b6c3fc00ba74a8bf4e0197d44abde0a73 100644
--- a/src/core/CLToolMain.cpp
+++ b/src/core/CLToolMain.cpp
@@ -144,7 +144,7 @@ int CLToolMain::run(int argc, char **argv,FILE*in,FILE*out,Communicator& pc){
       }
     } else if(a=="--standalone-executable"){
       standalone_executable=true;
-    } else if(a.find("--load=")==0){
+    } else if(Tools::startWith(a,"--load=")){
       a.erase(0,a.find("=")+1);
       prefix="";
       void *p=dlloader.load(a);
diff --git a/src/core/PlumedMain.cpp b/src/core/PlumedMain.cpp
index 381d526994d04a3b4bc207398515a7cdc684b602..07c829ccc6ce8ddb56ed32f3f403da45930b2e72 100644
--- a/src/core/PlumedMain.cpp
+++ b/src/core/PlumedMain.cpp
@@ -511,6 +511,7 @@ void PlumedMain::readInputFile(std::string str){
   IFile ifile;
   ifile.link(*this);
   ifile.open(str);
+  ifile.allowNoEOL();
   std::vector<std::string> words;
   while(Tools::getParsedLine(ifile,words) && words[0]!="ENDPLUMED") readInputWords(words);
   log.printf("END FILE: %s\n",str.c_str());
@@ -732,7 +733,10 @@ void PlumedMain::load(const std::string& ss){
      if(n!=std::string::npos && n<s.length()-1) extension=s.substr(n+1);
      if(n!=std::string::npos && n<s.length())   base=s.substr(0,n);
      if(extension=="cpp"){
-       string cmd="plumed mklib "+s;
+// full path command, including environment setup
+// this will work even if plumed is not in the execution path or if it has been
+// installed with a name different from "plumed"
+       string cmd=config::getEnvCommand()+" \""+config::getPlumedRoot()+"\"/scripts/mklib.sh "+s;
        log<<"Executing: "<<cmd;
        if(comm.Get_size()>0) log<<" (only on master node)";
        log<<"\n";
diff --git a/src/generic/EffectiveEnergyDrift.cpp b/src/generic/EffectiveEnergyDrift.cpp
index a5bee933adc17ef585edb0138247addaef97b2c0..6ccdc437a96f3fff662e940c39fe02cab7705edc 100644
--- a/src/generic/EffectiveEnergyDrift.cpp
+++ b/src/generic/EffectiveEnergyDrift.cpp
@@ -157,7 +157,7 @@ isFirstStep(true){
 
   //construct biases from ActionWithValue with a component named bias
   vector<ActionWithValue*> tmpActions=plumed.getActionSet().select<ActionWithValue*>();
-  for(int i=0;i<tmpActions.size();i++) if(tmpActions[i]->exists(tmpActions[i]->getLabel()+".bias")) biases.push_back(tmpActions[i]);
+  for(unsigned i=0;i<tmpActions.size();i++) if(tmpActions[i]->exists(tmpActions[i]->getLabel()+".bias")) biases.push_back(tmpActions[i]);
 
   //resize counters and displacements useful to communicate with MPI_Allgatherv
   indexCnt.resize(nProc);
@@ -186,7 +186,7 @@ void EffectiveEnergyDrift::update(){
     Tensor B=atoms.getPbc().getBox();
     Tensor IB=atoms.getPbc().getInvBox();
 #pragma omp parallel for
-    for(int i=0;i<positions.size();++i){
+    for(unsigned i=0;i<positions.size();++i){
       positions[i]=matmul(positions[i],IB);
       forces[i]=matmul(B,forces[i]);
     }
@@ -246,7 +246,7 @@ void EffectiveEnergyDrift::update(){
     pForces.resize(nLocalAtoms);
 
     //compute backmap
-    for(int j=0;j<indexR.size();j++) backmap[indexR[j]]=j;
+    for(unsigned j=0;j<indexR.size();j++) backmap[indexR[j]]=j;
 
     //fill the vectors pGatindex, pPositions and pForces
     for(int i=0; i<nLocalAtoms; i++){
@@ -286,7 +286,7 @@ void EffectiveEnergyDrift::update(){
 
     //we cannot just use plumed.getBias() because it will be ==0.0 if PRINT_STRIDE
     //is not a multiple of the bias actions stride
-    for(int i=0;i<biases.size();i++) bias+=biases[i]->getOutputQuantity("bias");
+    for(unsigned i=0;i<biases.size();i++) bias+=biases[i]->getOutputQuantity("bias");
 
     plumed.comm.Sum(&eedSum,1);
     output.printField("time",getTime());
diff --git a/src/generic/Flush.cpp b/src/generic/Flush.cpp
index 66925216988f1ef0197ea22ea897bb156f3f8dac..1f1c7d65a11847d14e3db0dc3b3b9c15e10774de 100644
--- a/src/generic/Flush.cpp
+++ b/src/generic/Flush.cpp
@@ -67,7 +67,8 @@ public:
   }
   static void registerKeywords( Keywords& keys );
   void calculate(){}
-  void apply(){
+  void apply(){}
+  void update(){
     plumed.fflush();
     log.flush();
     const ActionSet & actionSet(plumed.getActionSet());
diff --git a/src/imd/Makefile b/src/imd/Makefile
index 5968953fca5a6bb7920f6adacd8777f44fc17eb6..08656a8db26d3889898aa5f85f8b15f3c6f91953 100644
--- a/src/imd/Makefile
+++ b/src/imd/Makefile
@@ -1,4 +1,7 @@
--include ../../Makefile.conf
+# include the machine dependent configuration
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../../Makefile.conf
+endif
 
 all: libimd.$(SOEXT)
 
diff --git a/src/lib/Makefile b/src/lib/Makefile
index 5dff9d08846a58a97b5c7b6b88564d55b5b736e2..89558a52ba5d5200810ae39f8e8c8ce9b10ba5a5 100644
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -8,7 +8,9 @@ DIRS := $(sort ../config ../wrapper ../main  $(KERNEL_MODULES))
 DIRSLINKS:=$(addsuffix .links,$(DIRS))
 
 # include the machine dependent configuration
--include ../../Makefile.conf
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../../Makefile.conf
+endif
 
 # if machine dependent configuration has been found:
 ifdef GCCDEP
diff --git a/src/maketools/make.module b/src/maketools/make.module
index bd77c32a3a30c49741947d368dc370920682887e..e92fda70874e7ba6c2d2ff716068145733718174 100644
--- a/src/maketools/make.module
+++ b/src/maketools/make.module
@@ -5,7 +5,9 @@
 # 
 
 # include the machine dependent configuration
--include ../../Makefile.conf
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../../Makefile.conf
+endif
 
 # if machine dependent configuration has been found:
 ifdef GCCDEP
@@ -45,7 +47,9 @@ lib:
 install:
 	cd ../lib ; make install
 
+ifneq ($(disable_dependency_tracking),yes)
 -include $(DEP)
+endif
 
 # if machine dependent configuration has not been found:
 else
diff --git a/src/maketools/make.rules b/src/maketools/make.rules
index cea71aae3d7a20975241eff85f72bc434301d283..2d3155e89aa7b392e4658e78f03891bf7320b87e 100644
--- a/src/maketools/make.rules
+++ b/src/maketools/make.rules
@@ -12,13 +12,15 @@ endif
 # rule for c++
 %.o: %.cpp
 	@echo "compiling " $*.cpp
+	@-test -d deps || mkdir deps
+ifneq ($(disable_dependency_tracking),yes)
 	$(AT)$(CXXDEP) -c -MM -MF$*.d $(CPPFLAGS) $(ADDCPPFLAGS) $(CXXFLAGS) $*.cpp
 	@cp -f $*.d $*.d.tmp
-	@-test -d deps || mkdir deps
 	@sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \
 	 sed -e 's/^ *//' -e 's/$$/:/' >> $*.d
 	@mv $*.d deps/$*.d
 	@rm -f $*.d.tmp
+endif
 ifndef XLF
 	$(AT)$(CXX) -c $(CPPFLAGS) $(ADDCPPFLAGS) $(CXXFLAGS) $*.cpp -o $*.o
 endif
@@ -26,13 +28,15 @@ endif
 # rule for c
 %.o: %.c
 	@echo "compiling " $*.c
+	@-test -d deps || mkdir deps
+ifneq ($(disable_dependency_tracking),yes)
 	$(AT)$(CXXDEP) -c -MM -MF$*.d $(CPPFLAGS) $(ADDCPPFLAGS) $(CFLAGS) $*.c -o $*.o
 	@cp -f $*.d $*.d.tmp
-	@-test -d deps || mkdir deps
 	@sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \
 	 sed -e 's/^ *//' -e 's/$$/:/' >> $*.d
 	@mv $*.d deps/$*.d
 	@rm -f $*.d.tmp
+endif
 ifndef XLF
 	$(AT)$(CC) -c $(CPPFLAGS) $(ADDCPPFLAGS) $(CFLAGS) $*.c -o $*.o
 endif
diff --git a/src/tools/Grid.cpp b/src/tools/Grid.cpp
index 52b97fe9b4e4e672c51056917edfc7e9c03388a4..f46462c9483a7de0c031621e36408e68f595d585 100644
--- a/src/tools/Grid.cpp
+++ b/src/tools/Grid.cpp
@@ -171,7 +171,7 @@ Grid::index_t Grid::getIndex(const vector<unsigned> & indices) const {
   if(indices[i]>=nbin_[i]) {
     std::string is;
     Tools::convert(i,is);
-    std::string msg="ERROR: the system is looking for a value outside the grid along the " + is;
+    std::string msg="ERROR: the system is looking for a value outside the grid along the " + is + " ("+getArgNames()[i]+")";
     plumed_merror(msg+" index!");
   }
  index_t index=indices[dimension_-1];
diff --git a/src/tools/IFile.cpp b/src/tools/IFile.cpp
index 8352ebf92b61a2dc30e48a8727a15958889d526f..b6f6a687d101cbdf9ff2b287a697c229ea82e25d 100644
--- a/src/tools/IFile.cpp
+++ b/src/tools/IFile.cpp
@@ -187,7 +187,8 @@ IFile& IFile::scanField(){
 
 IFile::IFile():
   inMiddleOfField(false),
-  ignoreFields(false)
+  ignoreFields(false),
+  noEOL(false)
 {
 }
 
@@ -198,9 +199,8 @@ IFile::~IFile(){
 IFile& IFile::getline(std::string &str){
   char tmp=0;
   str="";
-// I comment out this (see note below on commented fgetpos):
-// fpos_t pos;
-// fgetpos(fp,&pos);
+  fpos_t pos;
+  fgetpos(fp,&pos);
   while(llread(&tmp,1)==1 && tmp && tmp!='\n' && tmp!='\r' && !eof && !err){
     str+=tmp;
   }
@@ -208,11 +208,12 @@ IFile& IFile::getline(std::string &str){
     llread(&tmp,1);
     plumed_massert(tmp=='\n',"plumed only accepts \\n (unix) or \\r\\n (dos) new lines");
   }
-  if(eof){
-    if(str.length()>0) eof=false;
-  } else if(err || tmp!='\n'){
+ if(eof && noEOL){
+   if(str.length()>0) eof=false;
+ } else if(eof || err || tmp!='\n'){
     eof = true;
     str="";
+    if(!err) fsetpos(fp,&pos);
 // there was a fsetpos here that apparently is not necessary
 //  fsetpos(fp,&pos);
 // I think it was necessary to have rewind working correctly
@@ -245,4 +246,8 @@ void IFile::allowIgnoredFields(){
   ignoreFields=true;
 }
 
+void IFile::allowNoEOL(){
+  noEOL=true;
+}
+
 }
diff --git a/src/tools/IFile.h b/src/tools/IFile.h
index 527401c60a4f7ee494070d2b671139d88ba33c12..222f4a8ead4314662132b7b5b7981511ffd6c375 100644
--- a/src/tools/IFile.h
+++ b/src/tools/IFile.h
@@ -55,6 +55,8 @@ public virtual FileBase{
   bool inMiddleOfField;
 /// Set to true if you want to allow fields to be ignored in the read in file
   bool ignoreFields;
+/// Set to true to allow files without end-of-line at the end
+  bool noEOL;
 /// Advance to next field (= read one line)
   IFile& advanceField();
 /// Find field index by name
@@ -93,6 +95,10 @@ Typically used as
   IFile& scanField(Value* val);
 /// Allow some of the fields in the input to be ignored
   void allowIgnoredFields();
+/// Allow files without EOL at the end.
+/// This in practice should be only used when opening
+/// plumed input files
+  void allowNoEOL();
 };
 
 }
diff --git a/src/tools/LatticeReduction.cpp b/src/tools/LatticeReduction.cpp
index 920521381786c9e0d215b72a7b3b160f1a7dfe7b..487991d3c98351a04179d4c0a88fbb43849572ac 100644
--- a/src/tools/LatticeReduction.cpp
+++ b/src/tools/LatticeReduction.cpp
@@ -28,10 +28,11 @@ namespace PLMD{
 const double epsilon=1e-14;
 
 void LatticeReduction::sort(Vector v[3]){
+  const double onePlusEpsilon=(1.0+epsilon);
   for(int i=0;i<3;i++) for(int j=i+1;j<3;j++) if(modulo2(v[i])>modulo2(v[j])){
     Vector x=v[i]; v[i]=v[j]; v[j]=x;
   }
-  for(int i=0;i<2;i++) plumed_assert(modulo2(v[i])<=modulo2(v[i+1]));
+  for(int i=0;i<2;i++) plumed_assert(modulo2(v[i])<=modulo2(v[i+1])*onePlusEpsilon);
 }
 
 void LatticeReduction::reduce(Vector&a,Vector&b){
diff --git a/src/tools/Tools.cpp b/src/tools/Tools.cpp
index 3e7063813e8078703f068ea50555f23c31f6ee9e..c1ffe96f96886c38c78d0e2094ef261265afd0a4 100644
--- a/src/tools/Tools.cpp
+++ b/src/tools/Tools.cpp
@@ -322,4 +322,9 @@ std::string Tools::extension(const std::string&s){
   return ext;
 }
 
+bool Tools::startWith(const std::string & full,const std::string &start){
+  return (full.substr(0,start.length())==start);
+}
+
+
 }
diff --git a/src/tools/Tools.h b/src/tools/Tools.h
index 99592ce99d6102f18520fb0a912b0fba908b5af4..f4b00e9266b55623c5c8203b654e94989affb2bf 100644
--- a/src/tools/Tools.h
+++ b/src/tools/Tools.h
@@ -121,6 +121,9 @@ public:
   static std::string extension(const std::string&);
 /// Fast int power
   static double fastpow(double base,int exp);
+/// Check if a string full starts with string start.
+/// Same as full.find(start)==0
+  static bool startWith(const std::string & full,const std::string &start);
 };
 
 template <class T>
diff --git a/src/vesselbase/ActionWithVessel.cpp b/src/vesselbase/ActionWithVessel.cpp
index 1ec5088623de517cbc6b19238989f4f10e6f4544..41d05b50e66cdf0e109ba3974fb48bebc7243d2e 100644
--- a/src/vesselbase/ActionWithVessel.cpp
+++ b/src/vesselbase/ActionWithVessel.cpp
@@ -60,9 +60,9 @@ ActionWithVessel::ActionWithVessel(const ActionOptions&ao):
   noderiv(true),
   actionIsBridged(false),
   mydata(NULL),
+  stopwatch(*new Stopwatch),
   contributorsAreUnlocked(false),
-  weightHasDerivatives(false),
-  stopwatch(*new Stopwatch)
+  weightHasDerivatives(false)
 {
   maxderivatives=309; parse("MAXDERIVATIVES",maxderivatives);
   if( keywords.exists("SERIAL") ) parseFlag("SERIAL",serial);
diff --git a/src/vesselbase/StoreDataVessel.cpp b/src/vesselbase/StoreDataVessel.cpp
index 93c74d3abf8dccc2f2f375e233310fd46e6a9691..fe7d258b8a937965ba9fe0dbe27c6ebbe5c8bcf2 100644
--- a/src/vesselbase/StoreDataVessel.cpp
+++ b/src/vesselbase/StoreDataVessel.cpp
@@ -32,8 +32,8 @@ StoreDataVessel::StoreDataVessel( const VesselOptions& da ):
 Vessel(da),
 max_lowmem_stash(3),
 vecsize(0),
-hard_cut(false),
-nspace(0)
+nspace(0),
+hard_cut(false)
 {
   ActionWithValue* myval=dynamic_cast<ActionWithValue*>( getAction() );
   if( !myval ) hasderiv=false;
diff --git a/src/wrapper/Makefile b/src/wrapper/Makefile
index 9066d363551c13906daed0547a0a2cc33f5b3735..ce03b0b4da7716b534d150455f30547e8f8ddce3 100644
--- a/src/wrapper/Makefile
+++ b/src/wrapper/Makefile
@@ -1,6 +1,8 @@
 
 # include the machine dependent configuration
--include ../../Makefile.conf
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../../Makefile.conf
+endif
 
 # openmp flags should not be used here
 ifdef CXXFLAGS_NOOPENMP
diff --git a/src/wrapper/Plumed.c b/src/wrapper/Plumed.c
index 1ff0d46f804f376a689125a11be2ee0e17132bfb..c1da0f05275563459b9b199a92ccf7b0bd56fc12 100644
--- a/src/wrapper/Plumed.c
+++ b/src/wrapper/Plumed.c
@@ -124,6 +124,16 @@ plumed_plumedmain_function_holder* plumed_kernel_register(const plumed_plumedmai
   void* p;
   if(first && f==NULL){
     path=getenv("PLUMED_KERNEL");
+#ifdef __PLUMED_DEFAULT_KERNEL
+/*
+  This variable allows a default path for the kernel to be hardcoded.
+  Can be usedful for hardcoding the predefined plumed location
+  still allowing the user to override this choice setting PLUMED_KERNEL.
+  The path should be chosen at compile time adding e.g.
+  -D__PLUMED_DEFAULT_KERNEL=\"/opt/local/lib/libplumed.dylib\"
+*/
+    if(! (path && (*path) )) path=__PLUMED_DEFAULT_KERNEL;
+#endif
     if(path && (*path)){
       fprintf(stderr,"+++ Loading the PLUMED kernel runtime +++\n");
       fprintf(stderr,"+++ PLUMED_KERNEL=\"%s\" +++\n",path);
diff --git a/test/Makefile b/test/Makefile
index 5f83c1126003ea519e464952607aa1ace5d4add0..92d524ce29fd1e0146c860b3d9a67bfd556b37c7 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,4 +1,7 @@
--include ../Makefile.conf
+# include the machine dependent configuration
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../Makefile.conf
+endif
 
 SUBDIRS = link
 
diff --git a/user-doc/Installation.txt b/user-doc/Installation.txt
index 1f3e67faa4d7d0bf51911b90dac3ed63847a5f9e..6b52fde41a58d315f0b603ca900bfb81d8a4315a 100644
--- a/user-doc/Installation.txt
+++ b/user-doc/Installation.txt
@@ -504,11 +504,63 @@ Once ALMOST is installed, PLUMED 2 can then be configured with ALMOST enabled:
 \endverbatim
 with ALMOST_INSTALL_PATH set to the full path to the ALMOST installation folder.
 
-\page CodeSpecificNotes Code specific notes
+\section installingonacluster Installing PLUMED on a cluster
 
-Here you can find instructions that are specific for patching each of the supported MD codes.
+If you are installing PLUMED on a cluster and you want several users to take advantage of it
+consider the following suggestions.
+
+First of all, we highly recommend using the module file that PLUMED provides to set up the environment.
+Just edit it as necessary to make it suitable for your environment.
+
+Notice that PLUMED can take advantage of many additionaly features if specific libraries are available upon
+compiling it. Install libmatheval first and check if PLUMED `./configure` is detecting it. Libmatheval is a must have with PLUMED.
+If someone uses gromacs, install libxdrfile first and check if PLUMED `./configure` is detecting it.
+PLUMED will be able to write trr/xtc file, simplifying analysis.
+
+Try to patch all MD codes with the `--runtime` option. This will allow independent update of PLUMED and MD codes.
+  Users will be able to combine any of the installed gromacs/amber/etc versions with any of the installed PLUMED versions.
+Notice that it is sometime claimed that statically linked codes are faster. In our experience, this is not true.
+In case you absolutely need a static executable, be ready to face non trivial linking issues. PLUMED is written in C++,
+thus required the appropriate C++ library to be linked, and might require additional libraries (e.g. libmatheval).
 
-\section installing Other hints
+Sometime we make small fixes on the patches. For this reason, keep track of which version of PLUMED you used
+to patch each of the MD code. Perhaps you can call the MD code modules with names such as `gromacs/4.6.7p1`,
+`gromacs/4.6.7p2` and write somewhere in the module file which version of PLUMED you used. Alternatively, call them
+something like `gromacs/4.6.7p2.2.0`. In this way, when we report a bug on the mailing list, users will know if the version
+they are using is affected by it.
+
+Usually it is not necessary to install both a MPI and a non-MPI PLUMED version. PLUMED library only calls MPI functions
+when the MD code is compiled with MPI. PLUMED executable calls MPI functions only when it is invoked without `--no-mpi`.
+In many machines it is thus sufficient to run the plumed executable on the login node as
+\verbatim
+> plumed --no-mpi
+\endverbatim
+even though PLUMED was compiled with MPI and the login node does not support MPI.
+The only case where you might need two different PLUMED installation for compute
+and login node is when you are cross compiling.
+
+PLUMED needs to be well optimized to run efficiently.
+If you need a single PLUMED binary to run efficiency on machines with different levels of hardware (e.g.: some
+of your workstations support AVX and some do not), with intel compiler you can use something like
+\verbatim
+./configure CXX=mpicxx CXXFLAGS="-O3 -axSSE2,AVX"
+\endverbatim
+It will take more time to compile but it will allow you to use a single module. Otherwise, you should install two
+PLUMED version with different optimization levels.
+
+Using modules, it is not necessary to make the PLUMED module explicitly dependent on the used library. Imagine a
+scenario where you first installed a module `libmatheval`, then load it while you compile PLUMED. If you
+provide the following option to configure `LDFLAGS="-Wl,-rpath,$LD_LIBRARY_PATH"`, the PLUMED executable and
+library will remember where libmatheval is, without the need to load libmatheval module at runtime.
+Notice that this trick often does not work for fundamental libraries such as C++ and MPI library. As a consequence,
+usually the PLUMED module should load the compiler and MPI modules.
+
+\attention
+In case you found out how to compile PLUMED on some fancy architecture please share your tricks! You can
+either post it in your blog, send it to the mailing list, or ask as to update this paragraph in the manual, we will
+be happy to do so.
+
+\section installinghints Other hints
 
 We here collect a list of suggestions that might be useful on particular
 machines.
@@ -524,9 +576,15 @@ ld: TOC section size exceeds 64k
 ./configure --disable-ld-r
 \endverbatim
 
+\page CodeSpecificNotes Code specific notes
 
+Here you can find instructions that are specific for patching each of the supported MD codes.
+Notice that MD codes with native PLUMED support are not listed here.
 
 @CODES@
+
+
+
  
 */
 
diff --git a/user-doc/Intro.txt b/user-doc/Intro.txt
index a1d6d7b1e3e29d6836c26283bf3e7e92e2855c6f..eab2c19e0eed8412d5d325641806d5f7f7b0ae78 100644
--- a/user-doc/Intro.txt
+++ b/user-doc/Intro.txt
@@ -10,10 +10,7 @@ new methods, more straightforward to add it to MD codes and hopefully simpler to
 This is the user manual -  if you want to modify PLUMED or to understand how it works internally, have a look at the 
 <a href="../../developer-doc/html/index.html"> developer manual </a>.
 
-\htmlonly
-An experimental PDF copy of this manual can be found
-<a href="../manual.pdf"> here </a>.
-\endhtmlonly
+@PDFMANUAL@
 
 To understand the difference between PLUMED 1 and PLUMED 2, and to
 follow the development of PLUMED 2, you can look at the detailed \ref Changelog.
@@ -27,7 +24,7 @@ To install PLUMED 2, see this page: \ref Installation
 
 @VERSION@
 
-Since version 2.1 we provide an experimental PDF manual.
+Since version 2.1 we optionally provide an experimental PDF manual.
 The PDF version is still not complete and has some known issue (e.g. some
 links are not working properly and images are not correctly included),
 and the html documentation should be considered as the official one.
diff --git a/user-doc/Makefile b/user-doc/Makefile
index 934a4267514520c4fc75eea82508d2659f1714d6..dfb3524d46c1500def1b803341286a7c43cb07cf 100644
--- a/user-doc/Makefile
+++ b/user-doc/Makefile
@@ -1,5 +1,7 @@
 # include the machine dependent configuration
--include ../Makefile.conf
+ifneq ($(MAKECMDGOALS),clean)
+  -include ../Makefile.conf
+endif
 
 .PHONY: all clean
 
@@ -13,11 +15,12 @@ all:
 else
 
 all:
-	./extract
-	./go-doxygen
+ifeq ($(make_doc),yes)
+	make_pdfdoc=$(make_pdfdoc) ./extract
+	make_pdfdoc=$(make_pdfdoc) ./go-doxygen
 	cp *png html/
 	./report_errors
-
+endif
 endif
 
 clean:
diff --git a/user-doc/extract b/user-doc/extract
index 368ed57f5ba3187d59da1c29b8dc94c5c39b8338..2c48711d5689686087ecae7615d89a241157b1a6 100755
--- a/user-doc/extract
+++ b/user-doc/extract
@@ -46,6 +46,17 @@ for file in ../CHANGES/* ; do
 echo "- Changes for \\subpage $(cat $file | grep "@page" | awk '{print $2}')"
 done > automatic/changes.tmp
 
+if test "$make_pdfdoc" = yes ; then
+cat > automatic/pdfmanual.tmp << \EOF
+\htmlonly
+An experimental PDF copy of this manual can be found
+<a href="../manual.pdf"> here </a>.
+\endhtmlonly
+EOF
+else
+touch automatic/pdfmanual.tmp
+fi
+
 # Check for files that register actions with no documentation
 for file in ../src/*/*.cpp
 do
@@ -284,5 +295,6 @@ cat $file.txt |
     /^ *@CODESL@ *$/r     automatic/codesl.list
     /^ *@VERSION@ *$/r    automatic/version.tmp
     /^ *@CHANGES@ *$/r    automatic/changes.tmp
+    /^ *@PDFMANUAL@ *$/r  automatic/pdfmanual.tmp
 " | grep -Ev '^ *@[A-Z]*@ *$' > ${file}PP.txt
 done
diff --git a/user-doc/go-doxygen b/user-doc/go-doxygen
index c58e5c1f6f081ac49a9a0a9939f9e3cbaac18107..edf3465a2de246b1e63c2cfdd32c2c67960130ac 100755
--- a/user-doc/go-doxygen
+++ b/user-doc/go-doxygen
@@ -54,6 +54,10 @@ done
 cat html/doxygen.css plumed.css > html/doxygen.css.tmp
 mv html/doxygen.css.tmp html/doxygen.css
 
+if [ "$make_pdfdoc" != yes ] ; then
+  exit
+fi
+
 cd latex
 
 # this is a workaround for a problem on the linux workstation
diff --git a/user-doc/tutorials/moving.txt b/user-doc/tutorials/moving.txt
index 2902c193ce027f829b3e225f0d082dab5b02fb64..30b7c44a8126b612434fcffd31e8efb6f0c1b6f0 100644
--- a/user-doc/tutorials/moving.txt
+++ b/user-doc/tutorials/moving.txt
@@ -317,7 +317,7 @@ equivalent.  You should read the documentation for the PLUMED 2 Action.
 </TR>
 <TR>
   <TD> ELSTPOT </TD>
-  <TD> <b> currently missing </b> </TD>
+  <TD> currently missing, but a related quantity can be obtained with \ref DHENERGY </TD>
 </TR>
 <TR>
   <TD> PUCKERING </TD>