diff --git a/src/Benchmarks/HeatEquation/HeatEquationBenchmarkProblem_impl.h b/src/Benchmarks/HeatEquation/HeatEquationBenchmarkProblem_impl.h
index 0866b3c28aba11ed4af906c8aa5ad797d5827f0c..a1eb09a36bd87fcaad350e7a0020a8603944bc1f 100644
--- a/src/Benchmarks/HeatEquation/HeatEquationBenchmarkProblem_impl.h
+++ b/src/Benchmarks/HeatEquation/HeatEquationBenchmarkProblem_impl.h
@@ -11,7 +11,7 @@
 #include "Tuning/SimpleCell.h"
 #include "Tuning/GridTraverser.h"
 
-//#define WITH_TNL  // In the 'tunning' part, this serves for comparison of performance 
+//#define WITH_TNL  // In the 'tunning' part, this serves for comparison of performance
                   // when using common TNL structures compared to the benchmark ones
 
 
@@ -88,7 +88,7 @@ setup( const Config::ParameterContainer& parameters,
    }
    this->explicitUpdater.setDifferentialOperator( this->differentialOperatorPointer );
    this->explicitUpdater.setBoundaryConditions( this->boundaryConditionPointer );
-   this->explicitUpdater.setRightHandSide( this->rightHandSidePointer );   
+   this->explicitUpdater.setRightHandSide( this->rightHandSidePointer );
    return true;
 }
 
@@ -133,16 +133,12 @@ setInitialCondition( const Config::ParameterContainer& parameters,
    const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
    MeshFunctionViewType u;
    u.bind( this->getMesh(), *dofsPointer );
-   try
-   {
-      u.boundLoad( initialConditionFile );
-   }
-   catch(...)
+   if( ! Functions::readMeshFunction( u, "u", initialConditionFile ) )
    {
       std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl;
       return false;
    }
-   return true; 
+   return true;
 }
 
 template< typename Mesh,
@@ -189,11 +185,11 @@ makeSnapshot( const RealType& time,
 
    FileName fileName;
    fileName.setFileNameBase( "u-" );
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
 
    //FileNameBaseNumberEnding( "u-", step, 5, ".tnl", fileName );
-   u.save( fileName.getFileName() );
+   u.write( "u", fileName.getFileName() );
    return true;
 }
 
@@ -214,7 +210,7 @@ __global__ void boundaryConditionsKernel( Real* u,
    if( i == gridXSize - 1 && j < gridYSize )
    {
       fu[ j * gridXSize + gridYSize - 1 ] = 0.0;
-      u[ j * gridXSize + gridYSize - 1 ] = 0.0; //u[ j * gridXSize + gridXSize - 1 ];      
+      u[ j * gridXSize + gridYSize - 1 ] = 0.0; //u[ j * gridXSize + gridXSize - 1 ];
    }
    if( j == 0 && i > 0 && i < gridXSize - 1 )
    {
@@ -223,14 +219,14 @@ __global__ void boundaryConditionsKernel( Real* u,
    }
    if( j == gridYSize -1  && i > 0 && i < gridXSize - 1 )
    {
-      fu[ j * gridXSize + i ] = 0.0; //u[ j * gridXSize + gridXSize - 1 ];      
-      u[ j * gridXSize + i ] = 0.0; //u[ j * gridXSize + gridXSize - 1 ];      
-   }         
+      fu[ j * gridXSize + i ] = 0.0; //u[ j * gridXSize + gridXSize - 1 ];
+      u[ j * gridXSize + i ] = 0.0; //u[ j * gridXSize + gridXSize - 1 ];
+   }
 }
 
 
 template< typename Real, typename Index >
-__global__ void heatEquationKernel( const Real* u, 
+__global__ void heatEquationKernel( const Real* u,
                                     Real* fu,
                                     const Real tau,
                                     const Real hx_inv,
@@ -253,7 +249,7 @@ template< typename GridType,
           typename GridEntity,
           typename BoundaryConditions,
           typename MeshFunction >
-__global__ void 
+__global__ void
 boundaryConditionsTemplatedCompact( const GridType* grid,
                                     const BoundaryConditions* boundaryConditions,
                                     MeshFunction* u,
@@ -261,14 +257,14 @@ boundaryConditionsTemplatedCompact( const GridType* grid,
                                     const typename GridEntity::CoordinatesType begin,
                                     const typename GridEntity::CoordinatesType end,
                                     const typename GridEntity::EntityOrientationType entityOrientation,
-                                    const typename GridEntity::EntityBasisType entityBasis,   
+                                    const typename GridEntity::EntityBasisType entityBasis,
                                     const typename GridType::IndexType gridXIdx,
                                     const typename GridType::IndexType gridYIdx )
 {
    typename GridType::CoordinatesType coordinates;
 
    coordinates.x() = begin.x() + ( gridXIdx * Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
-   coordinates.y() = begin.y() + ( gridYIdx * Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;        
+   coordinates.y() = begin.y() + ( gridYIdx * Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;
 
    if( coordinates.x() < end.x() &&
        coordinates.y() < end.y() )
@@ -287,9 +283,9 @@ struct EntityPointer : public EntityPointer< EntityType, Dimension - 1 >
 {
    __device__ EntityPointer( const EntityType* ptr )
       : EntityPointer< EntityType, Dimension - 1 >( ptr ), pointer( ptr )
-   {      
+   {
    }
-   
+
    const EntityType* pointer;
 };
 
@@ -298,10 +294,10 @@ struct EntityPointer< EntityType, 0 >
 {
    __device__ inline EntityPointer( const EntityType* ptr )
    :pointer( ptr )
-   {      
+   {
    }
 
-   
+
    const EntityType* pointer;
 };*/
 
@@ -309,7 +305,7 @@ struct EntityPointer< EntityType, 0 >
 struct TestEntity
 {
    typedef typename GridType::Cell::CoordinatesType CoordinatesType;
-   
+
    __device__ inline TestEntity( const GridType& grid,
                const typename GridType::Cell::CoordinatesType& coordinates,
                const typename GridType::Cell::EntityOrientationType& orientation,
@@ -320,19 +316,19 @@ struct TestEntity
       basis( basis ),
       entityIndex( 0 ),
       ptr( &grid )
-   {      
+   {
    };
-  
+
    const GridType& grid;
-   
-   EntityPointer< GridType, 2 > ptr; 
+
+   EntityPointer< GridType, 2 > ptr;
    //TestEntity< GridType > *entity1, *entity2, *entity3;
-   
-   typename GridType::IndexType entityIndex;      
-   
+
+   typename GridType::IndexType entityIndex;
+
    const typename GridType::Cell::CoordinatesType coordinates;
    const typename GridType::Cell::EntityOrientationType orientation;
-   const typename GridType::Cell::EntityBasisType basis;   
+   const typename GridType::Cell::EntityBasisType basis;
 };*/
 
 template< typename GridType,
@@ -340,7 +336,7 @@ template< typename GridType,
           typename DifferentialOperator,
           typename RightHandSide,
           typename MeshFunction >
-__global__ void 
+__global__ void
 heatEquationTemplatedCompact( const GridType* grid,
                               const DifferentialOperator* differentialOperator,
                               const RightHandSide* rightHandSide,
@@ -350,7 +346,7 @@ heatEquationTemplatedCompact( const GridType* grid,
                               const typename GridEntity::CoordinatesType begin,
                               const typename GridEntity::CoordinatesType end,
                               const typename GridEntity::EntityOrientationType entityOrientation,
-                              const typename GridEntity::EntityBasisType entityBasis,   
+                              const typename GridEntity::EntityBasisType entityBasis,
                               const typename GridType::IndexType gridXIdx,
                               const typename GridType::IndexType gridYIdx )
 {
@@ -359,8 +355,8 @@ heatEquationTemplatedCompact( const GridType* grid,
    typedef typename GridType::RealType RealType;
 
    coordinates.x() = begin.x() + ( gridXIdx * Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
-   coordinates.y() = begin.y() + ( gridYIdx * Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;     
-      
+   coordinates.y() = begin.y() + ( gridYIdx * Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;
+
    MeshFunction& u = *_u;
    MeshFunction& fu = *_fu;
 
@@ -368,11 +364,11 @@ heatEquationTemplatedCompact( const GridType* grid,
        coordinates.y() < end.y() )
    {
       GridEntity entity( *grid, coordinates, entityOrientation, entityBasis );
-      
+
       entity.refresh();
       if( ! entity.isBoundaryEntity() )
       {
-         fu( entity ) = 
+         fu( entity ) =
             ( *differentialOperator )( u, entity, time );
 
          typedef Functions::FunctionAdapter< GridType, RightHandSide > FunctionAdapter;
@@ -423,11 +419,11 @@ getExplicitUpdate( const RealType& time,
          fu[ i ] = 0.0; //u[ gridXSize + i ];
          fu[ ( gridYSize - 1 ) * gridXSize + i ] = 0.0; //u[ ( gridYSize - 2 ) * gridXSize + i ];
       }
-      
+
       /*typedef typename MeshType::Cell CellType;
       typedef typename CellType::CoordinatesType CoordinatesType;
       CoordinatesType coordinates( 0, 0 ), entityOrientation( 0,0 ), entityBasis( 0, 0 );*/
-      
+
       //CellType entity( mesh, coordinates, entityOrientation, entityBasis );
 
       for( IndexType j = 1; j < gridYSize - 1; j++ )
@@ -440,7 +436,7 @@ getExplicitUpdate( const RealType& time,
    }
    if( std::is_same< DeviceType, Devices::Cuda >::value )
    {
-      #ifdef HAVE_CUDA         
+      #ifdef HAVE_CUDA
       if( this->cudaKernelType == "pure-c" )
       {
          const IndexType gridXSize = mesh->getDimensions().x();
@@ -461,14 +457,14 @@ getExplicitUpdate( const RealType& time,
             std::cerr << "Laplace operator failed." << std::endl;
             return;
          }
-         
+
          boundaryConditionsKernel<<< cudaGridSize, cudaBlockSize >>>( uDofs->getData(), fuDofs->getData(), gridXSize, gridYSize );
          if( ( cudaErr = cudaGetLastError() ) != cudaSuccess )
          {
             std::cerr << "Setting of boundary conditions failed. " << cudaErr << std::endl;
             return;
          }
-         
+
       }
       if( this->cudaKernelType == "templated-compact" )
       {
@@ -488,7 +484,7 @@ getExplicitUpdate( const RealType& time,
          cudaBlocks.y = Cuda::getNumberOfBlocks( end.y() - begin.y() + 1, cudaBlockSize.y );
          const IndexType cudaXGrids = Cuda::getNumberOfGrids( cudaBlocks.x );
          const IndexType cudaYGrids = Cuda::getNumberOfGrids( cudaBlocks.y );
-         
+
          //std::cerr << "Setting boundary conditions..." << std::endl;
 
          Pointers::synchronizeSmartPointersOnDevice< Devices::Cuda >();
@@ -508,7 +504,7 @@ getExplicitUpdate( const RealType& time,
                     gridYIdx );
          cudaDeviceSynchronize();
          TNL_CHECK_CUDA_DEVICE;
-         
+
          //std::cerr << "Computing the heat equation ..." << std::endl;
          for( IndexType gridYIdx = 0; gridYIdx < cudaYGrids; gridYIdx ++ )
             for( IndexType gridXIdx = 0; gridXIdx < cudaXGrids; gridXIdx ++ )
@@ -526,7 +522,7 @@ getExplicitUpdate( const RealType& time,
                     cell.getBasis(),
                     gridXIdx,
                     gridYIdx );
-         cudaDeviceSynchronize();         
+         cudaDeviceSynchronize();
          TNL_CHECK_CUDA_DEVICE;
       }
       if( this->cudaKernelType == "templated" )
@@ -535,20 +531,20 @@ getExplicitUpdate( const RealType& time,
          //   this->cudaMesh = tnlCuda::passToDevice( &mesh );
          this->u->bind( mesh, *uDofs );
          this->fu->bind( mesh, *fuDofs );
-         //explicitUpdater.setGPUTransferTimer( this->gpuTransferTimer ); 
+         //explicitUpdater.setGPUTransferTimer( this->gpuTransferTimer );
          this->explicitUpdater.template update< typename Mesh::Cell, CommunicatorType >( time, tau, mesh, this->u, this->fu );
       }
       if( this->cudaKernelType == "tunning" )
       {
          if( std::is_same< DeviceType, Devices::Cuda >::value )
-         {   
+         {
             this->u->bind( mesh, *uDofs );
             this->fu->bind( mesh, *fuDofs );
-            
-            
+
+
             /*this->explicitUpdater.template update< typename Mesh::Cell >( time, tau, mesh, this->u, this->fu );
             return;*/
-            
+
 #ifdef WITH_TNL
             using ExplicitUpdaterType = TNL::Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionViewType, DifferentialOperator, BoundaryCondition, RightHandSide >;
             using Cell = typename MeshType::Cell;
@@ -558,12 +554,12 @@ getExplicitUpdate( const RealType& time,
                DifferentialOperator,
                BoundaryCondition,
                RightHandSide >;
-            
+
 #else
             //using CellConfig = Meshes::GridEntityNoStencilStorage;
             using CellConfig = Meshes::GridEntityCrossStencilStorage< 1 >;
             using ExplicitUpdaterType = ExplicitUpdater< Mesh, MeshFunctionViewType, DifferentialOperator, BoundaryCondition, RightHandSide >;
-            using Cell = typename MeshType::Cell; 
+            using Cell = typename MeshType::Cell;
             //using Cell = SimpleCell< Mesh, CellConfig >;
             using MeshTraverserType = Traverser< MeshType, Cell >;
             using UserData = ExplicitUpdaterTraverserUserData< RealType,
@@ -571,11 +567,11 @@ getExplicitUpdate( const RealType& time,
                DifferentialOperator,
                BoundaryCondition,
                RightHandSide >;
-#endif            
+#endif
 
             using InteriorEntitiesProcessor = typename ExplicitUpdaterType::TraverserInteriorEntitiesProcessor;
             using BoundaryEntitiesProcessor = typename ExplicitUpdaterType::TraverserBoundaryEntitiesProcessor;
-            
+
             UserData userData;
             userData.time = time;
             userData.differentialOperator = &this->differentialOperatorPointer.template getData< Devices::Cuda >();
@@ -586,7 +582,7 @@ getExplicitUpdate( const RealType& time,
 #ifndef WITH_TNL
             userData.real_u = uDofs->getData();
             userData.real_fu = fuDofs->getData();
-#endif                        
+#endif
             /*
             const IndexType gridXSize = mesh->getDimensions().x();
             const IndexType gridYSize = mesh->getDimensions().y();
@@ -612,7 +608,7 @@ getExplicitUpdate( const RealType& time,
                std::cerr << "Laplace operator failed." << std::endl;
                return;
             }
-            
+
             meshTraverser.template processBoundaryEntities< BoundaryEntitiesProcessor >
                                                           ( mesh,
                                                             userData );
@@ -622,17 +618,17 @@ getExplicitUpdate( const RealType& time,
                ( &mesh.template getData< Devices::Cuda >(),
                 userData );
                 //&userDataPtr.template modifyData< Devices::Cuda >() );
-            // */ 
+            // */
             if( ( cudaErr = cudaGetLastError() ) != cudaSuccess )
             {
                std::cerr << "Setting of boundary conditions failed. " << cudaErr << std::endl;
                return;
             }
 
-            
-            
+
+
          }
-      }      
+      }
       #endif
    }
 }
@@ -642,7 +638,7 @@ template< typename Mesh,
           typename RightHandSide,
           typename DifferentialOperator,
           typename Communicator >
-void 
+void
 HeatEquationBenchmarkProblem< Mesh, BoundaryCondition, RightHandSide, DifferentialOperator, Communicator >::
 applyBoundaryConditions( const RealType& time,
                             DofVectorPointer& uDofs )
@@ -659,7 +655,7 @@ applyBoundaryConditions( const RealType& time,
       this->bindDofs( uDofs );
       this->explicitUpdater.template applyBoundaryConditions< typename Mesh::Cell >( this->getMesh(), time, this->u );
       return;*/
-      
+
 #ifdef HAVE_CUDA
 /*
 #ifdef WITH_TNL
@@ -671,12 +667,12 @@ applyBoundaryConditions( const RealType& time,
          DifferentialOperator,
          BoundaryCondition,
          RightHandSide >;
-            
+
 #else
       //using CellConfig = Meshes::GridEntityNoStencilStorage;
       using CellConfig = Meshes::GridEntityCrossStencilStorage< 1 >;
       using ExplicitUpdaterType = ExplicitUpdater< Mesh, MeshFunctionType, DifferentialOperator, BoundaryCondition, RightHandSide >;
-      //using Cell = typename MeshType::Cell; 
+      //using Cell = typename MeshType::Cell;
       using Cell = SimpleCell< Mesh, CellConfig >;
       using MeshTraverserType = Traverser< MeshType, Cell >;
       using UserData = ExplicitUpdaterTraverserUserData< RealType,
@@ -684,7 +680,7 @@ applyBoundaryConditions( const RealType& time,
          DifferentialOperator,
          BoundaryCondition,
          RightHandSide >;
-#endif            
+#endif
          using InteriorEntitiesProcessor = typename ExplicitUpdaterType::TraverserInteriorEntitiesProcessor;
          using BoundaryEntitiesProcessor = typename ExplicitUpdaterType::TraverserBoundaryEntitiesProcessor;
 
@@ -709,7 +705,7 @@ applyBoundaryConditions( const RealType& time,
          ( &mesh.template getData< Devices::Cuda >(),
           userData );
           //&userDataPtr.template modifyData< Devices::Cuda >() );
-      // */ 
+      // */
       int cudaErr;
       if( ( cudaErr = ::cudaGetLastError() ) != cudaSuccess )
       {
diff --git a/src/Benchmarks/HeatEquation/run-HeatEquationBenchmark b/src/Benchmarks/HeatEquation/run-HeatEquationBenchmark
index 7a8707fb84905147e482e054865071799d57fcb0..29796fa00d2a8d68807447374ed9e7e87371f854 100644
--- a/src/Benchmarks/HeatEquation/run-HeatEquationBenchmark
+++ b/src/Benchmarks/HeatEquation/run-HeatEquationBenchmark
@@ -9,11 +9,9 @@ tnl-grid-setup --dimensions 2 \
                --size-y 100
 
 tnl-init --test-function sin-wave \
-         --output-file init.tnl
+         --output-file init.vti
 ./HeatEquationBenchmark --time-discretisation explicit \
               --boundary-conditions-constant 0 \
               --discrete-solver merson \
               --snapshot-period 0.01 \
               --final-time 1.0
-
-tnl-view --mesh mesh.tnl --input-files *tnl     
diff --git a/src/Benchmarks/HeatEquation/tnl-benchmark-simple-heat-equation.h b/src/Benchmarks/HeatEquation/tnl-benchmark-simple-heat-equation.h
index 2d59ff2588138f2da7f4846b4cfe58b236e0bbac..57ddb3ec11deaef3675a24bf5931c10b0d388faa 100644
--- a/src/Benchmarks/HeatEquation/tnl-benchmark-simple-heat-equation.h
+++ b/src/Benchmarks/HeatEquation/tnl-benchmark-simple-heat-equation.h
@@ -329,7 +329,7 @@ bool solveHeatEquationCuda( const Config::ParameterContainer& parameters,
    vecU.bind( cuda_u, gridXSize * gridYSize );
    Functions::MeshFunctionView< GridType > meshFunction;
    meshFunction.bind( gridPointer, vecU );
-   meshFunction.save( "simple-heat-equation-initial.tnl" );
+   meshFunction.write( "u", "simple-heat-equation-initial.vti" );
 
    Containers::VectorView< Real, Devices::Cuda, Index > vecAux;
    vecAux.bind( cuda_aux, gridXSize * gridYSize );
@@ -416,7 +416,7 @@ bool solveHeatEquationCuda( const Config::ParameterContainer& parameters,
    if( verbose )
      std::cout << "Saving result..." << std::endl;
 
-   meshFunction.save( "simple-heat-equation-result.tnl" );
+   meshFunction.write( "u", "simple-heat-equation-result.vti" );
 
    /***
     * Freeing allocated memory
@@ -556,7 +556,7 @@ bool solveHeatEquationHost( const Config::ParameterContainer& parameters,
    vecU.bind( u, gridXSize * gridYSize );
    Functions::MeshFunctionView< GridType > meshFunction;
    meshFunction.bind( gridPointer, vecU );
-   meshFunction.save( "simple-heat-equation-result.tnl" );
+   meshFunction.write( "u", "simple-heat-equation-result.vti" );
 
    /***
     * Freeing allocated memory
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h
index 3cc6388497c062865a812cca629c57d45d715d09..e4d74d00df86d44d95498af0fcc8b5baa52c04b7 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h
@@ -14,7 +14,7 @@
  *                                                                         *
  ***************************************************************************/
 
-#pragma once 
+#pragma once
 
 #include <core/mfilename.h>
 #include <matrices/tnlMatrixSetter.h>
@@ -123,7 +123,7 @@ setInitialCondition( const Config::ParameterContainer& parameters,
 {
   this->bindDofs( mesh, dofs );
   const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
-  if( ! this->solution.boundLoad( initialConditionFile ) )
+  if( ! Functions::readMeshFunction( this->solution, "u", initialConditionFile ) )
   {
     std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." <<std::endl;
     return false;
@@ -135,7 +135,7 @@ template< typename Mesh,
 		  typename HamiltonJacobi,
 		  typename BoundaryCondition,
 		  typename RightHandSide>
-bool 
+bool
 HamiltonJacobiProblem< Mesh,HamiltonJacobi,BoundaryCondition,RightHandSide >::
 makeSnapshot( const RealType& time,
               const IndexType& step,
@@ -147,8 +147,7 @@ makeSnapshot( const RealType& time,
 
    String fileName;
    FileNameBaseNumberEnding( "u-", step, 5, ".tnl", fileName );
-   if( ! this->solution.save( fileName ) )
-	   return false;
+   this->solution.write( "u", fileName );
 
    return true;
 }
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h
index 3b3a21eefdeed8f706dc7a2424fc353538305915..95bbb30fa9f003b66d164825e346e98ff40a153e 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h
@@ -4,7 +4,7 @@
  * and open the template in the editor.
  */
 
-/* 
+/*
  * File:   tnl-direct-eikonal-solver.h
  * Author: oberhuber
  *
@@ -36,9 +36,6 @@ class DirectEikonalSolverConfig
       {
          config.addDelimiter( "Direct eikonal equation solver settings:" );
          config.addRequiredEntry< String >( "input-file", "Input file." );
-         config.addEntry< String >( "distributed-grid-io-type", "Choose Distributed Grid IO Type", "MpiIO");
-            config.addEntryEnum< String >( "LocalCopy" );
-            config.addEntryEnum< String >( "MpiIO" );
       };
 };
 
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem.h
index 26d96d1218ba22aa8d421111bb25e3f3c6a4e326..4706e1ab5f221773d6ebcde66459e58ce18a3d16 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem.h
@@ -4,7 +4,7 @@
  * and open the template in the editor.
  */
 
-/* 
+/*
  * File:   tnlFastSweepingMethod.h
  * Author: oberhuber
  *
@@ -18,7 +18,6 @@
 #include <TNL/Pointers/SharedPointer.h>
 #include "tnlFastSweepingMethod.h"
 
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
 
 template< typename Mesh,
@@ -34,7 +33,7 @@ class tnlDirectEikonalProblem
                                   Index  >
 {
    public:
-   
+
       typedef Real RealType;
       typedef typename Mesh::DeviceType DeviceType;
       typedef Index IndexType;
@@ -48,9 +47,9 @@ class tnlDirectEikonalProblem
       using typename BaseType::DofVectorType;
       using MeshPointer = Pointers::SharedPointer< MeshType >;
       using DofVectorPointer = Pointers::SharedPointer< DofVectorType >;
-      
+
       typedef Communicator CommunicatorType;
-      
+
       static constexpr bool isTimeDependent() { return false; };
 
       static String getType();
@@ -59,7 +58,7 @@ class tnlDirectEikonalProblem
 
       void writeProlog( Logger& logger,
                         const Config::ParameterContainer& parameters ) const;
-      
+
       bool writeEpilog( Logger& logger );
 
 
@@ -69,28 +68,26 @@ class tnlDirectEikonalProblem
       IndexType getDofs() const;
 
       void bindDofs( DofVectorPointer& dofs );
-      
+
       bool setInitialCondition( const Config::ParameterContainer& parameters,
                                 DofVectorPointer& dofs );
-      
+
       bool makeSnapshot( );
 
       bool solve( DofVectorPointer& dosf );
 
 
       protected:
-         
+
          using DistributedMeshSynchronizerType = Meshes::DistributedMeshes::DistributedMeshSynchronizer< Meshes::DistributedMeshes::DistributedMesh< typename MeshFunctionType::MeshType > >;
          DistributedMeshSynchronizerType synchronizer;
 
          MeshFunctionPointer u;
-         
+
          MeshFunctionPointer initialData;
-         
+
          AnisotropyPointer anisotropy;
 
-         Meshes::DistributedMeshes::DistrGridIOTypes distributedIOType;
-         
    };
 
 #include "tnlDirectEikonalProblem_impl.h"
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem_impl.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem_impl.h
index 3e1ea757b9dd656de17a5fe224695b99e3791e6d..c21d3deb309d01d842d04288efc6c57316786747 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem_impl.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlDirectEikonalProblem_impl.h
@@ -79,11 +79,6 @@ tnlDirectEikonalProblem< Mesh, Communicator, Anisotropy, Real, Index >::
 setup( const Config::ParameterContainer& parameters,
        const String& prefix )
 {
-  String param=parameters.getParameter< String >( "distributed-grid-io-type" );
-   if(param=="MpiIO")
-        distributedIOType=Meshes::DistributedMeshes::MpiIO;
-   if(param=="LocalCopy")
-        distributedIOType=Meshes::DistributedMeshes::LocalCopy;
    return true;
 }
 
@@ -121,26 +116,23 @@ tnlDirectEikonalProblem< Mesh, Communicator, Anisotropy, Real, Index >::
 setInitialCondition( const Config::ParameterContainer& parameters,
                      DofVectorPointer& dofs )
 {
-  this->bindDofs( dofs );
-  String inputFile = parameters.getParameter< String >( "input-file" );
-  this->initialData->setMesh( this->getMesh() );
-  if( CommunicatorType::isDistributed() )
-  {
-    std::cout<<"Nodes Distribution: " << initialData->getMesh().getDistributedMesh()->printProcessDistr() << std::endl;
-    if(distributedIOType==Meshes::DistributedMeshes::MpiIO)
-      Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::MpiIO> ::load(inputFile, *initialData );
-    if(distributedIOType==Meshes::DistributedMeshes::LocalCopy)
-      Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::LocalCopy> ::load(inputFile, *initialData );
-    synchronizer.setDistributedGrid( initialData->getMesh().getDistributedMesh() );
-    synchronizer.synchronize( *initialData );
-  }
-  else
-  {
-      try
+   this->bindDofs( dofs );
+   String inputFile = parameters.getParameter< String >( "input-file" );
+   this->initialData->setMesh( this->getMesh() );
+   if( CommunicatorType::isDistributed() )
+   {
+      std::cout<<"Nodes Distribution: " << this->distributedMeshPointer->printProcessDistr() << std::endl;
+      if( ! Functions::readDistributedMeshFunction( *this->distributedMeshPointer, *this->initialData, "u", inputFile ) )
       {
-          this->initialData->boundLoad( inputFile );
+         std::cerr << "I am not able to load the initial condition from the file " << inputFile << "." << std::endl;
+         return false;
       }
-      catch(...)
+      synchronizer.setDistributedGrid( &this->distributedMeshPointer.getData() );
+      synchronizer.synchronize( *initialData );
+   }
+   else
+   {
+      if( ! Functions::readMeshFunction( *this->initialData, "u", inputFile ) )
       {
          std::cerr << "I am not able to load the initial condition from the file " << inputFile << "." << std::endl;
          return false;
@@ -164,17 +156,16 @@ makeSnapshot(  )
 
    FileName fileName;
    fileName.setFileNameBase( "u-" );
-   fileName.setExtension( "tnl" );
 
    if(CommunicatorType::isDistributed())
    {
-      if(distributedIOType==Meshes::DistributedMeshes::MpiIO)
-        Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::MpiIO> ::save(fileName.getFileName(), *u );
-      if(distributedIOType==Meshes::DistributedMeshes::LocalCopy)
-        Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::LocalCopy> ::save(fileName.getFileName(), *u );
+      fileName.setExtension( "pvti" );
+      Functions::writeDistributedMeshFunction( *this->distributedMeshPointer, *this->initialData, "u", fileName.getFileName() );
+   }
+   else {
+      fileName.setExtension( "vti" );
+      this->u->write( "u", fileName.getFileName() );
    }
-   else
-      this->u->save( fileName.getFileName() );
    return true;
 }
 
@@ -189,7 +180,7 @@ tnlDirectEikonalProblem< Mesh, Communicator, Anisotropy, Real, Index >::
 solve( DofVectorPointer& dofs )
 {
    FastSweepingMethod< MeshType, Communicator,AnisotropyType > fsm;
-   fsm.solve( this->getMesh(), u, anisotropy, initialData );
+   fsm.solve( *this->getDistributedMesh(), this->getMesh(), u, anisotropy, initialData );
 
    makeSnapshot();
    return true;
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod.h
index 2f933cbecd67398cd16b5ae65a9c78e5880942fd..2cc5d407313c6d287bcb144b9664cb90ce0e64b8 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod.h
@@ -21,7 +21,7 @@ template< typename Mesh,
         typename Communicator,
         typename Anisotropy = Functions::Analytic::Constant< Mesh::getMeshDimension(), typename Mesh::RealType > >
 class FastSweepingMethod
-{   
+{
 };
 
 template< typename Real,
@@ -33,9 +33,9 @@ class FastSweepingMethod< Meshes::Grid< 1, Real, Device, Index >, Communicator,
 : public tnlDirectEikonalMethodsBase< Meshes::Grid< 1, Real, Device, Index > >
 {
   //static_assert(  std::is_same< Device, TNL::Devices::Host >::value, "The fast sweeping method works only on CPU." );
-  
+
   public:
-    
+
     typedef Meshes::Grid< 1, Real, Device, Index > MeshType;
     typedef Real RealType;
     typedef Device DeviceType;
@@ -44,28 +44,29 @@ class FastSweepingMethod< Meshes::Grid< 1, Real, Device, Index >, Communicator,
     typedef tnlDirectEikonalMethodsBase< Meshes::Grid< 1, Real, Device, Index > > BaseType;
     using MeshPointer = Pointers::SharedPointer<  MeshType >;
     using AnisotropyPointer = Pointers::SharedPointer< AnisotropyType, DeviceType >;
-    
-    
+
+
     using typename BaseType::InterfaceMapType;
     using typename BaseType::MeshFunctionType;
     using typename BaseType::InterfaceMapPointer;
     using typename BaseType::MeshFunctionPointer;
-   
-    
+
+
     FastSweepingMethod();
-    
+
     const IndexType& getMaxIterations() const;
-    
+
     void setMaxIterations( const IndexType& maxIterations );
-    
-    void solve( const MeshPointer& mesh,
+
+    void solve( const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh,
+            const MeshPointer& mesh,
             MeshFunctionPointer& Aux,
             const AnisotropyPointer& anisotropy,
             MeshFunctionPointer& u );
-    
-    
+
+
     protected:
-      
+
       const IndexType maxIterations;
 };
 
@@ -78,9 +79,9 @@ class FastSweepingMethod< Meshes::Grid< 2, Real, Device, Index >, Communicator,
 : public tnlDirectEikonalMethodsBase< Meshes::Grid< 2, Real, Device, Index > >
 {
   //static_assert(  std::is_same< Device, TNL::Devices::Host >::value, "The fast sweeping method works only on CPU." );
-  
+
   public:
-    
+
     typedef Meshes::Grid< 2, Real, Device, Index > MeshType;
     typedef Real RealType;
     typedef Device DeviceType;
@@ -89,43 +90,42 @@ class FastSweepingMethod< Meshes::Grid< 2, Real, Device, Index >, Communicator,
     typedef tnlDirectEikonalMethodsBase< Meshes::Grid< 2, Real, Device, Index > > BaseType;
     typedef Communicator CommunicatorType;
     typedef Containers::StaticVector< 2, Index > StaticVector;
-    
+
     using MeshPointer = Pointers::SharedPointer<  MeshType >;
     using AnisotropyPointer = Pointers::SharedPointer< AnisotropyType, DeviceType >;
     using MPI = Communicators::MpiCommunicator;
-    
+
     using typename BaseType::InterfaceMapType;
     using typename BaseType::MeshFunctionType;
     using typename BaseType::InterfaceMapPointer;
     using typename BaseType::MeshFunctionPointer;
     using typename BaseType::ArrayContainer;
-        
+
     FastSweepingMethod();
-    
+
     const IndexType& getMaxIterations() const;
-    
+
     void setMaxIterations( const IndexType& maxIterations );
-    
-    void solve( const MeshPointer& mesh,
+
+    void solve( const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh,
+            const MeshPointer& mesh,
             MeshFunctionPointer& Aux,
             const AnisotropyPointer& anisotropy,
             const MeshFunctionPointer& u );
-    
+
     protected:
-      
+
       using DistributedMeshSynchronizerType = Meshes::DistributedMeshes::DistributedMeshSynchronizer< Meshes::DistributedMeshes::DistributedMesh< typename MeshFunctionType::MeshType > >;
       DistributedMeshSynchronizerType synchronizer;
 
       const IndexType maxIterations;
-    
-      void setOverlaps( StaticVector& vecLowerOverlaps, StaticVector& vecUpperOverlaps,
-              const MeshPointer& mesh);
-      
-      bool goThroughSweep( const StaticVector boundsFrom, const StaticVector boundsTo, 
+
+      bool goThroughSweep( const StaticVector boundsFrom, const StaticVector boundsTo,
               MeshFunctionType& aux, const InterfaceMapType& interfaceMap,
               const AnisotropyPointer& anisotropy );
-      
-      void getInfoFromNeighbours( int& calculated, int& calculateAgain, const MeshPointer& mesh );
+
+      void getInfoFromNeighbours( int& calculated, int& calculateAgain,
+                                  const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh );
 };
 
 template< typename Real,
@@ -137,9 +137,9 @@ class FastSweepingMethod< Meshes::Grid< 3, Real, Device, Index >, Communicator,
 : public tnlDirectEikonalMethodsBase< Meshes::Grid< 3, Real, Device, Index > >
 {
   //static_assert(  std::is_same< Device, TNL::Devices::Host >::value, "The fast sweeping method works only on CPU." );
-  
+
   public:
-    
+
     typedef Meshes::Grid< 3, Real, Device, Index > MeshType;
     typedef Real RealType;
     typedef Device DeviceType;
@@ -148,45 +148,44 @@ class FastSweepingMethod< Meshes::Grid< 3, Real, Device, Index >, Communicator,
     typedef tnlDirectEikonalMethodsBase< Meshes::Grid< 3, Real, Device, Index > > BaseType;
     typedef Communicator CommunicatorType;
     typedef Containers::StaticVector< 3, Index > StaticVector;
-    
+
     using MeshPointer = Pointers::SharedPointer<  MeshType >;
     using AnisotropyPointer = Pointers::SharedPointer< AnisotropyType, DeviceType >;
     using MPI = Communicators::MpiCommunicator;
-    
+
     using typename BaseType::InterfaceMapType;
     using typename BaseType::MeshFunctionType;
     using typename BaseType::InterfaceMapPointer;
-    using typename BaseType::MeshFunctionPointer;   
+    using typename BaseType::MeshFunctionPointer;
     using typename BaseType::ArrayContainer;
-    
-    
+
+
     FastSweepingMethod();
-    
+
     const IndexType& getMaxIterations() const;
-    
+
     void setMaxIterations( const IndexType& maxIterations );
-    
-    void solve( const MeshPointer& mesh,
+
+    void solve( const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh,
+            const MeshPointer& mesh,
             MeshFunctionPointer& Aux,
             const AnisotropyPointer& anisotropy,
             MeshFunctionPointer& u );
-    
-    
+
+
     protected:
-      
+
       using DistributedMeshSynchronizerType = Meshes::DistributedMeshes::DistributedMeshSynchronizer< Meshes::DistributedMeshes::DistributedMesh< typename MeshFunctionType::MeshType > >;
       DistributedMeshSynchronizerType synchronizer;
 
       const IndexType maxIterations;
-      
-      void setOverlaps( StaticVector& vecLowerOverlaps, StaticVector& vecUpperOverlaps,
-              const MeshPointer& mesh);
-      
-      bool goThroughSweep( const StaticVector boundsFrom, const StaticVector boundsTo, 
+
+      bool goThroughSweep( const StaticVector boundsFrom, const StaticVector boundsTo,
               MeshFunctionType& aux, const InterfaceMapType& interfaceMap,
               const AnisotropyPointer& anisotropy );
-      
-      void getInfoFromNeighbours( int& calculated, int& calculateAgain, const MeshPointer& mesh );
+
+      void getInfoFromNeighbours( int& calculated, int& calculateAgain,
+                                  const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh );
 };
 
 
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod1D_impl.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod1D_impl.h
index f41d04ce8e3731037636134e4f4e74f833a6e2f4..e1dbd566abf3912c2b682aea157ff02f8b9fd538 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod1D_impl.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod1D_impl.h
@@ -4,7 +4,7 @@
  * and open the template in the editor.
  */
 
-/* 
+/*
  * File:   tnlFastSweepingMethod2D_impl.h
  * Author: oberhuber
  *
@@ -24,7 +24,7 @@ FastSweepingMethod< Meshes::Grid< 1, Real, Device, Index >, Communicator, Anisot
 FastSweepingMethod()
 : maxIterations( 1 )
 {
-   
+
 }
 
 template< typename Real,
@@ -36,7 +36,7 @@ const Index&
 FastSweepingMethod< Meshes::Grid< 1, Real, Device, Index >, Communicator, Anisotropy >::
 getMaxIterations() const
 {
-   
+
 }
 
 template< typename Real,
@@ -48,7 +48,7 @@ void
 FastSweepingMethod< Meshes::Grid< 1, Real, Device, Index >, Communicator, Anisotropy >::
 setMaxIterations( const IndexType& maxIterations )
 {
-   
+
 }
 
 template< typename Real,
@@ -58,22 +58,23 @@ template< typename Real,
           typename Anisotropy >
 void
 FastSweepingMethod< Meshes::Grid< 1, Real, Device, Index >, Communicator, Anisotropy >::
-solve( const MeshPointer& mesh,
-        MeshFunctionPointer& Aux,
+solve( const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh,
+       const MeshPointer& mesh,
+       MeshFunctionPointer& Aux,
        const AnisotropyPointer& anisotropy,
        MeshFunctionPointer& u )
-{   
+{
    MeshFunctionPointer auxPtr;
    InterfaceMapPointer interfaceMapPtr;
    auxPtr->setMesh( mesh );
    interfaceMapPtr->setMesh( mesh );
    std::cout << "Initiating the interface cells ..." << std::endl;
    BaseType::initInterface( u, auxPtr, interfaceMapPtr );
-        
-   auxPtr->save( "aux-ini.tnl" );
+
+   auxPtr->write( "aux", "aux-ini.vti" );
 
    typename MeshType::Cell cell( *mesh );
-   
+
    IndexType iteration( 0 );
    InterfaceMapType interfaceMap = *interfaceMapPtr;
    MeshFunctionType aux = *auxPtr;
@@ -90,13 +91,13 @@ solve( const MeshPointer& mesh,
                    this->updateCell( aux, cell );
              }
 
-         
+
         for( cell.getCoordinates().x() = mesh->getDimensions().x() - 1;
              cell.getCoordinates().x() >= 0 ;
-             cell.getCoordinates().x()-- )		
+             cell.getCoordinates().x()-- )
            {
               cell.refresh();
-              if( ! interfaceMap( cell ) )            
+              if( ! interfaceMap( cell ) )
                  this->updateCell( aux, cell );
            }
       }
@@ -108,46 +109,46 @@ solve( const MeshPointer& mesh,
           int numBlocksX = Cuda::getNumberOfBlocks( mesh->getDimensions().x(), cudaBlockSize );
           dim3 blockSize( cudaBlockSize );
           dim3 gridSize( numBlocksX );
-          
+
           BaseType ptr;
-          
-          
-          
+
+
+
           bool* BlockIter = (bool*)malloc( ( numBlocksX ) * sizeof( bool ) );
-          
+
           bool *BlockIterDevice;
           cudaMalloc(&BlockIterDevice, ( numBlocksX ) * sizeof( bool ) );
-          
+
           while( BlockIter[ 0 ] )
           {
            for( int i = 0; i < numBlocksX; i++ )
                 BlockIter[ i ] = false;
            cudaMemcpy(BlockIterDevice, BlockIter, ( numBlocksX ) * sizeof( bool ), cudaMemcpyHostToDevice);
-                       
+
             CudaUpdateCellCaller<<< gridSize, blockSize >>>( ptr,
                                                              interfaceMapPtr.template getData< Device >(),
                                                              auxPtr.template modifyData< Device>(),
                                                              BlockIterDevice );
             cudaMemcpy(BlockIter, BlockIterDevice, ( numBlocksX ) * sizeof( bool ), cudaMemcpyDeviceToHost);
-                                   
+
             for( int i = 1; i < numBlocksX; i++ )
                 BlockIter[ 0 ] = BlockIter[ 0 ] || BlockIter[ i ];
-            
+
           }
           delete[] BlockIter;
           cudaFree( BlockIterDevice );
           cudaDeviceSynchronize();
-          
+
           TNL_CHECK_CUDA_DEVICE;
-              
+
           aux = *auxPtr;
           interfaceMap = *interfaceMapPtr;
 #endif
       }
       iteration++;
    }
-   
-   aux.save("aux-final.tnl");
+
+   aux.write( "aux", "aux-final.vti" );
 }
 
 #ifdef HAVE_CUDA
@@ -160,45 +161,45 @@ __global__ void CudaUpdateCellCaller( tnlDirectEikonalMethodsBase< Meshes::Grid<
     int thri = threadIdx.x;
     int blIdx = blockIdx.x;
     int i = thri + blockDim.x*blIdx;
-    
+
     __shared__ volatile bool changed[16];
     changed[ thri ] = false;
-    
+
     if( thri == 0 )
         changed[ 0 ] = true;
-    
+
     const Meshes::Grid< 1, Real, Device, Index >& mesh = interfaceMap.template getMesh< Devices::Cuda >();
     __shared__ Real h;
     if( thri == 1 )
     {
         h = mesh.getSpaceSteps().x();
     }
-    
+
     __shared__ volatile Real sArray[ 18 ];
     sArray[thri] = std::numeric_limits<  Real >::max();
-    
+
     //filling sArray edges
-    int dimX = mesh.getDimensions().x(); 
+    int dimX = mesh.getDimensions().x();
     __shared__ volatile int numOfBlockx;
     __shared__ int xkolik;
     if( thri == 0 )
     {
         xkolik = blockDim.x + 1;
         numOfBlockx = dimX/blockDim.x + ((dimX%blockDim.x != 0) ? 1:0);
-    
+
         if( numOfBlockx - 1 == blIdx )
             xkolik = dimX - (blIdx)*blockDim.x+1;
     }
     __syncthreads();
-    
+
     if( thri == 0 )
-    {        
+    {
         if( dimX > (blIdx+1) * blockDim.x )
             sArray[xkolik] = aux[ blIdx*blockDim.x - 1 + xkolik ];
         else
             sArray[xkolik] = std::numeric_limits< Real >::max();
     }
-    
+
     if( thri == 1 )
     {
         if( blIdx != 0 )
@@ -206,20 +207,20 @@ __global__ void CudaUpdateCellCaller( tnlDirectEikonalMethodsBase< Meshes::Grid<
         else
             sArray[0] = std::numeric_limits< Real >::max();
     }
-    
-        
+
+
     if( i < mesh.getDimensions().x() )
-    {    
+    {
         sArray[thri+1] = aux[ i ];
     }
-    __syncthreads();  
+    __syncthreads();
 
     while( changed[ 0 ] )
     {
         __syncthreads();
-        
+
         changed[ thri ] = false;
-        
+
     //calculation of update cell
         if( i < mesh.getDimensions().x() )
         {
@@ -229,9 +230,9 @@ __global__ void CudaUpdateCellCaller( tnlDirectEikonalMethodsBase< Meshes::Grid<
             }
         }
         __syncthreads();
-        
-        
-        
+
+
+
     //pyramid reduction
         if( thri < 8 ) changed[ thri ] = changed[ thri ] || changed[ thri + 8 ];
         if( thri < 4 ) changed[ thri ] = changed[ thri ] || changed[ thri + 4 ];
@@ -243,7 +244,7 @@ __global__ void CudaUpdateCellCaller( tnlDirectEikonalMethodsBase< Meshes::Grid<
             BlockIterDevice[ blIdx ] = true;
         __syncthreads();
     }
-  
+
     if( i < mesh.getDimensions().x()  && (!interfaceMap[ i ]) )
         aux[ i ] = sArray[ thri + 1 ];
 }
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod2D_impl.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod2D_impl.h
index 14a52ec40cb5349b741e2880a9474b5ff2b210d9..f4822b6ca72d605665663fc5be1bd29f1059ab5d 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod2D_impl.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod2D_impl.h
@@ -58,7 +58,8 @@ template< typename Real,
         typename Anisotropy >
 void
 FastSweepingMethod< Meshes::Grid< 2, Real, Device, Index >, Communicator, Anisotropy >::
-solve( const MeshPointer& mesh,
+solve( const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh,
+       const MeshPointer& mesh,
         MeshFunctionPointer& Aux,
         const AnisotropyPointer& anisotropy,
         const MeshFunctionPointer& u )
@@ -69,20 +70,26 @@ solve( const MeshPointer& mesh,
   interfaceMapPtr->setMesh( mesh );
 
   // Setting overlaps ( WITHOUT MPI SHOULD BE 0 )
-  StaticVector vecLowerOverlaps, vecUpperOverlaps;
-  setOverlaps( vecLowerOverlaps, vecUpperOverlaps, mesh );
+  StaticVector vecLowerOverlaps = 0;
+  StaticVector vecUpperOverlaps = 0;
+  if( CommunicatorType::isDistributed() )
+  {
+    //Distributed mesh for MPI overlaps (without MPI null pointer)
+    vecLowerOverlaps = distributedMesh.getLowerOverlap();
+    vecUpperOverlaps = distributedMesh.getUpperOverlap();
+  }
 
   std::cout << "Initiating the interface cells ..." << std::endl;
   BaseType::initInterface( u, auxPtr, interfaceMapPtr, vecLowerOverlaps, vecUpperOverlaps );
 
-  //auxPtr->save( "aux-ini.tnl" );
+  //auxPtr->write( "aux", "aux-ini.vti" );
 
   typename MeshType::Cell cell( *mesh );
 
   IndexType iteration( 0 );
   InterfaceMapType interfaceMap = *interfaceMapPtr;
   MeshFunctionType aux = *auxPtr;
-  synchronizer.setDistributedGrid( aux.getMesh().getDistributedMesh() );
+  synchronizer.setDistributedGrid( &distributedMesh );
   synchronizer.synchronize( aux ); //synchronize initialized overlaps
 
   std::cout << "Calculating the values ..." << std::endl;
@@ -207,8 +214,8 @@ solve( const MeshPointer& mesh,
          this->getNeighbours( BlockIterHost, numBlocksX, numBlocksY );
 
          //std::cout<<std::endl;
-         //String s( "aux-"+ std::to_string(numWhile) + ".tnl");
-         //aux.save( s );
+         //String s( "aux-"+ std::to_string(numWhile) + ".vti");
+         //aux.write( "aux", s );
          }
          if( numWhile == 1 ){
          auxPtr = helpFunc;
@@ -223,19 +230,19 @@ solve( const MeshPointer& mesh,
         boundsFrom[1] = vecLowerOverlaps[1]; boundsTo[1] = mesh->getDimensions().y() - vecUpperOverlaps[1];
         boundsFrom[0] = vecLowerOverlaps[0]; boundsTo[0] = mesh->getDimensions().x() - vecUpperOverlaps[0];
         calculatedBefore = goThroughSweep( boundsFrom, boundsTo, aux, interfaceMap, anisotropy );
-        //aux.save("aux-1.tnl");
+        //aux.write( "aux", "aux-1.vti" );
 
     // UP and LEFL
         boundsFrom[1] = vecLowerOverlaps[1]; boundsTo[1] = mesh->getDimensions().y() - vecUpperOverlaps[1];
         boundsFrom[0] = mesh->getDimensions().x() - 1 - vecUpperOverlaps[0]; boundsTo[0] = -1 + vecLowerOverlaps[0];
         goThroughSweep( boundsFrom, boundsTo, aux, interfaceMap, anisotropy );
-        //aux.save( "aux-2.tnl" );
+        //aux.write( "aux", "aux-2.vti" );
 
     // DOWN and RIGHT
         boundsFrom[1] = mesh->getDimensions().y() - 1 - vecUpperOverlaps[1]; boundsTo[1] = - 1 + vecLowerOverlaps[1];
         boundsFrom[0] = vecLowerOverlaps[0]; boundsTo[0] = mesh->getDimensions().x() - vecUpperOverlaps[0];
         goThroughSweep( boundsFrom, boundsTo, aux, interfaceMap, anisotropy );
-        //aux.save( "aux-3.tnl" );
+        //aux.write( "aux", "aux-3.vti" );
 
     // DOWN and LEFT
         boundsFrom[1] = mesh->getDimensions().y() - 1 - vecUpperOverlaps[1]; boundsTo[1] = - 1 + vecLowerOverlaps[1];
@@ -368,7 +375,7 @@ solve( const MeshPointer& mesh,
 /**----------------------MPI-TO-DO---------------------------------------------**/
 #ifdef HAVE_MPI
       if( CommunicatorType::isDistributed() ){
-        getInfoFromNeighbours( calculatedBefore, calculateMPIAgain, mesh );
+        getInfoFromNeighbours( calculatedBefore, calculateMPIAgain, distributedMesh );
 
         synchronizer.synchronize( aux );
       }
@@ -384,28 +391,6 @@ solve( const MeshPointer& mesh,
 
 // PROTECTED FUNCTIONS:
 
-template< typename Real, typename Device, typename Index,
-          typename Communicator, typename Anisotropy >
-void
-FastSweepingMethod< Meshes::Grid< 2, Real, Device, Index >, Communicator, Anisotropy >::
-setOverlaps( StaticVector& vecLowerOverlaps, StaticVector& vecUpperOverlaps,
-              const MeshPointer& mesh)
-{
-  vecLowerOverlaps[0] = 0; vecLowerOverlaps[1] = 0; vecUpperOverlaps[0] = 0; vecUpperOverlaps[1] = 0;
-#ifdef HAVE_MPI
-  if( CommunicatorType::isDistributed() ) //If we started solver with MPI
-  {
-    //Distributed mesh for MPI overlaps (without MPI null pointer)
-    const Meshes::DistributedMeshes::DistributedMesh< MeshType >* meshPom = mesh->getDistributedMesh();
-    vecLowerOverlaps = meshPom->getLowerOverlap();
-    vecUpperOverlaps = meshPom->getUpperOverlap();
-  }
-#endif
-}
-
-
-
-
 template< typename Real, typename Device, typename Index,
           typename Communicator, typename Anisotropy >
 bool
@@ -448,14 +433,13 @@ template< typename Real, typename Device, typename Index,
           typename Communicator, typename Anisotropy >
 void
 FastSweepingMethod< Meshes::Grid< 2, Real, Device, Index >, Communicator, Anisotropy >::
-getInfoFromNeighbours( int& calculatedBefore, int& calculateMPIAgain, const MeshPointer& mesh )
+getInfoFromNeighbours( int& calculatedBefore, int& calculateMPIAgain,
+                       const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh )
 {
-  Meshes::DistributedMeshes::DistributedMesh< MeshType >* meshDistr = mesh->getDistributedMesh();
-
   int calculateFromNeighbours[4] = {0,0,0,0};
-  const int *neighbours = meshDistr->getNeighbors(); // Getting neighbors of distributed mesh
+  const int *neighbours = distributedMesh.getNeighbors(); // Getting neighbors of distributed mesh
   MPI::Request *requestsInformation;
-  requestsInformation = new MPI::Request[ meshDistr->getNeighborsCount() ];
+  requestsInformation = new MPI::Request[ distributedMesh.getNeighborsCount() ];
 
   int neighCount = 0; // should this thread calculate again?
 
diff --git a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod3D_impl.h b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod3D_impl.h
index 9468ff1db32fe86e2546052dfa77f9dc268d1182..e0f6ff58adf12156e1034494753d15ed4b446e52 100644
--- a/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod3D_impl.h
+++ b/src/Examples/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnlFastSweepingMethod3D_impl.h
@@ -58,10 +58,11 @@ template< typename Real,
         typename Anisotropy >
 void
 FastSweepingMethod< Meshes::Grid< 3, Real, Device, Index >, Communicator, Anisotropy >::
-solve( const MeshPointer& mesh,
-        MeshFunctionPointer& Aux,
-        const AnisotropyPointer& anisotropy,
-        MeshFunctionPointer& u )
+solve( const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh,
+       const MeshPointer& mesh,
+       MeshFunctionPointer& Aux,
+       const AnisotropyPointer& anisotropy,
+       MeshFunctionPointer& u )
 {
   MeshFunctionPointer auxPtr;
   InterfaceMapPointer interfaceMapPtr;
@@ -69,19 +70,25 @@ solve( const MeshPointer& mesh,
   interfaceMapPtr->setMesh( mesh );
 
   // getting overlaps ( WITHOUT MPI SHOULD BE 0 )
-  Containers::StaticVector< 3, IndexType > vecLowerOverlaps, vecUpperOverlaps;
-  setOverlaps( vecLowerOverlaps, vecUpperOverlaps, mesh );
+  StaticVector vecLowerOverlaps = 0;
+  StaticVector vecUpperOverlaps = 0;
+  if( CommunicatorType::isDistributed() )
+  {
+    //Distributed mesh for MPI overlaps (without MPI null pointer)
+    vecLowerOverlaps = distributedMesh.getLowerOverlap();
+    vecUpperOverlaps = distributedMesh.getUpperOverlap();
+  }
 
   std::cout << "Initiating the interface cells ..." << std::endl;
   BaseType::initInterface( u, auxPtr, interfaceMapPtr, vecLowerOverlaps, vecUpperOverlaps );
-  auxPtr->save( "aux-ini.tnl" );
+  auxPtr->write( "aux", "aux-ini.vti" );
 
   typename MeshType::Cell cell( *mesh );
 
   IndexType iteration( 0 );
   MeshFunctionType aux = *auxPtr;
   InterfaceMapType interfaceMap = * interfaceMapPtr;
-  synchronizer.setDistributedGrid( aux.getMesh().getDistributedMesh() );
+  synchronizer.setDistributedGrid( &distributedMesh );
   synchronizer.synchronize( aux ); //synchronization of intial conditions
 
   while( iteration < this->maxIterations )
@@ -192,8 +199,8 @@ solve( const MeshPointer& mesh,
 
          this->getNeighbours( BlockIterHost, numBlocksX, numBlocksY, numBlocksZ );
 
-         //string s( "aux-"+ std::to_string(numWhile) + ".tnl");
-         //aux.save( s );
+         //string s( "aux-"+ std::to_string(numWhile) + ".vti");
+         //aux.write( "aux", s );
          }
          if( numWhile == 1 ){
          auxPtr = helpFunc;
@@ -357,7 +364,7 @@ solve( const MeshPointer& mesh,
 #ifdef HAVE_MPI
       if( CommunicatorType::isDistributed() )
       {
-        getInfoFromNeighbours( calculatedBefore, calculateMPIAgain, mesh );
+        getInfoFromNeighbours( calculatedBefore, calculateMPIAgain, distributedMesh );
 
         // synchronizate the overlaps
         synchronizer.synchronize( aux );
@@ -368,40 +375,17 @@ solve( const MeshPointer& mesh,
       if( !CommunicatorType::isDistributed() ) // If we start the solver without MPI, we need calculatedBefore 0!
         calculatedBefore = 0; //otherwise we would go throw the FSM code and CUDA FSM code again uselessly
     }
-    //aux.save( "aux-8.tnl" );
+    //aux.write( "aux", "aux-8.vti" );
     iteration++;
 
   }
   // Saving the results into Aux for MakeSnapshot function.
   Aux = auxPtr;
-  aux.save("aux-final.tnl");
+  aux.write( "aux", "aux-final.vti" );
 }
 
 // PROTECTED FUNCTIONS:
 
-template< typename Real, typename Device, typename Index,
-          typename Communicator, typename Anisotropy >
-void
-FastSweepingMethod< Meshes::Grid< 3, Real, Device, Index >, Communicator, Anisotropy >::
-setOverlaps( StaticVector& vecLowerOverlaps, StaticVector& vecUpperOverlaps,
-              const MeshPointer& mesh)
-{
-  vecLowerOverlaps[0] = 0; vecLowerOverlaps[1] = 0; vecLowerOverlaps[2] = 0;
-  vecUpperOverlaps[0] = 0; vecUpperOverlaps[1] = 0; vecUpperOverlaps[2] = 0;
-#ifdef HAVE_MPI
-  if( CommunicatorType::isDistributed() ) //If we started solver with MPI
-  {
-    //Distributed mesh for MPI overlaps (without MPI null pointer)
-    const Meshes::DistributedMeshes::DistributedMesh< MeshType >* meshPom = mesh->getDistributedMesh();
-    vecLowerOverlaps = meshPom->getLowerOverlap();
-    vecUpperOverlaps = meshPom->getUpperOverlap();
-  }
-#endif
-}
-
-
-
-
 template< typename Real, typename Device, typename Index,
           typename Communicator, typename Anisotropy >
 bool
@@ -450,15 +434,14 @@ template< typename Real, typename Device, typename Index,
           typename Communicator, typename Anisotropy >
 void
 FastSweepingMethod< Meshes::Grid< 3, Real, Device, Index >, Communicator, Anisotropy >::
-getInfoFromNeighbours( int& calculatedBefore, int& calculateMPIAgain, const MeshPointer& mesh )
+getInfoFromNeighbours( int& calculatedBefore, int& calculateMPIAgain,
+                       const Meshes::DistributedMeshes::DistributedMesh< MeshType >& distributedMesh )
 {
-  Meshes::DistributedMeshes::DistributedMesh< MeshType >* meshDistr = mesh->getDistributedMesh();
-
   int calculateFromNeighbours[6] = {0,0,0,0,0,0};
 
-  const int *neighbours = meshDistr->getNeighbors(); // Getting neighbors of distributed mesh
+  const int *neighbours = distributedMesh.getNeighbors(); // Getting neighbors of distributed mesh
   MPI::Request *requestsInformation;
-  requestsInformation = new MPI::Request[ meshDistr->getNeighborsCount() ];
+  requestsInformation = new MPI::Request[ distributedMesh.getNeighborsCount() ];
 
   int neighCount = 0; // should this thread calculate again?
 
diff --git a/src/Examples/flow-sw/navierStokesProblem_impl.h b/src/Examples/flow-sw/navierStokesProblem_impl.h
index fc4948e452b81372f908682a382dc1c382c38381..e42c80894ee62126104c4e17bc872212f8c4bde7 100644
--- a/src/Examples/flow-sw/navierStokesProblem_impl.h
+++ b/src/Examples/flow-sw/navierStokesProblem_impl.h
@@ -171,32 +171,30 @@ makeSnapshot( const RealType& time,
               DofVectorPointer& dofs )
 {
   std::cout << std::endl << "Writing output at time " << time << " step " << step << "." << std::endl;
-  
+
   this->bindDofs( dofs );
   PhysicalVariablesGetter< MeshType > physicalVariablesGetter;
   physicalVariablesGetter.getVelocity( this->conservativeVariables, this->velocity );
   physicalVariablesGetter.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-  
+
    FileName fileName;
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
    fileName.setFileNameBase( "density-" );
-   this->conservativeVariables->getDensity()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getDensity()->write( "density", fileName.getFileName() );
+
    fileName.setFileNameBase( "velocity-" );
-   this->velocity->save( fileName.getFileName() );
+   this->velocity->write( "velocity", fileName.getFileName() );
 
    fileName.setFileNameBase( "pressure-" );
-   this->pressure->save( fileName.getFileName() );
+   this->pressure->write( "pressure", fileName.getFileName() );
 
-   /*fileName.setFileNameBase( "energy-" );
-   if( ! this->conservativeVariables->getEnergy()->save( fileName.getFileName() ) )
-      return false;
+   fileName.setFileNameBase( "energy-" );
+   this->conservativeVariables->getEnergy()->write( "energy", fileName.getFileName() );
 
    fileName.setFileNameBase( "momentum-" );
-   if( ! this->conservativeVariables->getMomentum()->save( fileName.getFileName() ) )
-      return false;*/
-   
+   this->conservativeVariables->getMomentum()->write( "momentum", fileName.getFileName() );
+
    return true;
 }
 
@@ -214,7 +212,7 @@ getExplicitUpdate( const RealType& time,
 {
     typedef typename MeshType::Cell Cell;
     const MeshPointer& mesh = this->getMesh();
-    
+
     /****
      * Bind DOFs
      */
@@ -231,7 +229,7 @@ getExplicitUpdate( const RealType& time,
     PhysicalVariablesGetter< typename MeshPointer::ObjectType > physicalVariables;
     physicalVariables.getVelocity( this->conservativeVariables, this->velocity );
     physicalVariables.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-    
+
    /****
     * Set-up operators
     */
@@ -240,7 +238,7 @@ getExplicitUpdate( const RealType& time,
    typedef typename InviscidOperators::MomentumYOperatorType MomentumYOperatorType;
    typedef typename InviscidOperators::MomentumZOperatorType MomentumZOperatorType;
    typedef typename InviscidOperators::EnergyOperatorType EnergyOperatorType;
-    
+
     this->inviscidOperatorsPointer->setTau( tau );
     this->inviscidOperatorsPointer->setVelocity( this->velocity );
     this->inviscidOperatorsPointer->setPressure( this->pressure );
@@ -276,23 +274,23 @@ getExplicitUpdate( const RealType& time,
 
    /****
     * Continuity equation
-    */ 
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, DensityBoundaryConditionsType, RightHandSide > explicitUpdaterContinuity; 
+    */
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, DensityBoundaryConditionsType, RightHandSide > explicitUpdaterContinuity;
    explicitUpdaterContinuity.setDifferentialOperator( this->inviscidOperatorsPointer->getContinuityOperator() );
    explicitUpdaterContinuity.setBoundaryConditions( this->boundaryConditionPointer->getDensityBoundaryCondition() );
    explicitUpdaterContinuity.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterContinuity.template update< typename Mesh::Cell, CommunicatorType >(
-      time, tau, mesh, 
+      time, tau, mesh,
       this->conservativeVariables->getDensity(),
       this->conservativeVariablesRHS->getDensity() );
 
    /****
     * Momentum equations
     */
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, MomentumXBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumX; 
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, MomentumXBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumX;
    explicitUpdaterMomentumX.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumXOperator() );
    explicitUpdaterMomentumX.setBoundaryConditions( this->boundaryConditionPointer->getMomentumXBoundaryCondition() );
-   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );   
+   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterMomentumX.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       ( *this->conservativeVariables->getMomentum() )[ 0 ], // uRhoVelocityX,
@@ -303,40 +301,40 @@ getExplicitUpdate( const RealType& time,
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumYOperatorType, MomentumYBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumY;
       explicitUpdaterMomentumY.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumYOperator() );
       explicitUpdaterMomentumY.setBoundaryConditions( this->boundaryConditionPointer->getMomentumYBoundaryCondition() );
-      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );         
+      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumY.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 1 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 1 ] ); //, fuRhoVelocityX );
    }
-   
+
    if( Dimensions > 2 )
    {
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumZOperatorType, MomentumZBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumZ;
       explicitUpdaterMomentumZ.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumZOperator() );
       explicitUpdaterMomentumZ.setBoundaryConditions( this->boundaryConditionPointer->getMomentumZBoundaryCondition() );
-      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );               
+      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumZ.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 2 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 2 ] ); //, fuRhoVelocityX );
    }
-   
-  
+
+
    /****
     * Energy equation
     */
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, EnergyOperatorType, EnergyBoundaryConditionsType, RightHandSide > explicitUpdaterEnergy;
    explicitUpdaterEnergy.setDifferentialOperator( this->inviscidOperatorsPointer->getEnergyOperator() );
    explicitUpdaterEnergy.setBoundaryConditions( this->boundaryConditionPointer->getEnergyBoundaryCondition() );
-   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );                  
+   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterEnergy.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       this->conservativeVariablesRHS->getEnergy(), // uRhoVelocityX,
       this->conservativeVariablesRHS->getEnergy() ); //, fuRhoVelocityX );
 
 /*   this->pressure->write( "pressure3", "gnuplot" );
-   getchar();   
+   getchar();
    this->conservativeVariablesRHS->getDensity()->write( "density", "gnuplot" );
    this->conservativeVariablesRHS->getEnergy()->write( "energy", "gnuplot" );
    this->conservativeVariablesRHS->getMomentum()->write( "momentum", "gnuplot", 0.05 );
@@ -403,10 +401,10 @@ postIterate( const RealType& time,
    MeshFunctionType velocityX( mesh, this->velocityX );
    MeshFunctionType velocityY( mesh, this->velocityY );
    MeshFunctionType pressure( mesh, this->pressure );
-   MeshFunctionType uRho( mesh, _uRho ); 
-   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX ); 
-   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY ); 
-   MeshFunctionType uEnergy( mesh, _uEnergy ); 
+   MeshFunctionType uRho( mesh, _uRho );
+   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX );
+   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY );
+   MeshFunctionType uEnergy( mesh, _uEnergy );
    //Generating differential operators
    Velocity navierStokes2DVelocity;
    VelocityX navierStokes2DVelocityX;
diff --git a/src/Examples/flow-vl/navierStokesProblem_impl.h b/src/Examples/flow-vl/navierStokesProblem_impl.h
index fc4948e452b81372f908682a382dc1c382c38381..e42c80894ee62126104c4e17bc872212f8c4bde7 100644
--- a/src/Examples/flow-vl/navierStokesProblem_impl.h
+++ b/src/Examples/flow-vl/navierStokesProblem_impl.h
@@ -171,32 +171,30 @@ makeSnapshot( const RealType& time,
               DofVectorPointer& dofs )
 {
   std::cout << std::endl << "Writing output at time " << time << " step " << step << "." << std::endl;
-  
+
   this->bindDofs( dofs );
   PhysicalVariablesGetter< MeshType > physicalVariablesGetter;
   physicalVariablesGetter.getVelocity( this->conservativeVariables, this->velocity );
   physicalVariablesGetter.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-  
+
    FileName fileName;
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
    fileName.setFileNameBase( "density-" );
-   this->conservativeVariables->getDensity()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getDensity()->write( "density", fileName.getFileName() );
+
    fileName.setFileNameBase( "velocity-" );
-   this->velocity->save( fileName.getFileName() );
+   this->velocity->write( "velocity", fileName.getFileName() );
 
    fileName.setFileNameBase( "pressure-" );
-   this->pressure->save( fileName.getFileName() );
+   this->pressure->write( "pressure", fileName.getFileName() );
 
-   /*fileName.setFileNameBase( "energy-" );
-   if( ! this->conservativeVariables->getEnergy()->save( fileName.getFileName() ) )
-      return false;
+   fileName.setFileNameBase( "energy-" );
+   this->conservativeVariables->getEnergy()->write( "energy", fileName.getFileName() );
 
    fileName.setFileNameBase( "momentum-" );
-   if( ! this->conservativeVariables->getMomentum()->save( fileName.getFileName() ) )
-      return false;*/
-   
+   this->conservativeVariables->getMomentum()->write( "momentum", fileName.getFileName() );
+
    return true;
 }
 
@@ -214,7 +212,7 @@ getExplicitUpdate( const RealType& time,
 {
     typedef typename MeshType::Cell Cell;
     const MeshPointer& mesh = this->getMesh();
-    
+
     /****
      * Bind DOFs
      */
@@ -231,7 +229,7 @@ getExplicitUpdate( const RealType& time,
     PhysicalVariablesGetter< typename MeshPointer::ObjectType > physicalVariables;
     physicalVariables.getVelocity( this->conservativeVariables, this->velocity );
     physicalVariables.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-    
+
    /****
     * Set-up operators
     */
@@ -240,7 +238,7 @@ getExplicitUpdate( const RealType& time,
    typedef typename InviscidOperators::MomentumYOperatorType MomentumYOperatorType;
    typedef typename InviscidOperators::MomentumZOperatorType MomentumZOperatorType;
    typedef typename InviscidOperators::EnergyOperatorType EnergyOperatorType;
-    
+
     this->inviscidOperatorsPointer->setTau( tau );
     this->inviscidOperatorsPointer->setVelocity( this->velocity );
     this->inviscidOperatorsPointer->setPressure( this->pressure );
@@ -276,23 +274,23 @@ getExplicitUpdate( const RealType& time,
 
    /****
     * Continuity equation
-    */ 
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, DensityBoundaryConditionsType, RightHandSide > explicitUpdaterContinuity; 
+    */
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, DensityBoundaryConditionsType, RightHandSide > explicitUpdaterContinuity;
    explicitUpdaterContinuity.setDifferentialOperator( this->inviscidOperatorsPointer->getContinuityOperator() );
    explicitUpdaterContinuity.setBoundaryConditions( this->boundaryConditionPointer->getDensityBoundaryCondition() );
    explicitUpdaterContinuity.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterContinuity.template update< typename Mesh::Cell, CommunicatorType >(
-      time, tau, mesh, 
+      time, tau, mesh,
       this->conservativeVariables->getDensity(),
       this->conservativeVariablesRHS->getDensity() );
 
    /****
     * Momentum equations
     */
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, MomentumXBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumX; 
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, MomentumXBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumX;
    explicitUpdaterMomentumX.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumXOperator() );
    explicitUpdaterMomentumX.setBoundaryConditions( this->boundaryConditionPointer->getMomentumXBoundaryCondition() );
-   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );   
+   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterMomentumX.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       ( *this->conservativeVariables->getMomentum() )[ 0 ], // uRhoVelocityX,
@@ -303,40 +301,40 @@ getExplicitUpdate( const RealType& time,
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumYOperatorType, MomentumYBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumY;
       explicitUpdaterMomentumY.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumYOperator() );
       explicitUpdaterMomentumY.setBoundaryConditions( this->boundaryConditionPointer->getMomentumYBoundaryCondition() );
-      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );         
+      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumY.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 1 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 1 ] ); //, fuRhoVelocityX );
    }
-   
+
    if( Dimensions > 2 )
    {
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumZOperatorType, MomentumZBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumZ;
       explicitUpdaterMomentumZ.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumZOperator() );
       explicitUpdaterMomentumZ.setBoundaryConditions( this->boundaryConditionPointer->getMomentumZBoundaryCondition() );
-      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );               
+      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumZ.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 2 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 2 ] ); //, fuRhoVelocityX );
    }
-   
-  
+
+
    /****
     * Energy equation
     */
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, EnergyOperatorType, EnergyBoundaryConditionsType, RightHandSide > explicitUpdaterEnergy;
    explicitUpdaterEnergy.setDifferentialOperator( this->inviscidOperatorsPointer->getEnergyOperator() );
    explicitUpdaterEnergy.setBoundaryConditions( this->boundaryConditionPointer->getEnergyBoundaryCondition() );
-   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );                  
+   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterEnergy.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       this->conservativeVariablesRHS->getEnergy(), // uRhoVelocityX,
       this->conservativeVariablesRHS->getEnergy() ); //, fuRhoVelocityX );
 
 /*   this->pressure->write( "pressure3", "gnuplot" );
-   getchar();   
+   getchar();
    this->conservativeVariablesRHS->getDensity()->write( "density", "gnuplot" );
    this->conservativeVariablesRHS->getEnergy()->write( "energy", "gnuplot" );
    this->conservativeVariablesRHS->getMomentum()->write( "momentum", "gnuplot", 0.05 );
@@ -403,10 +401,10 @@ postIterate( const RealType& time,
    MeshFunctionType velocityX( mesh, this->velocityX );
    MeshFunctionType velocityY( mesh, this->velocityY );
    MeshFunctionType pressure( mesh, this->pressure );
-   MeshFunctionType uRho( mesh, _uRho ); 
-   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX ); 
-   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY ); 
-   MeshFunctionType uEnergy( mesh, _uEnergy ); 
+   MeshFunctionType uRho( mesh, _uRho );
+   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX );
+   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY );
+   MeshFunctionType uEnergy( mesh, _uEnergy );
    //Generating differential operators
    Velocity navierStokes2DVelocity;
    VelocityX navierStokes2DVelocityX;
diff --git a/src/Examples/flow/navierStokesProblem_impl.h b/src/Examples/flow/navierStokesProblem_impl.h
index 556645cfda30280200393d8a92213559640a7abc..c4c5795c8eb38f28ccd91f12f73b21b322dc2cb2 100644
--- a/src/Examples/flow/navierStokesProblem_impl.h
+++ b/src/Examples/flow/navierStokesProblem_impl.h
@@ -183,34 +183,30 @@ makeSnapshot( const RealType& time,
               DofVectorPointer& dofs )
 {
   std::cout << std::endl << "Writing output at time " << time << " step " << step << "." << std::endl;
-  
+
   this->bindDofs( dofs );
   PhysicalVariablesGetter< MeshType > physicalVariablesGetter;
   physicalVariablesGetter.getVelocity( this->conservativeVariables, this->velocity );
   physicalVariablesGetter.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-  
+
    FileName fileName;
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
    fileName.setFileNameBase( "density-" );
-//   if( ! this->conservativeVariables->getDensity()->save( fileName.getFileName() ) )
-//      return false;
-   
+   this->conservativeVariables->getDensity()->write( "density", fileName.getFileName() );
+
    fileName.setFileNameBase( "velocity-" );
-   this->velocity->save( fileName.getFileName() );
+   this->velocity->write( "velocity", fileName.getFileName() );
+
+   fileName.setFileNameBase( "pressure-" );
+   this->pressure->write( "pressure", fileName.getFileName() );
 
-//   fileName.setFileNameBase( "pressure-" );
-//   if( ! this->pressure->save( fileName.getFileName() ) )
-//      return false;
+   fileName.setFileNameBase( "energy-" );
+   this->conservativeVariables->getEnergy()->write( "energy", fileName.getFileName() );
 
-//   fileName.setFileNameBase( "energy-" );
-//   if( ! this->conservativeVariables->getEnergy()->save( fileName.getFileName() ) )
-//      return false;
+   fileName.setFileNameBase( "momentum-" );
+   this->conservativeVariables->getMomentum()->write( "momentum", fileName.getFileName() );
 
-//   fileName.setFileNameBase( "momentum-" );
-//   if( ! this->conservativeVariables->getMomentum()->save( fileName.getFileName() ) )
-//      return false;
-   
    return true;
 }
 
@@ -228,7 +224,7 @@ getExplicitUpdate( const RealType& time,
 {
     typedef typename MeshType::Cell Cell;
     const MeshPointer& mesh = this->getMesh();
-    
+
     /****
      * Bind DOFs
      */
@@ -236,14 +232,14 @@ getExplicitUpdate( const RealType& time,
     this->conservativeVariablesRHS->bind( mesh, *_fu );
     this->velocity->setMesh( mesh );
     this->pressure->setMesh( mesh );
-    
+
     /****
      * Resolve the physical variables
      */
     PhysicalVariablesGetter< typename MeshPointer::ObjectType > physicalVariables;
     physicalVariables.getVelocity( this->conservativeVariables, this->velocity );
     physicalVariables.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-    
+
    /****
     * Set-up operators
     */
@@ -252,7 +248,7 @@ getExplicitUpdate( const RealType& time,
    typedef typename InviscidOperators::MomentumYOperatorType MomentumYOperatorType;
    typedef typename InviscidOperators::MomentumZOperatorType MomentumZOperatorType;
    typedef typename InviscidOperators::EnergyOperatorType EnergyOperatorType;
-    
+
     this->inviscidOperatorsPointer->setTau( tau );
     this->inviscidOperatorsPointer->setVelocity( this->velocity );
     this->inviscidOperatorsPointer->setPressure( this->pressure );
@@ -285,22 +281,22 @@ getExplicitUpdate( const RealType& time,
 
    /****
     * Continuity equation
-    */ 
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, DensityBoundaryConditionsType, RightHandSide > explicitUpdaterContinuity; 
+    */
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, DensityBoundaryConditionsType, RightHandSide > explicitUpdaterContinuity;
    explicitUpdaterContinuity.setDifferentialOperator( this->inviscidOperatorsPointer->getContinuityOperator() );
    explicitUpdaterContinuity.setBoundaryConditions( this->boundaryConditionPointer->getDensityBoundaryCondition() );
    explicitUpdaterContinuity.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterContinuity.template update< typename Mesh::Cell, CommunicatorType >(
-      time, tau, mesh, 
+      time, tau, mesh,
       this->conservativeVariables->getDensity(),
       this->conservativeVariablesRHS->getDensity() );
    /****
     * Momentum equations
     */
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, MomentumXBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumX; 
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, MomentumXBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumX;
    explicitUpdaterMomentumX.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumXOperator() );
    explicitUpdaterMomentumX.setBoundaryConditions( this->boundaryConditionPointer->getMomentumXBoundaryCondition() );
-   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );   
+   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterMomentumX.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       ( *this->conservativeVariables->getMomentum() )[ 0 ], // uRhoVelocityX,
@@ -311,36 +307,36 @@ getExplicitUpdate( const RealType& time,
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumYOperatorType, MomentumYBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumY;
       explicitUpdaterMomentumY.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumYOperator() );
       explicitUpdaterMomentumY.setBoundaryConditions( this->boundaryConditionPointer->getMomentumYBoundaryCondition() );
-      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );         
+      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumY.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 1 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 1 ] ); //, fuRhoVelocityX );
    }
-   
+
    if( Dimensions > 2 )
    {
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumZOperatorType, MomentumZBoundaryConditionsType, RightHandSide > explicitUpdaterMomentumZ;
       explicitUpdaterMomentumZ.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumZOperator() );
       explicitUpdaterMomentumZ.setBoundaryConditions( this->boundaryConditionPointer->getMomentumZBoundaryCondition() );
-      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );               
+      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumZ.template update< typename Mesh::Cell, CommunicatorType >( time, tau, mesh,
                                                               ( *this->conservativeVariables->getMomentum() )[ 2 ], // uRhoVelocityX,
                                                               ( *this->conservativeVariablesRHS->getMomentum() )[ 2 ] ); //, fuRhoVelocityX );
    }
-   
+
    /****
     * Energy equation
     */
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, EnergyOperatorType, EnergyBoundaryConditionsType, RightHandSide > explicitUpdaterEnergy;
    explicitUpdaterEnergy.setDifferentialOperator( this->inviscidOperatorsPointer->getEnergyOperator() );
    explicitUpdaterEnergy.setBoundaryConditions( this->boundaryConditionPointer->getEnergyBoundaryCondition() );
-   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );                  
+   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterEnergy.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       this->conservativeVariables->getEnergy(), // uRhoVelocityX,
       this->conservativeVariablesRHS->getEnergy() ); //, fuRhoVelocityX );
-   
+
    /*
    this->conservativeVariablesRHS->getDensity()->write( "density", "gnuplot" );
    this->conservativeVariablesRHS->getEnergy()->write( "energy", "gnuplot" );
@@ -409,10 +405,10 @@ postIterate( const RealType& time,
    MeshFunctionType velocityX( mesh, this->velocityX );
    MeshFunctionType velocityY( mesh, this->velocityY );
    MeshFunctionType pressure( mesh, this->pressure );
-   MeshFunctionType uRho( mesh, _uRho ); 
-   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX ); 
-   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY ); 
-   MeshFunctionType uEnergy( mesh, _uEnergy ); 
+   MeshFunctionType uRho( mesh, _uRho );
+   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX );
+   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY );
+   MeshFunctionType uEnergy( mesh, _uEnergy );
    //Generating differential operators
    Velocity navierStokes2DVelocity;
    VelocityX navierStokes2DVelocityX;
diff --git a/src/Examples/heat-equation/tnl-heat-equation-eoc.h b/src/Examples/heat-equation/tnl-heat-equation-eoc.h
index e1f617a14adae46ea11f2f362655c5dc015290d8..4d585d9410d78237d45537f5455a39cfe78a8253 100644
--- a/src/Examples/heat-equation/tnl-heat-equation-eoc.h
+++ b/src/Examples/heat-equation/tnl-heat-equation-eoc.h
@@ -10,8 +10,6 @@
 
 #pragma once
 
-#define MPIIO
-
 #include <TNL/Solvers/Solver.h>
 #include <TNL/Solvers/FastBuildConfigTag.h>
 #include <TNL/Solvers/BuildConfigTags.h>
diff --git a/src/Examples/heat-equation/tnl-heat-equation.h b/src/Examples/heat-equation/tnl-heat-equation.h
index 0cf06e24c10759847a0f59f4d42eb98e8973171c..d4e3b1c93194916039c839d03a795cdcb68b605f 100644
--- a/src/Examples/heat-equation/tnl-heat-equation.h
+++ b/src/Examples/heat-equation/tnl-heat-equation.h
@@ -10,8 +10,6 @@
 
 #pragma once
 
-#define MPIIO
-
 #include <TNL/Solvers/Solver.h>
 #include <TNL/Solvers/FastBuildConfigTag.h>
 #include <TNL/Solvers/BuildConfigTags.h>
@@ -48,10 +46,7 @@ class heatEquationConfig
          config.addEntry< String >( "boundary-conditions-file", "File with the values of the boundary conditions.", "boundary.tnl" );
          config.addEntry< double >( "boundary-conditions-constant", "This sets a value in case of the constant boundary conditions." );
          config.addEntry< double >( "right-hand-side-constant", "This sets a constant value for the right-hand side.", 0.0 );
-         config.addEntry< String >( "initial-condition", "File with the initial condition.", "initial.tnl");
-         config.addEntry< String >( "distributed-grid-io-type", "Choose Distributed Grid IO Type", "LocalCopy");
-            config.addEntryEnum< String >( "LocalCopy" );
-            config.addEntryEnum< String >( "MpiIO" );
+         config.addEntry< String >( "initial-condition", "File with the initial condition.", "initial.vti");
       };
 };
 
diff --git a/src/Examples/inviscid-flow-sw/eulerProblem_impl.h b/src/Examples/inviscid-flow-sw/eulerProblem_impl.h
index 423008fde206617beab80b3cb8af8a82d69a880d..f56fb295a9406b719e1b5d72cffc904c98bbe93e 100644
--- a/src/Examples/inviscid-flow-sw/eulerProblem_impl.h
+++ b/src/Examples/inviscid-flow-sw/eulerProblem_impl.h
@@ -168,30 +168,30 @@ makeSnapshot( const RealType& time,
               DofVectorPointer& dofs )
 {
   std::cout << std::endl << "Writing output at time " << time << " step " << step << "." << std::endl;
-  
+
   this->bindDofs( dofs );
   PhysicalVariablesGetter< MeshType > physicalVariablesGetter;
   physicalVariablesGetter.getVelocity( this->conservativeVariables, this->velocity );
   physicalVariablesGetter.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-  
+
    FileName fileName;
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
    fileName.setFileNameBase( "density-" );
-   this->conservativeVariables->getDensity()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getDensity()->write( "density", fileName.getFileName() );
+
    fileName.setFileNameBase( "velocity-" );
-   this->velocity->save( fileName.getFileName() );
+   this->velocity->write( "velocity", fileName.getFileName() );
 
    fileName.setFileNameBase( "pressure-" );
-   this->pressure->save( fileName.getFileName() );
+   this->pressure->write( "pressure", fileName.getFileName() );
 
    fileName.setFileNameBase( "energy-" );
-   this->conservativeVariables->getEnergy()->save( fileName.getFileName() );
+   this->conservativeVariables->getEnergy()->write( "energy", fileName.getFileName() );
 
    fileName.setFileNameBase( "momentum-" );
-   this->conservativeVariables->getMomentum()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getMomentum()->write( "momentum", fileName.getFileName() );
+
    return true;
 }
 
@@ -209,7 +209,7 @@ getExplicitUpdate( const RealType& time,
 {
     typedef typename MeshType::Cell Cell;
     const MeshPointer& mesh = this->getMesh();
-    
+
     /****
      * Bind DOFs
      */
@@ -226,7 +226,7 @@ getExplicitUpdate( const RealType& time,
     PhysicalVariablesGetter< typename MeshPointer::ObjectType > physicalVariables;
     physicalVariables.getVelocity( this->conservativeVariables, this->velocity );
     physicalVariables.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-    
+
    /****
     * Set-up operators
     */
@@ -235,7 +235,7 @@ getExplicitUpdate( const RealType& time,
    typedef typename InviscidOperators::MomentumYOperatorType MomentumYOperatorType;
    typedef typename InviscidOperators::MomentumZOperatorType MomentumZOperatorType;
    typedef typename InviscidOperators::EnergyOperatorType EnergyOperatorType;
-    
+
     this->inviscidOperatorsPointer->setTau( tau );
     this->inviscidOperatorsPointer->setVelocity( this->velocity );
     this->inviscidOperatorsPointer->setPressure( this->pressure );
@@ -246,23 +246,23 @@ getExplicitUpdate( const RealType& time,
 //   getchar();
    /****
     * Continuity equation
-    */ 
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterContinuity; 
+    */
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterContinuity;
    explicitUpdaterContinuity.setDifferentialOperator( this->inviscidOperatorsPointer->getContinuityOperator() );
    explicitUpdaterContinuity.setBoundaryConditions( this->boundaryConditionPointer );
    explicitUpdaterContinuity.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterContinuity.template update< typename Mesh::Cell, CommunicatorType >(
-      time, tau, mesh, 
+      time, tau, mesh,
       this->conservativeVariables->getDensity(),
       this->conservativeVariablesRHS->getDensity() );
 
    /****
     * Momentum equations
     */
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumX; 
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumX;
    explicitUpdaterMomentumX.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumXOperator() );
    explicitUpdaterMomentumX.setBoundaryConditions( this->boundaryConditionPointer );
-   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );   
+   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterMomentumX.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       ( *this->conservativeVariables->getMomentum() )[ 0 ], // uRhoVelocityX,
@@ -273,40 +273,40 @@ getExplicitUpdate( const RealType& time,
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumYOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumY;
       explicitUpdaterMomentumY.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumYOperator() );
       explicitUpdaterMomentumY.setBoundaryConditions( this->boundaryConditionPointer );
-      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );         
+      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumY.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 1 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 1 ] ); //, fuRhoVelocityX );
    }
-   
+
    if( Dimensions > 2 )
    {
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumZOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumZ;
       explicitUpdaterMomentumZ.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumZOperator() );
       explicitUpdaterMomentumZ.setBoundaryConditions( this->boundaryConditionPointer );
-      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );               
+      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumZ.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 2 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 2 ] ); //, fuRhoVelocityX );
    }
-   
-  
+
+
    /****
     * Energy equation
     */
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, EnergyOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterEnergy;
    explicitUpdaterEnergy.setDifferentialOperator( this->inviscidOperatorsPointer->getEnergyOperator() );
    explicitUpdaterEnergy.setBoundaryConditions( this->boundaryConditionPointer );
-   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );                  
+   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterEnergy.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       this->conservativeVariablesRHS->getEnergy(), // uRhoVelocityX,
       this->conservativeVariablesRHS->getEnergy() ); //, fuRhoVelocityX );
 
 /*   this->pressure->write( "pressure3", "gnuplot" );
-   getchar();   
+   getchar();
    this->conservativeVariablesRHS->getDensity()->write( "density", "gnuplot" );
    this->conservativeVariablesRHS->getEnergy()->write( "energy", "gnuplot" );
    this->conservativeVariablesRHS->getMomentum()->write( "momentum", "gnuplot", 0.05 );
@@ -373,10 +373,10 @@ postIterate( const RealType& time,
    MeshFunctionType velocityX( mesh, this->velocityX );
    MeshFunctionType velocityY( mesh, this->velocityY );
    MeshFunctionType pressure( mesh, this->pressure );
-   MeshFunctionType uRho( mesh, _uRho ); 
-   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX ); 
-   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY ); 
-   MeshFunctionType uEnergy( mesh, _uEnergy ); 
+   MeshFunctionType uRho( mesh, _uRho );
+   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX );
+   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY );
+   MeshFunctionType uEnergy( mesh, _uEnergy );
    //Generating differential operators
    Velocity euler2DVelocity;
    VelocityX euler2DVelocityX;
diff --git a/src/Examples/inviscid-flow-vl/eulerProblem_impl.h b/src/Examples/inviscid-flow-vl/eulerProblem_impl.h
index 423008fde206617beab80b3cb8af8a82d69a880d..f56fb295a9406b719e1b5d72cffc904c98bbe93e 100644
--- a/src/Examples/inviscid-flow-vl/eulerProblem_impl.h
+++ b/src/Examples/inviscid-flow-vl/eulerProblem_impl.h
@@ -168,30 +168,30 @@ makeSnapshot( const RealType& time,
               DofVectorPointer& dofs )
 {
   std::cout << std::endl << "Writing output at time " << time << " step " << step << "." << std::endl;
-  
+
   this->bindDofs( dofs );
   PhysicalVariablesGetter< MeshType > physicalVariablesGetter;
   physicalVariablesGetter.getVelocity( this->conservativeVariables, this->velocity );
   physicalVariablesGetter.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-  
+
    FileName fileName;
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
    fileName.setFileNameBase( "density-" );
-   this->conservativeVariables->getDensity()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getDensity()->write( "density", fileName.getFileName() );
+
    fileName.setFileNameBase( "velocity-" );
-   this->velocity->save( fileName.getFileName() );
+   this->velocity->write( "velocity", fileName.getFileName() );
 
    fileName.setFileNameBase( "pressure-" );
-   this->pressure->save( fileName.getFileName() );
+   this->pressure->write( "pressure", fileName.getFileName() );
 
    fileName.setFileNameBase( "energy-" );
-   this->conservativeVariables->getEnergy()->save( fileName.getFileName() );
+   this->conservativeVariables->getEnergy()->write( "energy", fileName.getFileName() );
 
    fileName.setFileNameBase( "momentum-" );
-   this->conservativeVariables->getMomentum()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getMomentum()->write( "momentum", fileName.getFileName() );
+
    return true;
 }
 
@@ -209,7 +209,7 @@ getExplicitUpdate( const RealType& time,
 {
     typedef typename MeshType::Cell Cell;
     const MeshPointer& mesh = this->getMesh();
-    
+
     /****
      * Bind DOFs
      */
@@ -226,7 +226,7 @@ getExplicitUpdate( const RealType& time,
     PhysicalVariablesGetter< typename MeshPointer::ObjectType > physicalVariables;
     physicalVariables.getVelocity( this->conservativeVariables, this->velocity );
     physicalVariables.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-    
+
    /****
     * Set-up operators
     */
@@ -235,7 +235,7 @@ getExplicitUpdate( const RealType& time,
    typedef typename InviscidOperators::MomentumYOperatorType MomentumYOperatorType;
    typedef typename InviscidOperators::MomentumZOperatorType MomentumZOperatorType;
    typedef typename InviscidOperators::EnergyOperatorType EnergyOperatorType;
-    
+
     this->inviscidOperatorsPointer->setTau( tau );
     this->inviscidOperatorsPointer->setVelocity( this->velocity );
     this->inviscidOperatorsPointer->setPressure( this->pressure );
@@ -246,23 +246,23 @@ getExplicitUpdate( const RealType& time,
 //   getchar();
    /****
     * Continuity equation
-    */ 
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterContinuity; 
+    */
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterContinuity;
    explicitUpdaterContinuity.setDifferentialOperator( this->inviscidOperatorsPointer->getContinuityOperator() );
    explicitUpdaterContinuity.setBoundaryConditions( this->boundaryConditionPointer );
    explicitUpdaterContinuity.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterContinuity.template update< typename Mesh::Cell, CommunicatorType >(
-      time, tau, mesh, 
+      time, tau, mesh,
       this->conservativeVariables->getDensity(),
       this->conservativeVariablesRHS->getDensity() );
 
    /****
     * Momentum equations
     */
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumX; 
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumX;
    explicitUpdaterMomentumX.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumXOperator() );
    explicitUpdaterMomentumX.setBoundaryConditions( this->boundaryConditionPointer );
-   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );   
+   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterMomentumX.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       ( *this->conservativeVariables->getMomentum() )[ 0 ], // uRhoVelocityX,
@@ -273,40 +273,40 @@ getExplicitUpdate( const RealType& time,
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumYOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumY;
       explicitUpdaterMomentumY.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumYOperator() );
       explicitUpdaterMomentumY.setBoundaryConditions( this->boundaryConditionPointer );
-      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );         
+      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumY.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 1 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 1 ] ); //, fuRhoVelocityX );
    }
-   
+
    if( Dimensions > 2 )
    {
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumZOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumZ;
       explicitUpdaterMomentumZ.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumZOperator() );
       explicitUpdaterMomentumZ.setBoundaryConditions( this->boundaryConditionPointer );
-      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );               
+      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumZ.template update< typename Mesh::Cell, CommunicatorType >(
          time, tau, mesh,
          ( *this->conservativeVariables->getMomentum() )[ 2 ], // uRhoVelocityX,
          ( *this->conservativeVariablesRHS->getMomentum() )[ 2 ] ); //, fuRhoVelocityX );
    }
-   
-  
+
+
    /****
     * Energy equation
     */
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, EnergyOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterEnergy;
    explicitUpdaterEnergy.setDifferentialOperator( this->inviscidOperatorsPointer->getEnergyOperator() );
    explicitUpdaterEnergy.setBoundaryConditions( this->boundaryConditionPointer );
-   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );                  
+   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterEnergy.template update< typename Mesh::Cell, CommunicatorType >(
       time, tau, mesh,
       this->conservativeVariablesRHS->getEnergy(), // uRhoVelocityX,
       this->conservativeVariablesRHS->getEnergy() ); //, fuRhoVelocityX );
 
 /*   this->pressure->write( "pressure3", "gnuplot" );
-   getchar();   
+   getchar();
    this->conservativeVariablesRHS->getDensity()->write( "density", "gnuplot" );
    this->conservativeVariablesRHS->getEnergy()->write( "energy", "gnuplot" );
    this->conservativeVariablesRHS->getMomentum()->write( "momentum", "gnuplot", 0.05 );
@@ -373,10 +373,10 @@ postIterate( const RealType& time,
    MeshFunctionType velocityX( mesh, this->velocityX );
    MeshFunctionType velocityY( mesh, this->velocityY );
    MeshFunctionType pressure( mesh, this->pressure );
-   MeshFunctionType uRho( mesh, _uRho ); 
-   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX ); 
-   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY ); 
-   MeshFunctionType uEnergy( mesh, _uEnergy ); 
+   MeshFunctionType uRho( mesh, _uRho );
+   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX );
+   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY );
+   MeshFunctionType uEnergy( mesh, _uEnergy );
    //Generating differential operators
    Velocity euler2DVelocity;
    VelocityX euler2DVelocityX;
diff --git a/src/Examples/inviscid-flow/eulerProblem_impl.h b/src/Examples/inviscid-flow/eulerProblem_impl.h
index 5e0827ff8acf1de691fced7fc8251fda153ab0c4..5a7a42d1e9b3964b022a78bb89daa1b89f2a7d6d 100644
--- a/src/Examples/inviscid-flow/eulerProblem_impl.h
+++ b/src/Examples/inviscid-flow/eulerProblem_impl.h
@@ -169,27 +169,27 @@ makeSnapshot( const RealType& time,
               DofVectorPointer& dofs )
 {
   std::cout << std::endl << "Writing output at time " << time << " step " << step << "." << std::endl;
-  
+
   this->bindDofs( dofs );
   PhysicalVariablesGetter< MeshType > physicalVariablesGetter;
   physicalVariablesGetter.getVelocity( this->conservativeVariables, this->velocity );
   physicalVariablesGetter.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-  
+
    FileName fileName;
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
    fileName.setFileNameBase( "density-" );
-   this->conservativeVariables->getDensity()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getDensity()->write( "density", fileName.getFileName() );
+
    fileName.setFileNameBase( "velocity-" );
-   this->velocity->save( fileName.getFileName() );
+   this->velocity->write( "velocity", fileName.getFileName() );
 
    fileName.setFileNameBase( "pressure-" );
-   this->pressure->save( fileName.getFileName() );
+   this->pressure->write( "pressure", fileName.getFileName() );
 
    fileName.setFileNameBase( "energy-" );
-   this->conservativeVariables->getEnergy()->save( fileName.getFileName() );
-   
+   this->conservativeVariables->getEnergy()->write( "energy", fileName.getFileName() );
+
    return true;
 }
 
@@ -206,7 +206,7 @@ getExplicitUpdate( const RealType& time,
                    DofVectorPointer& _fu )
 {
     typedef typename MeshType::Cell Cell;
-    
+
     /****
      * Bind DOFs
      */
@@ -214,14 +214,14 @@ getExplicitUpdate( const RealType& time,
     this->conservativeVariablesRHS->bind( this->getMesh(), *_fu );
     this->velocity->setMesh( this->getMesh() );
     this->pressure->setMesh( this->getMesh() );
-    
+
     /****
      * Resolve the physical variables
      */
     PhysicalVariablesGetter< typename MeshPointer::ObjectType > physicalVariables;
     physicalVariables.getVelocity( this->conservativeVariables, this->velocity );
     physicalVariables.getPressure( this->conservativeVariables, this->gamma, this->pressure );
-    
+
    /****
     * Set-up operators
     */
@@ -230,29 +230,29 @@ getExplicitUpdate( const RealType& time,
    typedef typename InviscidOperators::MomentumYOperatorType MomentumYOperatorType;
    typedef typename InviscidOperators::MomentumZOperatorType MomentumZOperatorType;
    typedef typename InviscidOperators::EnergyOperatorType EnergyOperatorType;
-    
+
     this->inviscidOperatorsPointer->setTau( tau );
     this->inviscidOperatorsPointer->setVelocity( this->velocity );
     this->inviscidOperatorsPointer->setPressure( this->pressure );
 
    /****
     * Continuity equation
-    */ 
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterContinuity; 
+    */
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, ContinuityOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterContinuity;
    explicitUpdaterContinuity.setDifferentialOperator( this->inviscidOperatorsPointer->getContinuityOperator() );
    explicitUpdaterContinuity.setBoundaryConditions( this->boundaryConditionPointer );
    explicitUpdaterContinuity.setRightHandSide( this->rightHandSidePointer );
-   explicitUpdaterContinuity.template update< typename Mesh::Cell, Communicator >( time, tau, this->getMesh(), 
+   explicitUpdaterContinuity.template update< typename Mesh::Cell, Communicator >( time, tau, this->getMesh(),
                                                                      this->conservativeVariables->getDensity(),
                                                                      this->conservativeVariablesRHS->getDensity() );
 
    /****
     * Momentum equations
     */
-   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumX; 
+   Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumXOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumX;
    explicitUpdaterMomentumX.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumXOperator() );
    explicitUpdaterMomentumX.setBoundaryConditions( this->boundaryConditionPointer );
-   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );   
+   explicitUpdaterMomentumX.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterMomentumX.template update< typename Mesh::Cell, Communicator >( time, tau, this->getMesh(),
                                                            ( *this->conservativeVariables->getMomentum() )[ 0 ], // uRhoVelocityX,
                                                            ( *this->conservativeVariablesRHS->getMomentum() )[ 0 ] ); //, fuRhoVelocityX );
@@ -262,35 +262,35 @@ getExplicitUpdate( const RealType& time,
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumYOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumY;
       explicitUpdaterMomentumY.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumYOperator() );
       explicitUpdaterMomentumY.setBoundaryConditions( this->boundaryConditionPointer );
-      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );         
+      explicitUpdaterMomentumY.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumY.template update< typename Mesh::Cell, Communicator >( time, tau, this->getMesh(),
                                                               ( *this->conservativeVariables->getMomentum() )[ 1 ], // uRhoVelocityX,
                                                               ( *this->conservativeVariablesRHS->getMomentum() )[ 1 ] ); //, fuRhoVelocityX );
    }
-   
+
    if( Dimensions > 2 )
    {
       Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, MomentumZOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterMomentumZ;
       explicitUpdaterMomentumZ.setDifferentialOperator( this->inviscidOperatorsPointer->getMomentumZOperator() );
       explicitUpdaterMomentumZ.setBoundaryConditions( this->boundaryConditionPointer );
-      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );               
+      explicitUpdaterMomentumZ.setRightHandSide( this->rightHandSidePointer );
       explicitUpdaterMomentumZ.template update< typename Mesh::Cell, Communicator >( time, tau, this->getMesh(),
                                                               ( *this->conservativeVariables->getMomentum() )[ 2 ], // uRhoVelocityX,
                                                               ( *this->conservativeVariablesRHS->getMomentum() )[ 2 ] ); //, fuRhoVelocityX );
    }
-   
-  
+
+
    /****
     * Energy equation
     */
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, EnergyOperatorType, BoundaryCondition, RightHandSide > explicitUpdaterEnergy;
    explicitUpdaterEnergy.setDifferentialOperator( this->inviscidOperatorsPointer->getEnergyOperator() );
    explicitUpdaterEnergy.setBoundaryConditions( this->boundaryConditionPointer );
-   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );                  
+   explicitUpdaterEnergy.setRightHandSide( this->rightHandSidePointer );
    explicitUpdaterEnergy.template update< typename Mesh::Cell, Communicator >( time, tau, this->getMesh(),
                                                            this->conservativeVariables->getEnergy(), // uRhoVelocityX,
                                                            this->conservativeVariablesRHS->getEnergy() ); //, fuRhoVelocityX );
-   
+
    /*this->conservativeVariablesRHS->getDensity()->write( "density", "gnuplot" );
    this->conservativeVariablesRHS->getEnergy()->write( "energy", "gnuplot" );
    this->conservativeVariablesRHS->getMomentum()->write( "momentum", "gnuplot", 0.05 );
@@ -370,10 +370,10 @@ postIterate( const RealType& time,
    MeshFunctionType velocityX( mesh, this->velocityX );
    MeshFunctionType velocityY( mesh, this->velocityY );
    MeshFunctionType pressure( mesh, this->pressure );
-   MeshFunctionType uRho( mesh, _uRho ); 
-   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX ); 
-   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY ); 
-   MeshFunctionType uEnergy( mesh, _uEnergy ); 
+   MeshFunctionType uRho( mesh, _uRho );
+   MeshFunctionType uRhoVelocityX( mesh, _uRhoVelocityX );
+   MeshFunctionType uRhoVelocityY( mesh, _uRhoVelocityY );
+   MeshFunctionType uEnergy( mesh, _uEnergy );
    //Generating differential operators
    Velocity euler2DVelocity;
    VelocityX euler2DVelocityX;
diff --git a/src/Examples/transport-equation/transportEquationProblemEoc_impl.h b/src/Examples/transport-equation/transportEquationProblemEoc_impl.h
index 6bff33bc77dda9e947837ee6d97ba9c6f073f436..5f5bd575fbe8d9bbd16c5fefa4b185a673ba36ef 100644
--- a/src/Examples/transport-equation/transportEquationProblemEoc_impl.h
+++ b/src/Examples/transport-equation/transportEquationProblemEoc_impl.h
@@ -51,7 +51,7 @@ setup( const Config::ParameterContainer& parameters,
        ! this->differentialOperatorPointer->setup( this->getMesh(), parameters, prefix ) ||
        ! this->boundaryConditionPointer->setup( this->getMesh(), parameters, prefix + "boundary-conditions-" ) )
       return false;
-   
+
    /****
     * Render the exact solution
     */
@@ -69,7 +69,7 @@ setup( const Config::ParameterContainer& parameters,
       typedef Functions::OperatorFunction< HeavisideType, VectorNormType > InitialConditionType;
       String velocityFieldType = parameters.getParameter< String >( "velocity-field" );
       if( velocityFieldType == "constant" )
-      {      
+      {
          typedef Operators::Analytic::Shift< Dimension, RealType > ShiftOperatorType;
          typedef Functions::OperatorFunction< ShiftOperatorType, InitialConditionType > ExactSolutionType;
          Pointers::SharedPointer<  ExactSolutionType, Devices::Host > exactSolution;
@@ -87,20 +87,20 @@ setup( const Config::ParameterContainer& parameters,
          evaluator.evaluate( u, exactSolution, time );
          FileName fileName;
          fileName.setFileNameBase( "exact-u-" );
-         fileName.setExtension( "tnl" );
+         fileName.setExtension( "vti" );
          fileName.setIndex( step );
-         u->save( fileName.getFileName() );
+         u->write( "u", fileName.getFileName() );
          while( time < finalTime )
          {
             time += snapshotPeriod;
             if( time > finalTime )
                time = finalTime;
-            exactSolution->getOperator().setShift( time * velocity );            
+            exactSolution->getOperator().setShift( time * velocity );
             std::cerr << time * velocity << std::endl;
             std::cerr << exactSolution->getOperator().getShift() << std::endl;
             evaluator.evaluate( u, exactSolution, time );
             fileName.setIndex( ++step );
-            u->save( fileName.getFileName() );
+            u->write( "u", fileName.getFileName() );
          }
       }
       if( velocityFieldType == "rotation" )
@@ -108,7 +108,7 @@ setup( const Config::ParameterContainer& parameters,
          // TODO: implement this using RotationXY operator
       }
    }
-   
+
    return true;
 }
 
@@ -126,13 +126,9 @@ setInitialCondition( const Config::ParameterContainer& parameters,
    //const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
    FileName fileName;
    fileName.setFileNameBase( "exact-u-" );
-   fileName.setExtension( "tnl" );
-   fileName.setIndex( 0 );   
-   try
-   {
-      this->uPointer->boundLoad( fileName.getFileName() );
-   }
-   catch(...)
+   fileName.setExtension( "vti" );
+   fileName.setIndex( 0 );
+   if( ! Functions::readMeshFunction( *this->uPointer, "u", fileName.getFileName() ) )
    {
       std::cerr << "I am not able to load the initial condition from the file " << fileName.getFileName() << "." << std::endl;
       return false;
diff --git a/src/Examples/transport-equation/transportEquationProblem_impl.h b/src/Examples/transport-equation/transportEquationProblem_impl.h
index 79271a30589b3d25ace4f33f58bcc2aa5dbd3868..26d5ee9a589d7d9b9585dafb3c1f05743eb98662 100644
--- a/src/Examples/transport-equation/transportEquationProblem_impl.h
+++ b/src/Examples/transport-equation/transportEquationProblem_impl.h
@@ -106,11 +106,7 @@ setInitialCondition( const Config::ParameterContainer& parameters,
 {
    this->bindDofs( dofs );
    const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
-   try
-   {
-      this->uPointer->boundLoad( initialConditionFile );
-   }
-   catch(...)
+   if( ! Functions::readMeshFunction( *this->uPointer, "u", initialConditionFile ) )
    {
       std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl;
       return false;
@@ -161,9 +157,9 @@ makeSnapshot( const RealType& time,
    printDofs.bind( this->getMesh(), *dofs );
    FileName fileName;
    fileName.setFileNameBase( "u-" );
-   fileName.setExtension( "tnl" );
+   fileName.setExtension( "vti" );
    fileName.setIndex( step );
-   printDofs.save( fileName.getFileName() );
+   printDofs.write( "u", fileName.getFileName() );
    return true;
 }
 
@@ -193,10 +189,10 @@ getExplicitUpdate( const RealType& time,
    this->bindDofs( _u );
    Solvers::PDE::ExplicitUpdater< Mesh, MeshFunctionType, DifferentialOperator, BoundaryCondition, RightHandSide > explicitUpdater;
    Pointers::SharedPointer<  MeshFunctionType > u;
-   u->bind( mesh, *_u ); 
+   u->bind( mesh, *_u );
    Pointers::SharedPointer<  MeshFunctionType > fu;
    fu->bind( mesh, *_fu );
-   differentialOperatorPointer->setTau(tau); 
+   differentialOperatorPointer->setTau(tau);
    differentialOperatorPointer->setVelocityField( this->velocityField );
    explicitUpdater.setDifferentialOperator( this->differentialOperatorPointer );
    explicitUpdater.setBoundaryConditions( this->boundaryConditionPointer );
diff --git a/src/Python/pytnl/tnl/Grid.h b/src/Python/pytnl/tnl/Grid.h
index 2622bd5c93dc07a5d67bfca2dde02ef72fdca6c7..c0b7c89c06f39d8784b172e0f5a41a0d85ec085a 100644
--- a/src/Python/pytnl/tnl/Grid.h
+++ b/src/Python/pytnl/tnl/Grid.h
@@ -54,11 +54,9 @@ void export_Grid( py::module & m, const char* name )
 //    void (Grid::* _setDimensions1)(const IndexType) = &Grid::setDimensions;
     void (Grid::* _setDimensions2)(const typename Grid::CoordinatesType &) = &Grid::setDimensions;
 
-    auto grid = py::class_<Grid, TNL::Object>( m, name )
+    auto grid = py::class_<Grid>( m, name )
         .def(py::init<>())
         .def_static("getMeshDimension", &Grid::getMeshDimension)
-        .def_static("getSerializationType", &Grid::getSerializationType)
-        .def("getSerializationTypeVirtual", &Grid::getSerializationTypeVirtual)
         // FIXME: number of parameters depends on the grid dimension
 //        .def("setDimensions", _setDimensions1)
         .def("setDimensions", _setDimensions2)
diff --git a/src/Python/pytnl/tnl/Mesh.h b/src/Python/pytnl/tnl/Mesh.h
index 3097f111f528fb06aef62f9d46af611a33509b6d..97c37f712d0438704fdae8ff62b78a43ac283273 100644
--- a/src/Python/pytnl/tnl/Mesh.h
+++ b/src/Python/pytnl/tnl/Mesh.h
@@ -98,11 +98,9 @@ void export_MeshEntity( Scope & scope, const char* name )
 template< typename Mesh >
 void export_Mesh( py::module & m, const char* name )
 {
-    auto mesh = py::class_< Mesh, TNL::Object >( m, name )
+    auto mesh = py::class_< Mesh >( m, name )
         .def(py::init<>())
         .def_static("getMeshDimension", &Mesh::getMeshDimension)
-        .def_static("getSerializationType", &Mesh::getSerializationType)
-        .def("getSerializationTypeVirtual", &Mesh::getSerializationTypeVirtual)
         .def("getEntitiesCount", &mesh_getEntitiesCount< Mesh, typename Mesh::Cell >)
         .def("getEntitiesCount", &mesh_getEntitiesCount< Mesh, typename Mesh::Face >)
         .def("getEntitiesCount", &mesh_getEntitiesCount< Mesh, typename Mesh::Vertex >)
diff --git a/src/Python/pytnl/tnl/MeshReaders.cpp b/src/Python/pytnl/tnl/MeshReaders.cpp
index c009300f3c447d593c9b125911811ce0239195fd..861277ebe99814a976e7bde1355879250aab39d9 100644
--- a/src/Python/pytnl/tnl/MeshReaders.cpp
+++ b/src/Python/pytnl/tnl/MeshReaders.cpp
@@ -15,6 +15,9 @@ void export_MeshReaders( py::module & m )
         // bindings against the actual class, NOT the trampoline
         .def("reset", &MeshReader::reset)
         .def("detectMesh", &MeshReader::detectMesh)
+        .def("loadMesh", &MeshReader::template loadMesh< Grid1D >)
+        .def("loadMesh", &MeshReader::template loadMesh< Grid2D >)
+        .def("loadMesh", &MeshReader::template loadMesh< Grid3D >)
         .def("loadMesh", &MeshReader::template loadMesh< MeshOfEdges >)
         .def("loadMesh", &MeshReader::template loadMesh< MeshOfTriangles >)
         .def("loadMesh", &MeshReader::template loadMesh< MeshOfQuadrangles >)
@@ -28,7 +31,7 @@ void export_MeshReaders( py::module & m )
         .def(py::init<std::string>())
     ;
 
-    // base class for VTUReader and PVTUReader
+    // base class for VTUReader, VTIReader and PVTUReader
     py::class_< XMLVTK, PyXMLVTK, MeshReader >( m, "XMLVTK" )
         .def(py::init<std::string>())
    ;
@@ -36,4 +39,8 @@ void export_MeshReaders( py::module & m )
     py::class_< TNL::Meshes::Readers::VTUReader, XMLVTK >( m, "VTUReader" )
         .def(py::init<std::string>())
     ;
+
+    py::class_< TNL::Meshes::Readers::VTIReader, XMLVTK >( m, "VTIReader" )
+        .def(py::init<std::string>())
+    ;
 }
diff --git a/src/Python/pytnl/tnl/MeshReaders.h b/src/Python/pytnl/tnl/MeshReaders.h
index 22b40a6719319251168ad9dfe0922071bd2b9d91..f339f9b652c30dce83e97f7b8712b4f4c3b682c6 100644
--- a/src/Python/pytnl/tnl/MeshReaders.h
+++ b/src/Python/pytnl/tnl/MeshReaders.h
@@ -1,5 +1,6 @@
 #include <TNL/Meshes/Readers/VTKReader.h>
 #include <TNL/Meshes/Readers/VTUReader.h>
+#include <TNL/Meshes/Readers/VTIReader.h>
 
 // trampoline classes needed for overriding virtual methods
 // https://pybind11.readthedocs.io/en/stable/advanced/classes.html
diff --git a/src/Python/pytnl/tnl/MeshWriters.cpp b/src/Python/pytnl/tnl/MeshWriters.cpp
index 01f79ce2d6a8a3b1f4af2773ac27653148ec4fb3..bfafa5047610511c13d102b855a3739ab20c3c8f 100644
--- a/src/Python/pytnl/tnl/MeshWriters.cpp
+++ b/src/Python/pytnl/tnl/MeshWriters.cpp
@@ -8,6 +8,7 @@
 
 #include <TNL/Meshes/Writers/VTKWriter.h>
 #include <TNL/Meshes/Writers/VTUWriter.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
 
 template< typename Writer, TNL::Meshes::VTK::FileFormat default_format >
 void export_MeshWriter( py::module & m, const char* name )
@@ -81,10 +82,13 @@ void export_MeshWriters( py::module & m )
 {
     export_MeshWriter< TNL::Meshes::Writers::VTKWriter< Grid1D >, TNL::Meshes::VTK::FileFormat::binary          >( m, "VTKWriter_Grid1D" );
     export_MeshWriter< TNL::Meshes::Writers::VTUWriter< Grid1D >, TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTUWriter_Grid1D" );
+    export_MeshWriter< TNL::Meshes::Writers::VTIWriter< Grid1D >, TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTIWriter_Grid1D" );
     export_MeshWriter< TNL::Meshes::Writers::VTKWriter< Grid2D >, TNL::Meshes::VTK::FileFormat::binary          >( m, "VTKWriter_Grid2D" );
     export_MeshWriter< TNL::Meshes::Writers::VTUWriter< Grid2D >, TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTUWriter_Grid2D" );
+    export_MeshWriter< TNL::Meshes::Writers::VTIWriter< Grid2D >, TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTIWriter_Grid2D" );
     export_MeshWriter< TNL::Meshes::Writers::VTKWriter< Grid3D >, TNL::Meshes::VTK::FileFormat::binary          >( m, "VTKWriter_Grid3D" );
     export_MeshWriter< TNL::Meshes::Writers::VTUWriter< Grid3D >, TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTUWriter_Grid3D" );
+    export_MeshWriter< TNL::Meshes::Writers::VTIWriter< Grid3D >, TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTIWriter_Grid3D" );
 
     export_MeshWriter< TNL::Meshes::Writers::VTKWriter< MeshOfEdges >,        TNL::Meshes::VTK::FileFormat::binary          >( m, "VTKWriter_MeshOfEdges" );
     export_MeshWriter< TNL::Meshes::Writers::VTUWriter< MeshOfEdges >,        TNL::Meshes::VTK::FileFormat::zlib_compressed >( m, "VTUWriter_MeshOfEdges" );
diff --git a/src/TNL/Functions/MeshFunction.h b/src/TNL/Functions/MeshFunction.h
index 6dce8d9f2bda62e09e1a555aac6062c55e5445aa..b475feebf4ad267d0614cd51bbebf2e4213ceb9a 100644
--- a/src/TNL/Functions/MeshFunction.h
+++ b/src/TNL/Functions/MeshFunction.h
@@ -22,7 +22,6 @@ template< typename Mesh,
           int MeshEntityDimension = Mesh::getMeshDimension(),
           typename Real = typename Mesh::RealType >
 class MeshFunction :
-   public Object,
    public Domain< Mesh::getMeshDimension(), MeshDomain >
 {
    //static_assert( Mesh::DeviceType::DeviceType == Vector::DeviceType::DeviceType,
@@ -46,10 +45,6 @@ class MeshFunction :
 
       MeshFunction( const MeshFunction& meshFunction );
 
-      static String getSerializationType();
-
-      virtual String getSerializationTypeVirtual() const;
-
       static void configSetup( Config::ConfigDescription& config,
                                const String& prefix = "" );
 
@@ -65,6 +60,8 @@ class MeshFunction :
 
       const MeshPointer& getMeshPointer() const;
 
+      MeshPointer& getMeshPointer();
+
       static IndexType getDofs( const MeshPointer& meshPointer );
 
       __cuda_callable__ const VectorType& getData() const;
@@ -94,6 +91,7 @@ class MeshFunction :
 
       __cuda_callable__
       RealType& operator[]( const IndexType& meshEntityIndex );
+
       __cuda_callable__
       const RealType& operator[]( const IndexType& meshEntityIndex ) const;
 
@@ -112,20 +110,9 @@ class MeshFunction :
 
       RealType getMaxNorm() const;
 
-      void save( File& file ) const;
-
-      void load( File& file );
-
-      void boundLoad( File& file );
-
-      void boundLoad( const String& fileName );
-
-      bool write( const String& fileName,
-                  const String& format = "vtk" ) const;
-
-      using Object::save;
-
-      using Object::load;
+      bool write( const std::string& functionName,
+                  const std::string& fileName,
+                  const std::string& fileFormat = "auto" ) const;
 
    protected:
 
diff --git a/src/TNL/Functions/MeshFunction.hpp b/src/TNL/Functions/MeshFunction.hpp
index 6d8f91ebccbd1c80e53bf3fe8a9c13dfded18d0b..a1545a6458f061a1d202f70ca747fc1cd4c4fad8 100644
--- a/src/TNL/Functions/MeshFunction.hpp
+++ b/src/TNL/Functions/MeshFunction.hpp
@@ -8,16 +8,14 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
+#pragma once
+
 #include <TNL/Assert.h>
 #include <TNL/Pointers/DevicePointer.h>
 #include <TNL/Functions/MeshFunction.h>
 #include <TNL/Functions/MeshFunctionEvaluator.h>
 #include <TNL/Functions/MeshFunctionNormGetter.h>
-#include <TNL/Functions/MeshFunctionGnuplotWriter.h>
-#include <TNL/Meshes/Writers/VTKWriter.h>
-#include <TNL/Meshes/Writers/VTUWriter.h>
-
-#pragma once
+#include <TNL/Functions/MeshFunctionIO.h>
 
 namespace TNL {
 namespace Functions {
@@ -50,30 +48,6 @@ MeshFunction( const MeshFunction& meshFunction )
    this->data = meshFunction.getData();
 }
 
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-String
-MeshFunction< Mesh, MeshEntityDimension, Real >::
-getSerializationType()
-{
-   return String( "Functions::MeshFunction< " ) +
-          TNL::getSerializationType< Mesh >() + ", " +
-          convertToString( MeshEntityDimension ) + ", " +
-          getType< Real >() +
-          " >";
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-String
-MeshFunction< Mesh, MeshEntityDimension, Real >::
-getSerializationTypeVirtual() const
-{
-   return this->getSerializationType();
-}
-
 template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
@@ -83,6 +57,7 @@ configSetup( Config::ConfigDescription& config,
              const String& prefix )
 {
    config.addEntry< String >( prefix + "file", "Dataset for the mesh function." );
+   config.addEntry< String >( prefix + "function-name", "Name of the mesh function in the input file.", "f" );
 }
 
 template< typename Mesh,
@@ -95,16 +70,9 @@ setup( const MeshPointer& meshPointer,
        const String& prefix )
 {
    this->setMesh( meshPointer );
-   if( parameters.checkParameter( prefix + "file" ) )
-   {
-      String fileName = parameters.getParameter< String >( prefix + "file" );
-      this->load( fileName );
-   }
-   else
-   {
-      throw std::runtime_error( "Missing parameter " + prefix + "file." );
-   }
-   return true;
+   const String fileName = parameters.getParameter< String >( prefix + "file" );
+   const String functionName = parameters.getParameter< String >( prefix + "function-name" );
+   return readMeshFunction( *this, functionName, fileName );
 }
 
 template< typename Mesh,
@@ -123,7 +91,7 @@ template< typename Mesh,
           typename Real >
  template< typename Device >
 __cuda_callable__
-const typename MeshFunction< Mesh, MeshEntityDimension, Real >::MeshType& 
+const typename MeshFunction< Mesh, MeshEntityDimension, Real >::MeshType&
 MeshFunction< Mesh, MeshEntityDimension, Real >::
 getMesh() const
 {
@@ -140,6 +108,16 @@ getMeshPointer() const
    return this->meshPointer;
 }
 
+template< typename Mesh,
+          int MeshEntityDimension,
+          typename Real >
+typename MeshFunction< Mesh, MeshEntityDimension, Real >::MeshPointer&
+MeshFunction< Mesh, MeshEntityDimension, Real >::
+getMeshPointer()
+{
+   return this->meshPointer;
+}
+
 template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
@@ -154,7 +132,7 @@ template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
 __cuda_callable__
-const typename MeshFunction< Mesh, MeshEntityDimension, Real >::VectorType& 
+const typename MeshFunction< Mesh, MeshEntityDimension, Real >::VectorType&
 MeshFunction< Mesh, MeshEntityDimension, Real >::
 getData() const
 {
@@ -165,7 +143,7 @@ template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
 __cuda_callable__
-typename MeshFunction< Mesh, MeshEntityDimension, Real >::VectorType& 
+typename MeshFunction< Mesh, MeshEntityDimension, Real >::VectorType&
 MeshFunction< Mesh, MeshEntityDimension, Real >::
 getData()
 {
@@ -341,94 +319,16 @@ getMaxNorm() const
    return max( abs( this->data ) );
 }
 
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunction< Mesh, MeshEntityDimension, Real >::
-save( File& file ) const
-{
-   TNL_ASSERT_EQ( this->data.getSize(), this->getMesh().template getEntitiesCount< typename MeshType::template EntityType< MeshEntityDimension > >(),
-                  "Size of the mesh function data does not match the mesh." );
-   Object::save( file );
-   file << this->data;
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunction< Mesh, MeshEntityDimension, Real >::
-load( File& file )
-{
-   Object::load( file );
-   file >> this->data;
-   const IndexType meshSize = this->getMesh().template getEntitiesCount< typename MeshType::template EntityType< MeshEntityDimension > >();
-   if( this->data.getSize() != meshSize )
-      throw Exceptions::FileDeserializationError( file.getFileName(), "mesh function data size does not match the mesh size (expected " + std::to_string(meshSize) + ", got " + std::to_string(this->data.getSize()) + ")." );
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunction< Mesh, MeshEntityDimension, Real >::
-boundLoad( File& file )
-{
-   Object::load( file );
-   file >> this->data.getView();
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunction< Mesh, MeshEntityDimension, Real >::
-boundLoad( const String& fileName )
-{
-   File file;
-   file.open( fileName, std::ios_base::in );
-   this->boundLoad( file );
-}
-
 template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
 bool
 MeshFunction< Mesh, MeshEntityDimension, Real >::
-write( const String& fileName,
-       const String& format ) const
+write( const std::string& functionName,
+       const std::string& fileName,
+       const std::string& fileFormat ) const
 {
-   std::fstream file;
-   file.open( fileName.getString(), std::ios::out );
-   if( ! file )
-   {
-      std::cerr << "Unable to open a file " << fileName << "." << std::endl;
-      return false;
-   }
-   if( format == "vtk" ) {
-      Meshes::Writers::VTKWriter< Mesh > writer( file );
-      writer.template writeEntities< getEntitiesDimension() >( *meshPointer );
-      if( MeshFunction::getEntitiesDimension() == 0 )
-         writer.writePointData( getData(), "cellFunctionValues", 1 );
-      else
-         writer.writeCellData( getData(), "pointFunctionValues", 1 );
-   }
-   else if( format == "vtu" ) {
-      Meshes::Writers::VTUWriter< Mesh > writer( file );
-      writer.template writeEntities< getEntitiesDimension() >( *meshPointer );
-      if( MeshFunction::getEntitiesDimension() == 0 )
-         writer.writePointData( getData(), "cellFunctionValues", 1 );
-      else
-         writer.writeCellData( getData(), "pointFunctionValues", 1 );
-   }
-   else if( format == "gnuplot" )
-      return MeshFunctionGnuplotWriter< MeshFunction >::write( *this, file );
-   else {
-      std::cerr << "Unknown output format: " << format << std::endl;
-      return false;
-   }
-   return true;
+   return writeMeshFunction( *this, functionName, fileName, fileFormat );
 }
 
 template< typename Mesh,
diff --git a/src/TNL/Functions/MeshFunctionIO.h b/src/TNL/Functions/MeshFunctionIO.h
new file mode 100644
index 0000000000000000000000000000000000000000..35ed818978857ee97efee75f90059b9720c8018b
--- /dev/null
+++ b/src/TNL/Functions/MeshFunctionIO.h
@@ -0,0 +1,285 @@
+/***************************************************************************
+                          MeshFunctionIO.h  -  description
+                             -------------------
+    begin                : Jun 22, 2021
+    copyright            : (C) 2017 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+#pragma once
+
+#include <type_traits>
+#include <experimental/filesystem>
+
+#include <TNL/Meshes/Traits.h>
+#include <TNL/Meshes/Readers/getMeshReader.h>
+#include <TNL/Meshes/Writers/VTKWriter.h>
+#include <TNL/Meshes/Writers/VTUWriter.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
+#include <TNL/Meshes/Writers/PVTIWriter.h>
+#include <TNL/Functions/MeshFunctionGnuplotWriter.h>
+
+namespace TNL {
+namespace Functions {
+
+template< typename MeshFunction >
+bool
+readMeshFunction( MeshFunction& function,
+                  const std::string& functionName,
+                  const std::string& fileName,
+                  const std::string& fileFormat = "auto" )
+{
+   std::shared_ptr< Meshes::Readers::MeshReader > reader = Meshes::Readers::getMeshReader( fileName, fileFormat );
+   if( reader == nullptr )
+      return false;
+
+   reader->detectMesh();
+
+   // load the mesh if the function does not have it yet
+   if( function.getMesh() == typename MeshFunction::MeshType {} )
+      reader->loadMesh( *function.getMeshPointer() );
+
+   Meshes::Readers::MeshReader::VariantVector data;
+   if( function.getEntitiesDimension() == 0 )
+      data = reader->readPointData( functionName );
+   else if( function.getEntitiesDimension() == function.getMeshDimension() )
+      data = reader->readCellData( functionName );
+   else {
+      std::cerr << "The mesh function with entities dimension " << function.getEntitiesDimension() << " cannot be read from the file " << fileName << std::endl;
+      return false;
+   }
+
+   visit( [&](auto&& array) {
+            const auto entitiesCount = function.getMesh().template getEntitiesCount< MeshFunction::getEntitiesDimension() >();
+            if( array.size() == (std::size_t) entitiesCount )
+               Algorithms::MultiDeviceMemoryOperations< typename MeshFunction::VectorType::DeviceType, Devices::Host >
+                  ::copy( function.getData().getData(), array.data(), array.size() );
+            else
+               throw Exceptions::FileDeserializationError( fileName, "mesh function data size does not match the mesh size (expected " + std::to_string(entitiesCount) + ", got " + std::to_string(array.size()) + ")." );
+         },
+         data
+      );
+
+   return true;
+}
+
+template< typename MeshFunction >
+bool
+readDistributedMeshFunction( Meshes::DistributedMeshes::DistributedMesh< typename MeshFunction::MeshType >& distributedMesh,
+                             MeshFunction& function,
+                             const std::string& functionName,
+                             const std::string& fileName,
+                             const std::string& fileFormat = "auto" )
+{
+   std::shared_ptr< Meshes::Readers::MeshReader > reader = Meshes::Readers::getMeshReader( fileName, fileFormat );
+   if( reader == nullptr )
+      return false;
+
+   reader->detectMesh();
+
+   // load the mesh if it was not loaded yet
+   using MeshType = typename MeshFunction::MeshType;
+   using DistributedMeshType = Meshes::DistributedMeshes::DistributedMesh< MeshType >;
+   if( distributedMesh == DistributedMeshType {} ) {
+      if( reader->getMeshType() == "Meshes::DistributedMesh" )
+         dynamic_cast<Meshes::Readers::PVTUReader&>(*reader).loadMesh( distributedMesh );
+      else if( reader->getMeshType() == "Meshes::DistributedGrid" )
+         dynamic_cast<Meshes::Readers::PVTIReader&>(*reader).loadMesh( distributedMesh );
+      else
+         throw std::runtime_error( "Unknown type of a distributed mesh: " + reader->getMeshType() );
+   }
+   if( function.getMesh() != distributedMesh.getLocalMesh() )
+      // FIXME: DistributedMesh does not have a SharedPointer of the local mesh,
+      // the interface is fucked up (it should not require us to put SharedPointer everywhere)
+      *function.getMeshPointer() = distributedMesh.getLocalMesh();
+
+   Meshes::Readers::MeshReader::VariantVector data;
+   if( function.getEntitiesDimension() == 0 )
+      data = reader->readPointData( functionName );
+   else if( function.getEntitiesDimension() == function.getMeshDimension() )
+      data = reader->readCellData( functionName );
+   else {
+      std::cerr << "The mesh function with entities dimension " << function.getEntitiesDimension() << " cannot be read from the file " << fileName << std::endl;
+      return false;
+   }
+
+   visit( [&](auto&& array) {
+            const auto entitiesCount = function.getMesh().template getEntitiesCount< MeshFunction::getEntitiesDimension() >();
+            if( array.size() == (std::size_t) entitiesCount )
+               Algorithms::MultiDeviceMemoryOperations< typename MeshFunction::VectorType::DeviceType, Devices::Host >
+                  ::copy( function.getData().getData(), array.data(), array.size() );
+            else
+               throw Exceptions::FileDeserializationError( fileName, "mesh function data size does not match the mesh size (expected " + std::to_string(entitiesCount) + ", got " + std::to_string(array.size()) + ")." );
+         },
+         data
+      );
+
+   return true;
+}
+
+// specialization for grids
+template< typename MeshFunction >
+std::enable_if_t< Meshes::isGrid< typename MeshFunction::MeshType >::value, bool >
+writeMeshFunction( const MeshFunction& function,
+                   const std::string& functionName,
+                   const std::string& fileName,
+                   const std::string& fileFormat = "auto" )
+{
+   std::ofstream file;
+   file.open( fileName );
+   if( ! file )
+   {
+      std::cerr << "Unable to open a file " << fileName << "." << std::endl;
+      return false;
+   }
+
+   namespace fs = std::experimental::filesystem;
+   std::string format = fileFormat;
+   if( format == "auto" ) {
+      format = fs::path(fileName).extension();
+      if( format.length() > 0 )
+         // remove dot from the extension
+         format = format.substr(1);
+   }
+
+   if( format == "vti" ) {
+      Meshes::Writers::VTIWriter< typename MeshFunction::MeshType > writer( file );
+      writer.writeImageData( function.getMesh() );
+      if( MeshFunction::getEntitiesDimension() == 0 )
+         writer.writePointData( function.getData(), functionName, 1 );
+      else
+         writer.writeCellData( function.getData(), functionName, 1 );
+   }
+   else if( format == "gnuplot" || format == "gplt" || format == "plt" )
+      return MeshFunctionGnuplotWriter< MeshFunction >::write( function, file );
+   else {
+      std::cerr << "Unknown output format: " << format << std::endl;
+      return false;
+   }
+   return true;
+}
+
+// specialization for meshes
+template< typename MeshFunction >
+std::enable_if_t< ! Meshes::isGrid< typename MeshFunction::MeshType >::value, bool >
+writeMeshFunction( const MeshFunction& function,
+                   const std::string& functionName,
+                   const std::string& fileName,
+                   const std::string& fileFormat = "auto" )
+{
+   std::ofstream file;
+   file.open( fileName );
+   if( ! file )
+   {
+      std::cerr << "Unable to open a file " << fileName << "." << std::endl;
+      return false;
+   }
+
+   namespace fs = std::experimental::filesystem;
+   std::string format = fileFormat;
+   if( format == "auto" ) {
+      format = fs::path(fileName).extension();
+      if( format.length() > 0 )
+         // remove dot from the extension
+         format = format.substr(1);
+   }
+
+   if( format == "vtk" ) {
+      Meshes::Writers::VTKWriter< typename MeshFunction::MeshType > writer( file );
+      writer.template writeEntities< MeshFunction::getEntitiesDimension() >( function.getMesh() );
+      if( MeshFunction::getEntitiesDimension() == 0 )
+         writer.writePointData( function.getData(), functionName, 1 );
+      else
+         writer.writeCellData( function.getData(), functionName, 1 );
+   }
+   else if( format == "vtu" ) {
+      Meshes::Writers::VTUWriter< typename MeshFunction::MeshType > writer( file );
+      writer.template writeEntities< MeshFunction::getEntitiesDimension() >( function.getMesh() );
+      if( MeshFunction::getEntitiesDimension() == 0 )
+         writer.writePointData( function.getData(), functionName, 1 );
+      else
+         writer.writeCellData( function.getData(), functionName, 1 );
+   }
+   else if( format == "gnuplot" || format == "gplt" || format == "plt" )
+      return MeshFunctionGnuplotWriter< MeshFunction >::write( function, file );
+   else {
+      std::cerr << "Unknown output format: " << format << std::endl;
+      return false;
+   }
+   return true;
+}
+
+// specialization for grids
+template< typename MeshFunction >
+std::enable_if_t< Meshes::isGrid< typename MeshFunction::MeshType >::value, bool >
+writeDistributedMeshFunction( const Meshes::DistributedMeshes::DistributedMesh< typename MeshFunction::MeshType >& distributedMesh,
+                              const MeshFunction& function,
+                              const std::string& functionName,
+                              const std::string& fileName,
+                              const std::string& fileFormat = "auto" )
+{
+   namespace fs = std::experimental::filesystem;
+   std::string format = fileFormat;
+   if( format == "auto" ) {
+      format = fs::path(fileName).extension();
+      if( format.length() > 0 )
+         // remove dot from the extension
+         format = format.substr(1);
+   }
+
+   if( format == "pvti" ) {
+      const MPI_Comm group = distributedMesh.getCommunicationGroup();
+      std::ofstream file;
+      if( TNL::MPI::GetRank( group ) == 0 )
+         file.open( fileName );
+
+      using PVTI = Meshes::Writers::PVTIWriter< typename MeshFunction::MeshType >;
+      PVTI pvti( file );
+      // TODO: write metadata: step and time
+      pvti.writeImageData( distributedMesh );
+      // TODO
+      //if( distributedMesh.getGhostLevels() > 0 ) {
+      //   pvti.template writePPointData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+      //   pvti.template writePCellData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+      //}
+      if( function.getEntitiesDimension() == 0 )
+         pvti.template writePPointData< typename MeshFunction::RealType >( functionName );
+      else
+         pvti.template writePCellData< typename MeshFunction::RealType >( functionName );
+      const std::string subfilePath = pvti.addPiece( fileName, distributedMesh );
+
+      // create a .vti file for local data
+      // TODO: write metadata: step and time
+      using Writer = Meshes::Writers::VTIWriter< typename MeshFunction::MeshType >;
+      std::ofstream subfile( subfilePath );
+      Writer writer( subfile );
+      // NOTE: passing the local mesh to writeImageData does not work correctly, just like meshFunction->write(...)
+      //       (it does not write the correct extent of the subdomain - globalBegin is only in the distributed grid)
+      // NOTE: globalBegin and globalEnd here are without overlaps
+      writer.writeImageData( distributedMesh.getGlobalGrid().getOrigin(),
+                             distributedMesh.getGlobalBegin() - distributedMesh.getLowerOverlap(),
+                             distributedMesh.getGlobalBegin() + distributedMesh.getLocalSize() + distributedMesh.getUpperOverlap(),
+                             distributedMesh.getGlobalGrid().getSpaceSteps() );
+      if( function.getEntitiesDimension() == 0 )
+         writer.writePointData( function.getData(), functionName );
+      else
+         writer.writeCellData( function.getData(), functionName );
+      // TODO
+      //if( mesh.getGhostLevels() > 0 ) {
+      //   writer.writePointData( mesh.vtkPointGhostTypes(), Meshes::VTK::ghostArrayName() );
+      //   writer.writeCellData( mesh.vtkCellGhostTypes(), Meshes::VTK::ghostArrayName() );
+      //}
+   }
+   else {
+      std::cerr << "Unknown output format: " << format << std::endl;
+      return false;
+   }
+   return true;
+}
+
+// TODO: specialization of writeDistributedMeshFunction for unstructured mesh
+
+} // namespace Functions
+} // namespace TNL
diff --git a/src/TNL/Functions/MeshFunctionView.h b/src/TNL/Functions/MeshFunctionView.h
index c66a59ce5c980266686b286dec5ea58dd649c16e..e812f526ba6047c32b4e48e7618304ed41ddc803 100644
--- a/src/TNL/Functions/MeshFunctionView.h
+++ b/src/TNL/Functions/MeshFunctionView.h
@@ -22,7 +22,6 @@ template< typename Mesh,
           int MeshEntityDimension = Mesh::getMeshDimension(),
           typename Real = typename Mesh::RealType >
 class MeshFunctionView :
-   public Object,
    public Domain< Mesh::getMeshDimension(), MeshDomain >
 {
    //static_assert( Mesh::DeviceType::DeviceType == Vector::DeviceType::DeviceType,
@@ -54,10 +53,6 @@ class MeshFunctionView :
                         Pointers::SharedPointer<  Vector >& data,
                         const IndexType& offset = 0 );
 
-      static String getSerializationType();
-
-      virtual String getSerializationTypeVirtual() const;
-
       static void configSetup( Config::ConfigDescription& config,
                                const String& prefix = "" );
 
@@ -89,6 +84,8 @@ class MeshFunctionView :
 
       const MeshPointer& getMeshPointer() const;
 
+      MeshPointer& getMeshPointer();
+
       static IndexType getDofs( const MeshPointer& meshPointer );
 
       __cuda_callable__ const VectorType& getData() const;
@@ -118,6 +115,7 @@ class MeshFunctionView :
 
       __cuda_callable__
       RealType& operator[]( const IndexType& meshEntityIndex );
+
       __cuda_callable__
       const RealType& operator[]( const IndexType& meshEntityIndex ) const;
 
@@ -136,20 +134,9 @@ class MeshFunctionView :
 
       RealType getMaxNorm() const;
 
-      void save( File& file ) const;
-
-      void load( File& file );
-
-      void boundLoad( File& file );
-
-      void boundLoad( const String& fileName );
-
-      bool write( const String& fileName,
-                  const String& format = "vtk" ) const;
-
-      using Object::save;
-
-      using Object::load;
+      bool write( const std::string& functionName,
+                  const std::string& fileName,
+                  const std::string& fileFormat = "auto" ) const;
 
    protected:
 
diff --git a/src/TNL/Functions/MeshFunctionView.hpp b/src/TNL/Functions/MeshFunctionView.hpp
index 15b70c4edf8da7343489b145a1222ec1319d3712..cbae2ca5c304e10e7e03ba9e4d0acb5bc5458e0d 100644
--- a/src/TNL/Functions/MeshFunctionView.hpp
+++ b/src/TNL/Functions/MeshFunctionView.hpp
@@ -8,16 +8,14 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
+#pragma once
+
 #include <TNL/Assert.h>
 #include <TNL/Pointers/DevicePointer.h>
 #include <TNL/Functions/MeshFunctionView.h>
 #include <TNL/Functions/MeshFunctionEvaluator.h>
 #include <TNL/Functions/MeshFunctionNormGetter.h>
-#include <TNL/Functions/MeshFunctionGnuplotWriter.h>
-#include <TNL/Meshes/Writers/VTKWriter.h>
-#include <TNL/Meshes/Writers/VTUWriter.h>
-
-#pragma once
+#include <TNL/Functions/MeshFunctionIO.h>
 
 namespace TNL {
 namespace Functions {
@@ -75,30 +73,6 @@ MeshFunctionView( const MeshPointer& meshPointer,
    this->data.bind( *data, offset, getMesh().template getEntitiesCount< typename Mesh::template EntityType< MeshEntityDimension > >() );
 }
 
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-String
-MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-getSerializationType()
-{
-   return String( "Functions::MeshFunction< " ) +
-          TNL::getSerializationType< Mesh >() + ", " +
-          convertToString( MeshEntityDimension ) + ", " +
-          getType< Real >() +
-          " >";
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-String
-MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-getSerializationTypeVirtual() const
-{
-   return this->getSerializationType();
-}
-
 template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
@@ -108,6 +82,7 @@ configSetup( Config::ConfigDescription& config,
              const String& prefix )
 {
    config.addEntry< String >( prefix + "file", "Dataset for the mesh function." );
+   config.addEntry< String >( prefix + "function-name", "Name of the mesh function in the input file.", "f" );
 }
 
 template< typename Mesh,
@@ -120,16 +95,9 @@ setup( const MeshPointer& meshPointer,
        const String& prefix )
 {
    this->setMesh( meshPointer );
-   if( parameters.checkParameter( prefix + "file" ) )
-   {
-      String fileName = parameters.getParameter< String >( prefix + "file" );
-      this->load( fileName );
-   }
-   else
-   {
-      throw std::runtime_error( "Missing parameter " + prefix + "file." );
-   }
-   return true;
+   const String fileName = parameters.getParameter< String >( prefix + "file" );
+   const String functionName = parameters.getParameter< String >( prefix + "function-name" );
+   return readMeshFunction( *this, functionName, fileName );
 }
 
 template< typename Mesh,
@@ -208,7 +176,7 @@ template< typename Mesh,
           typename Real >
  template< typename Device >
 __cuda_callable__
-const typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::MeshType& 
+const typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::MeshType&
 MeshFunctionView< Mesh, MeshEntityDimension, Real >::
 getMesh() const
 {
@@ -225,6 +193,16 @@ getMeshPointer() const
    return this->meshPointer;
 }
 
+template< typename Mesh,
+          int MeshEntityDimension,
+          typename Real >
+typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::MeshPointer&
+MeshFunctionView< Mesh, MeshEntityDimension, Real >::
+getMeshPointer()
+{
+   return this->meshPointer;
+}
+
 template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
@@ -239,7 +217,7 @@ template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
 __cuda_callable__
-const typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::VectorType& 
+const typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::VectorType&
 MeshFunctionView< Mesh, MeshEntityDimension, Real >::
 getData() const
 {
@@ -250,7 +228,7 @@ template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
 __cuda_callable__
-typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::VectorType& 
+typename MeshFunctionView< Mesh, MeshEntityDimension, Real >::VectorType&
 MeshFunctionView< Mesh, MeshEntityDimension, Real >::
 getData()
 {
@@ -426,94 +404,16 @@ getMaxNorm() const
    return max( abs( this->data ) );
 }
 
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-save( File& file ) const
-{
-   TNL_ASSERT_EQ( this->data.getSize(), this->getMesh().template getEntitiesCount< typename MeshType::template EntityType< MeshEntityDimension > >(),
-                  "Size of the mesh function data does not match the mesh." );
-   Object::save( file );
-   file << this->data;
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-load( File& file )
-{
-   Object::load( file );
-   file >> this->data;
-   const IndexType meshSize = this->getMesh().template getEntitiesCount< typename MeshType::template EntityType< MeshEntityDimension > >();
-   if( this->data.getSize() != meshSize )
-      throw Exceptions::FileDeserializationError( file.getFileName(), "mesh function data size does not match the mesh size (expected " + std::to_string(meshSize) + ", got " + std::to_string(this->data.getSize()) + ")." );
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-boundLoad( File& file )
-{
-   Object::load( file );
-   file >> this->data.getView();
-}
-
-template< typename Mesh,
-          int MeshEntityDimension,
-          typename Real >
-void
-MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-boundLoad( const String& fileName )
-{
-   File file;
-   file.open( fileName, std::ios_base::in );
-   this->boundLoad( file );
-}
-
 template< typename Mesh,
           int MeshEntityDimension,
           typename Real >
 bool
 MeshFunctionView< Mesh, MeshEntityDimension, Real >::
-write( const String& fileName,
-       const String& format ) const
-{
-   std::fstream file;
-   file.open( fileName.getString(), std::ios::out );
-   if( ! file )
-   {
-      std::cerr << "Unable to open a file " << fileName << "." << std::endl;
-      return false;
-   }
-   if( format == "vtk" ) {
-      Meshes::Writers::VTKWriter< Mesh > writer( file );
-      writer.template writeEntities< getEntitiesDimension() >( *meshPointer );
-      if( MeshFunctionView::getEntitiesDimension() == 0 )
-         writer.writePointData( getData(), "cellFunctionValues", 1 );
-      else
-         writer.writeCellData( getData(), "pointFunctionValues", 1 );
-   }
-   else if( format == "vtu" ) {
-      Meshes::Writers::VTUWriter< Mesh > writer( file );
-      writer.template writeEntities< getEntitiesDimension() >( *meshPointer );
-      if( MeshFunctionView::getEntitiesDimension() == 0 )
-         writer.writePointData( getData(), "cellFunctionValues", 1 );
-      else
-         writer.writeCellData( getData(), "pointFunctionValues", 1 );
-   }
-   else if( format == "gnuplot" )
-      return MeshFunctionGnuplotWriter< MeshFunctionView >::write( *this, file );
-   else {
-      std::cerr << "Unknown output format: " << format << std::endl;
-      return false;
-   }
-   return true;
+write( const std::string& functionName,
+       const std::string& fileName,
+       const std::string& fileFormat ) const
+{
+   return writeMeshFunction( *this, functionName, fileName, fileFormat );
 }
 
 template< typename Mesh,
diff --git a/src/TNL/Functions/VectorField.h b/src/TNL/Functions/VectorField.h
index f0e875608bf16ef49b1ff3c88ad546c7b8633973..771f49f1ce1654ea1c6e304a243907fd91ada962 100644
--- a/src/TNL/Functions/VectorField.h
+++ b/src/TNL/Functions/VectorField.h
@@ -10,6 +10,8 @@
 
 #pragma once
 
+#include <experimental/filesystem>
+
 #include <TNL/Functions/Domain.h>
 #include <TNL/Devices/Cuda.h>
 #include <TNL/Config/ParameterContainer.h>
@@ -18,22 +20,23 @@
 #include <TNL/Functions/VectorFieldGnuplotWriter.h>
 #include <TNL/Meshes/Writers/VTKWriter.h>
 #include <TNL/Meshes/Writers/VTUWriter.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
 
 namespace TNL {
 namespace Functions {
 
 template< int Size,
           typename Function >
-class VectorField 
-   : public Functions::Domain< Function::getDomainDimension(), 
+class VectorField
+   : public Functions::Domain< Function::getDomainDimension(),
                                Function::getDomainType() >
 {
    public:
-      
+
       typedef Function FunctionType;
       typedef typename FunctionType::RealType RealType;
       typedef typename FunctionType::PointType PointType;
-      
+
       static void configSetup( Config::ConfigDescription& config,
                                const String& prefix = "" )
       {
@@ -55,35 +58,34 @@ class VectorField
          return true;
       }
 
-      __cuda_callable__ 
+      __cuda_callable__
       const FunctionType& operator[]( int i ) const
       {
          return this->vectorField[ i ];
       }
-      
-      __cuda_callable__ 
+
+      __cuda_callable__
       FunctionType& operator[]( int i )
       {
          return this->vectorField[ i ];
       }
 
    protected:
-      
+
       Containers::StaticArray< Size, FunctionType > vectorField;
 };
-   
-   
+
+
 template< int Size,
           typename Mesh,
           int MeshEntityDimension,
           typename Real >
 class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
-: public Functions::Domain< MeshFunction< Mesh, MeshEntityDimension, Real >::getDomainDimension(), 
-                            MeshFunction< Mesh, MeshEntityDimension, Real >::getDomainType() >,
-   public Object
+: public Functions::Domain< MeshFunction< Mesh, MeshEntityDimension, Real >::getDomainDimension(),
+                            MeshFunction< Mesh, MeshEntityDimension, Real >::getDomainType() >
 {
    public:
-      
+
       typedef Mesh MeshType;
       typedef Real RealType;
       typedef Pointers::SharedPointer<  MeshType > MeshPointer;
@@ -92,13 +94,13 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
       typedef typename MeshType::DeviceType DeviceType;
       typedef typename MeshType::GlobalIndexType IndexType;
       typedef Containers::StaticVector< Size, RealType > VectorType;
-      
+
       static constexpr int getEntitiesDimension() { return FunctionType::getEntitiesDimension(); }
-      
+
       static constexpr int getMeshDimension() { return MeshType::getMeshDimension(); }
 
 	  static constexpr int getVectorDimension() { return Size; }
-      
+
 
       static void configSetup( Config::ConfigDescription& config,
                                const String& prefix = "" )
@@ -106,35 +108,21 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
          for( int i = 0; i < Size; i++ )
             FunctionType::configSetup( config, prefix + convertToString( i ) + "-" );
       }
-      
+
       VectorField() {};
-      
+
       VectorField( const MeshPointer& meshPointer )
       {
          for( int i = 0; i < Size; i++ )
             this->vectorField[ i ]->setMesh( meshPointer );
       };
-      
-      static String getSerializationType()
-      {
-         return String( "Functions::VectorField< " ) +
-                  convertToString( Size) + ", " +
-                 FunctionType::getSerializationType() +
-                  " >";         
-      }
 
-      virtual String getSerializationTypeVirtual() const
-      {
-         return this->getSerializationType();
-      }
-      
-      
       void setMesh( const MeshPointer& meshPointer )
       {
          for( int i = 0; i < Size; i++ )
             this->vectorField[ i ]->setMesh( meshPointer );
       }
-      
+
       template< typename Device = Devices::Host >
       __cuda_callable__
       const MeshType& getMesh() const
@@ -146,7 +134,7 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
       {
          return this->vectorField[ 0 ]->getMeshPointer();
       }
-      
+
       bool setup( const MeshPointer& meshPointer,
                   const Config::ParameterContainer& parameters,
                   const String& prefix = "" )
@@ -159,31 +147,31 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
             }
          return true;
       }
-      
+
       static IndexType getDofs( const MeshPointer& meshPointer )
       {
          return Size * FunctionType::getDofs( meshPointer );
       }
-      
-      __cuda_callable__ 
+
+      __cuda_callable__
       const FunctionPointer& operator[]( int i ) const
       {
          return this->vectorField[ i ];
       }
-      
-      __cuda_callable__ 
+
+      __cuda_callable__
       FunctionPointer& operator[]( int i )
       {
          return this->vectorField[ i ];
       }
-      
-      __cuda_callable__ 
+
+      __cuda_callable__
       void setElement( const IndexType i, const VectorType& v )
       {
          for( int j = 0; j < Size; j++ )
             ( *this )[ j ]->getData().setElement( i, v[ j ] );
       }
-      
+
       __cuda_callable__
       VectorType getElement( const IndexType i ) const
       {
@@ -192,7 +180,7 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
             v[ j ] = ( *this )[ j ]->getData().getElement( i );
          return v;
       }
-      
+
       __cuda_callable__
       VectorType getVector( const IndexType index ) const
       {
@@ -221,46 +209,29 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
             v[ i ] = this->vectorField[ i ].template getData< Devices::Cuda >()( meshEntity );
          return v;
       }
-      
-      void save( File& file ) const
-      {
-         Object::save( file );
-         for( int i = 0; i < Size; i++ )
-            vectorField[ i ]->save( file );
-      }
 
-      void load( File& file )
-      {
-         Object::load( file );
-         for( int i = 0; i < Size; i++ )
-            vectorField[ i ]->load( file );
-      }
-
-      void boundLoad( File& file )
-      {
-         Object::load( file );
-         for( int i = 0; i < Size; i++ )
-            vectorField[ i ]->boundLoad( file );
-      }
-
-      void boundLoad( const String& fileName )
-      {
-         File file;
-         file.open( fileName, std::ios_base::in );
-         this->boundLoad( file );
-      }
-
-      bool write( const String& fileName,
-                  const String& format = "vtk" ) const
+      bool write( const std::string& functionName,
+                  const std::string& fileName,
+                  const std::string& fileFormat = "auto" ) const
       {
          std::fstream file;
-         file.open( fileName.getString(), std::ios::out );
+         file.open( fileName, std::ios::out );
          if( ! file )
          {
             std::cerr << "Unable to open a file " << fileName << "." << std::endl;
             return false;
          }
-         if( format == "vtk" || format == "vtu" ) {
+
+         namespace fs = std::experimental::filesystem;
+         std::string format = fileFormat;
+         if( format == "auto" ) {
+            format = fs::path(fileName).extension();
+            if( format.length() > 0 )
+               // remove dot from the extension
+               format = format.substr(1);
+         }
+
+         if( format == "vtk" || format == "vtu" || format == "vti" ) {
             // copy all values from the vector field into a contiguous array
             using BufferType = Containers::Array< typename VectorField::RealType, Devices::Host, IndexType >;
             const IndexType entitiesCount = getMeshPointer()->template getEntitiesCount< getEntitiesDimension() >();
@@ -277,20 +248,28 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
                Meshes::Writers::VTKWriter< Mesh > writer( file );
                writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() );
                if( getEntitiesDimension() == 0 )
-                  writer.writePointData( buffer, "cellVectorFieldValues", 3 );
+                  writer.writePointData( buffer, functionName, 3 );
                else
-                  writer.writeCellData( buffer, "pointVectorFieldValues", 3 );
+                  writer.writeCellData( buffer, functionName, 3 );
             }
             else if( format == "vtu" ) {
                Meshes::Writers::VTUWriter< Mesh > writer( file );
                writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() );
                if( getEntitiesDimension() == 0 )
-                  writer.writePointData( buffer, "cellVectorFieldValues", 3 );
+                  writer.writePointData( buffer, functionName, 3 );
+               else
+                  writer.writeCellData( buffer, functionName, 3 );
+            }
+            else if( format == "vti" ) {
+               Meshes::Writers::VTIWriter< Mesh > writer( file );
+               writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() );
+               if( getEntitiesDimension() == 0 )
+                  writer.writePointData( buffer, functionName, 3 );
                else
-                  writer.writeCellData( buffer, "pointVectorFieldValues", 3 );
+                  writer.writeCellData( buffer, functionName, 3 );
             }
          }
-         else if( format == "gnuplot" )
+         else if( format == "gnuplot" || format == "gplt" || format == "plt" )
             return VectorFieldGnuplotWriter< VectorField >::write( *this, file );
          else {
             std::cerr << "Unknown output format: " << format << std::endl;
@@ -299,28 +278,23 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > >
          return true;
       }
 
-      using Object::save;
-
-      using Object::load;
-
    protected:
 
       Containers::StaticArray< Size, FunctionPointer > vectorField;
 
 };
-   
-   
+
+
 template< int Size,
           typename Mesh,
           int MeshEntityDimension,
           typename Real >
 class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
-: public Functions::Domain< MeshFunctionView< Mesh, MeshEntityDimension, Real >::getDomainDimension(), 
-                            MeshFunctionView< Mesh, MeshEntityDimension, Real >::getDomainType() >,
-   public Object
+: public Functions::Domain< MeshFunctionView< Mesh, MeshEntityDimension, Real >::getDomainDimension(),
+                            MeshFunctionView< Mesh, MeshEntityDimension, Real >::getDomainType() >
 {
    public:
-      
+
       typedef Mesh MeshType;
       typedef Real RealType;
       typedef Pointers::SharedPointer<  MeshType > MeshPointer;
@@ -329,13 +303,13 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
       typedef typename MeshType::DeviceType DeviceType;
       typedef typename MeshType::GlobalIndexType IndexType;
       typedef Containers::StaticVector< Size, RealType > VectorType;
-      
+
       static constexpr int getEntitiesDimension() { return FunctionType::getEntitiesDimension(); }
-      
+
       static constexpr int getMeshDimension() { return MeshType::getMeshDimension(); }
 
 	  static constexpr int getVectorDimension() { return Size; }
-      
+
 
       static void configSetup( Config::ConfigDescription& config,
                                const String& prefix = "" )
@@ -343,35 +317,21 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
          for( int i = 0; i < Size; i++ )
             FunctionType::configSetup( config, prefix + convertToString( i ) + "-" );
       }
-      
+
       VectorField() {};
-      
+
       VectorField( const MeshPointer& meshPointer )
       {
          for( int i = 0; i < Size; i++ )
             this->vectorField[ i ]->setMesh( meshPointer );
       };
-      
-      static String getSerializationType()
-      {
-         return String( "Functions::VectorField< " ) +
-                  convertToString( Size) + ", " +
-                 FunctionType::getSerializationType() +
-                  " >";         
-      }
 
-      virtual String getSerializationTypeVirtual() const
-      {
-         return this->getSerializationType();
-      }
-      
-      
       void setMesh( const MeshPointer& meshPointer )
       {
          for( int i = 0; i < Size; i++ )
             this->vectorField[ i ]->setMesh( meshPointer );
       }
-      
+
       template< typename Device = Devices::Host >
       __cuda_callable__
       const MeshType& getMesh() const
@@ -383,7 +343,7 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
       {
          return this->vectorField[ 0 ]->getMeshPointer();
       }
-      
+
       bool setup( const MeshPointer& meshPointer,
                   const Config::ParameterContainer& parameters,
                   const String& prefix = "" )
@@ -396,12 +356,12 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
             }
          return true;
       }
-      
+
       static IndexType getDofs( const MeshPointer& meshPointer )
       {
          return Size * FunctionType::getDofs( meshPointer );
       }
-      
+
       void bind( VectorField& vectorField )
       {
          for( int i = 0; i < Size; i ++ )
@@ -409,7 +369,7 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
             this->vectorField[ i ]->bind( vectorField[ i ] );
          }
       };
- 
+
       template< typename Vector >
       void bind( const MeshPointer& meshPointer,
                  Vector& data,
@@ -423,7 +383,7 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
             offset += this->vectorField[ i ]->getDofs(meshPointer);
          }
       }
-      
+
       template< typename Vector >
       void bind( const MeshPointer& meshPointer,
                  Pointers::SharedPointer< Vector >& dataPtr,
@@ -435,28 +395,28 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
          {
             this->vectorField[ i ]->bind( meshPointer, dataPtr, offset );
             offset += this->vectorField[ i ]->getDofs( meshPointer );
-         }         
+         }
       }
 
-      __cuda_callable__ 
+      __cuda_callable__
       const FunctionPointer& operator[]( int i ) const
       {
          return this->vectorField[ i ];
       }
-      
-      __cuda_callable__ 
+
+      __cuda_callable__
       FunctionPointer& operator[]( int i )
       {
          return this->vectorField[ i ];
       }
-      
-      __cuda_callable__ 
+
+      __cuda_callable__
       void setElement( const IndexType i, const VectorType& v )
       {
          for( int j = 0; j < Size; j++ )
             ( *this )[ j ]->getData().setElement( i, v[ j ] );
       }
-      
+
       __cuda_callable__
       VectorType getElement( const IndexType i ) const
       {
@@ -465,7 +425,7 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
             v[ j ] = ( *this )[ j ]->getData().getElement( i );
          return v;
       }
-      
+
       __cuda_callable__
       VectorType getVector( const IndexType index ) const
       {
@@ -494,46 +454,29 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
             v[ i ] = this->vectorField[ i ].template getData< Devices::Cuda >()( meshEntity );
          return v;
       }
-      
-      void save( File& file ) const
-      {
-         Object::save( file );
-         for( int i = 0; i < Size; i++ )
-            vectorField[ i ]->save( file );
-      }
-
-      void load( File& file )
-      {
-         Object::load( file );
-         for( int i = 0; i < Size; i++ )
-            vectorField[ i ]->load( file );
-      }
-
-      void boundLoad( File& file )
-      {
-         Object::load( file );
-         for( int i = 0; i < Size; i++ )
-            vectorField[ i ]->boundLoad( file );
-      }
 
-      void boundLoad( const String& fileName )
-      {
-         File file;
-         file.open( fileName, std::ios_base::in );
-         this->boundLoad( file );
-      }
-
-      bool write( const String& fileName,
-                  const String& format = "vtk" ) const
+      bool write( const std::string& functionName,
+                  const std::string& fileName,
+                  const std::string& fileFormat = "auto" ) const
       {
          std::fstream file;
-         file.open( fileName.getString(), std::ios::out );
+         file.open( fileName, std::ios::out );
          if( ! file )
          {
             std::cerr << "Unable to open a file " << fileName << "." << std::endl;
             return false;
          }
-         if( format == "vtk" || format == "vtu" ) {
+
+         namespace fs = std::experimental::filesystem;
+         std::string format = fileFormat;
+         if( format == "auto" ) {
+            format = fs::path(fileName).extension();
+            if( format.length() > 0 )
+               // remove dot from the extension
+               format = format.substr(1);
+         }
+
+         if( format == "vtk" || format == "vtu" || format == "vti" ) {
             // copy all values from the vector field into a contiguous array
             using BufferType = Containers::Array< typename VectorField::RealType, Devices::Host, IndexType >;
             const IndexType entitiesCount = getMeshPointer()->template getEntitiesCount< getEntitiesDimension() >();
@@ -550,20 +493,28 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
                Meshes::Writers::VTKWriter< Mesh > writer( file );
                writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() );
                if( getEntitiesDimension() == 0 )
-                  writer.writePointData( buffer, "cellVectorFieldValues", 3 );
+                  writer.writePointData( buffer, functionName, 3 );
                else
-                  writer.writeCellData( buffer, "pointVectorFieldValues", 3 );
+                  writer.writeCellData( buffer, functionName, 3 );
             }
             else if( format == "vtu" ) {
                Meshes::Writers::VTUWriter< Mesh > writer( file );
                writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() );
                if( getEntitiesDimension() == 0 )
-                  writer.writePointData( buffer, "cellVectorFieldValues", 3 );
+                  writer.writePointData( buffer, functionName, 3 );
                else
-                  writer.writeCellData( buffer, "pointVectorFieldValues", 3 );
+                  writer.writeCellData( buffer, functionName, 3 );
+            }
+            else if( format == "vti" ) {
+               Meshes::Writers::VTIWriter< Mesh > writer( file );
+               writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() );
+               if( getEntitiesDimension() == 0 )
+                  writer.writePointData( buffer, functionName, 3 );
+               else
+                  writer.writeCellData( buffer, functionName, 3 );
             }
          }
-         else if( format == "gnuplot" )
+         else if( format == "gnuplot" || format == "gplt" || format == "plt" )
             return VectorFieldGnuplotWriter< VectorField >::write( *this, file );
          else {
             std::cerr << "Unknown output format: " << format << std::endl;
@@ -572,10 +523,6 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > >
          return true;
       }
 
-      using Object::save;
-
-      using Object::load;
-
    protected:
 
       Containers::StaticArray< Size, FunctionPointer > vectorField;
@@ -595,6 +542,5 @@ std::ostream& operator << ( std::ostream& str, const VectorField< Dimension, Fun
    return str;
 }
 
-   
-} //namespace Functions
-} //namepsace TNL
+} // namespace Functions
+} // namepsace TNL
diff --git a/src/TNL/Meshes/DistributedMeshes/Directions.h b/src/TNL/Meshes/DistributedMeshes/Directions.h
index 165e7642e9d5999ea4f424b878c33bbafc98555a..80606abb0c25ca73201f96ce72da07cbf91bf57f 100644
--- a/src/TNL/Meshes/DistributedMeshes/Directions.h
+++ b/src/TNL/Meshes/DistributedMeshes/Directions.h
@@ -4,51 +4,51 @@
 #include <TNL/Containers/StaticVector.h>
 
 namespace TNL {
-namespace Meshes { 
+namespace Meshes {
 namespace DistributedMeshes {
 
-//index of direction can be written as number in 3-base system 
+//index of direction can be written as number in 3-base system
 //  -> 1 order x axis, 2 order y axis, 3 order z axis
 //  -> 0 - not used, 1 negative direction, 2 positive direction
 //finaly we subtrackt 1 because we dont need (0,0,0) aka 0 aka no direction
 
-//enum Directions2D { Left = 0 , Right = 1 , Up = 2, UpLeft =3, UpRight=4, Down=5, DownLeft=6, DownRight=7 }; 
+//enum Directions2D { Left = 0 , Right = 1 , Up = 2, UpLeft =3, UpRight=4, Down=5, DownLeft=6, DownRight=7 };
 
 /*MEH - osa zed je zdola nahoru, asi---
-enum Directions3D { West = 0 , East = 1 , 
+enum Directions3D { West = 0 , East = 1 ,
                     North = 2, NorthWest = 3, NorthEast = 4,
                     South = 5, SouthWest = 6, SouthEast = 7,
                     Top = 8, TopWest = 9, TopEast =10,
                     TopNorth = 11, TopNorthWest = 12, TopNorthEast = 13,
                     TopSouth = 14, TopSouthWest = 15,TopSouthEast = 16,
-                    Bottom = 17 ,BottomWest = 18 , BottomEast = 19 , 
+                    Bottom = 17 ,BottomWest = 18 , BottomEast = 19 ,
                     BottomNorth = 20, BottomNorthWest = 21, BottomNorthEast = 22,
                     BottomSouth = 23, BottomSouthWest = 24, BottomSouthEast = 25,
                   };*/
 
 /*
 with self
-enum Directions3D { 
-                    ZzYzXz =  0, ZzYzXm =  1, ZzYzXp =  2, 
+enum Directions3D {
+                    ZzYzXz =  0, ZzYzXm =  1, ZzYzXp =  2,
                     ZzYmXz =  3, ZzYmXm =  4, ZzYmXp =  5,
-                    ZzYpXz =  6, ZzYpXm =  7, ZzYpXp =  8,                    
-                    ZmYzXz =  9, ZmYzXm = 10, ZmYzXp = 11, 
+                    ZzYpXz =  6, ZzYpXm =  7, ZzYpXp =  8,
+                    ZmYzXz =  9, ZmYzXm = 10, ZmYzXp = 11,
                     ZmYmXz = 12, ZmYmXm = 13, ZmYmXp = 14,
                     ZmYpXz = 15, ZmYpXm = 16, ZmYpXp = 17,
-                    ZpYzXz = 18, ZpYzXm = 19, ZpYzXp = 20, 
+                    ZpYzXz = 18, ZpYzXm = 19, ZpYzXp = 20,
                     ZpYmXz = 21, ZpYmXm = 22, ZpYmXp = 23,
                     ZpYpXz = 24, ZpYpXm = 25, ZpYpXp = 26
                   };
 */
 
-enum Directions3D { 
-                    ZzYzXm =  0, ZzYzXp =  1, 
+enum Directions3D {
+                    ZzYzXm =  0, ZzYzXp =  1,
                     ZzYmXz =  2, ZzYmXm =  3, ZzYmXp =  4,
-                    ZzYpXz =  5, ZzYpXm =  6, ZzYpXp =  7,                    
-                    ZmYzXz =  8, ZmYzXm =  9, ZmYzXp = 10, 
+                    ZzYpXz =  5, ZzYpXm =  6, ZzYpXp =  7,
+                    ZmYzXz =  8, ZmYzXm =  9, ZmYzXp = 10,
                     ZmYmXz = 11, ZmYmXm = 12, ZmYmXp = 13,
                     ZmYpXz = 14, ZmYpXm = 15, ZmYpXp = 16,
-                    ZpYzXz = 17, ZpYzXm = 18, ZpYzXp = 19, 
+                    ZpYzXz = 17, ZpYzXm = 18, ZpYzXp = 19,
                     ZpYmXz = 20, ZpYmXm = 21, ZpYmXp = 22,
                     ZpYpXz = 23, ZpYpXm = 24, ZpYpXp = 25
                   };
@@ -84,7 +84,7 @@ public:
         }
         return res;
     }
-    
+
 
  /*   static int getDirection(int direction)
     {
@@ -109,21 +109,20 @@ public:
         result+=add(direction3);
         return result-1;
     }*/
-    
-    static int add(int direction)
+
+    static constexpr int add(int direction)
     {
         if(direction==0)
             return 0;
 
         if(direction>0)
-            return 2*pow3(direction-1); //positive direction has higer index
+            return 2*i3pow(direction-1); //positive direction has higer index
         else
-            return pow3(-direction-1);
-
-
+            return i3pow(-direction-1);
     }
 
-    static int pow3(int exp)
+    // return 3^exp
+    static constexpr int i3pow(int exp)
     {
         int ret=1;
         for(int i=0;i<exp;i++)
@@ -132,37 +131,6 @@ public:
     }
 };
 
-//for c++11 -- in c++14 simply 3^dim-1
-template<int dim>
-class DirectionCount
-{
-public:
-    static constexpr int get(){return 0;}
-};
-
-template <>
-class DirectionCount<1>
-{
-public:
-    static constexpr int get(){return 2;}
-};
-
-template <>
-class DirectionCount<2>
-{
-public:
-    static constexpr int get(){return 8;}
-};
-
-template <>
-class DirectionCount<3>
-{
-public:
-    static constexpr int get(){return 26;}
-};
-
-
 } // namespace DistributedMeshes
 } // namespace Meshes
 } // namespace TNL
-
diff --git a/src/TNL/Meshes/DistributedMeshes/DistributedGrid.h b/src/TNL/Meshes/DistributedMeshes/DistributedGrid.h
index 4082024e378d844f9155bbabbedaccfd6f468599..c112b8d6518a1d122d54d3574031641a85dc16a9 100644
--- a/src/TNL/Meshes/DistributedMeshes/DistributedGrid.h
+++ b/src/TNL/Meshes/DistributedMeshes/DistributedGrid.h
@@ -1,5 +1,5 @@
 /***************************************************************************
-                          DistributedGrid_Base.h  -  part common for all Dimensionensions
+                          DistributedGrid.h  -  description
                              -------------------
     begin                : July 07, 2018
     copyright            : (C) 2018 by Tomas Oberhuber
@@ -16,41 +16,33 @@
 #include <TNL/Meshes/DistributedMeshes/Directions.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 
-
 namespace TNL {
 namespace Meshes {
 namespace DistributedMeshes {
 
-
-
 template< int Dimension,
           typename Real,
           typename Device,
           typename Index >
 class DistributedMesh< Grid< Dimension, Real, Device, Index > >
 {
-  public:
-
-      typedef Real RealType;
-      typedef Device DeviceType;
-      typedef Index IndexType;
-      typedef Grid< Dimension, Real, Device, IndexType > GridType;
-      typedef typename GridType::PointType PointType;
-      typedef Containers::StaticVector< Dimension, IndexType > CoordinatesType;
-      typedef Containers::StaticVector< Dimension, IndexType > SubdomainOverlapsType;
+   public:
+      using RealType = Real;
+      using DeviceType = Device;
+      using IndexType = Index;
+      using GlobalIndexType = Index;
+      using GridType = Grid< Dimension, Real, Device, IndexType >;
+      using PointType = typename GridType::PointType;
+      using CoordinatesType = Containers::StaticVector< Dimension, IndexType >;
+      using SubdomainOverlapsType = Containers::StaticVector< Dimension, IndexType >;
 
       static constexpr int getMeshDimension() { return Dimension; };
 
-      static constexpr int getNeighborsCount() { return DirectionCount<Dimension>::get(); } //c++14 may use Directions::pow3(Dimension)-1
+      static constexpr int getNeighborsCount() { return Directions::i3pow(Dimension)-1; }
 
-      DistributedMesh();
+      DistributedMesh() = default;
 
-      ~DistributedMesh();
-
-      static void configSetup( Config::ConfigDescription& config );
-
-      bool setup( const Config::ParameterContainer& parameters,
-                  const String& prefix );
+      ~DistributedMesh() = default;
 
       void setDomainDecomposition( const CoordinatesType& domainDecomposition );
 
@@ -63,21 +55,22 @@ class DistributedMesh< Grid< Dimension, Real, Device, Index > >
       void setOverlaps( const SubdomainOverlapsType& lower,
                         const SubdomainOverlapsType& upper);
 
-      void setupGrid( GridType& grid);
+      // for compatibility with DistributedMesh
+      void setGhostLevels( int levels );
+      int getGhostLevels() const;
 
       bool isDistributed() const;
 
       bool isBoundarySubdomain() const;
 
-      // TODO: replace it with getLowerOverlap() and getUpperOverlap()
-      // It is still being used in cuts set-up
-      const CoordinatesType& getOverlap() const { return this->overlap;};
-
       //currently used overlaps at this subdomain
       const SubdomainOverlapsType& getLowerOverlap() const;
 
       const SubdomainOverlapsType& getUpperOverlap() const;
 
+      // returns the local grid WITH overlap
+      const GridType& getLocalMesh() const;
+
       //number of elements of local sub domain WITHOUT overlap
       // TODO: getSubdomainDimensions
       const CoordinatesType& getLocalSize() const;
@@ -89,20 +82,10 @@ class DistributedMesh< Grid< Dimension, Real, Device, Index > >
       //coordinates of begin of local subdomain without overlaps in global grid
       const CoordinatesType& getGlobalBegin() const;
 
-      //number of elements of local sub domain WITH overlap
-      // TODO: replace with localGrid
-      const CoordinatesType& getLocalGridSize() const;
-
-      //coordinates of begin of local subdomain without overlaps in local grid
-      const CoordinatesType& getLocalBegin() const;
-
       const CoordinatesType& getSubdomainCoordinates() const;
 
-      const PointType& getLocalOrigin() const;
-      const PointType& getSpaceSteps() const;
-
       //aka MPI-communcicator
-      void setCommunicationGroup(MPI_Comm group);
+      void setCommunicationGroup( MPI_Comm group );
       MPI_Comm getCommunicationGroup() const;
 
       template< int EntityDimension >
@@ -129,46 +112,41 @@ class DistributedMesh< Grid< Dimension, Real, Device, Index > >
 
       void writeProlog( Logger& logger );
 
+      bool operator==( const DistributedMesh& other ) const;
+
+      bool operator!=( const DistributedMesh& other ) const;
+
    public:
 
       bool isThereNeighbor(const CoordinatesType &direction) const;
 
       void setupNeighbors();
 
-      void print( std::ostream& str ) const;
+      GridType globalGrid, localGrid;
+      CoordinatesType localSize = 0;
+      CoordinatesType globalBegin = 0;
 
-      GridType globalGrid;
-      PointType localOrigin;
-      CoordinatesType localBegin;
-      CoordinatesType localSize;
-      CoordinatesType localGridSize;
-      CoordinatesType overlap;
-      //CoordinatesType globalDimensions;
-      CoordinatesType globalBegin;
-      PointType spaceSteps;
+      SubdomainOverlapsType lowerOverlap = 0;
+      SubdomainOverlapsType upperOverlap = 0;
 
-      SubdomainOverlapsType lowerOverlap, upperOverlap, globalLowerOverlap, globalUpperOverlap;
-
-      CoordinatesType domainDecomposition;
-      CoordinatesType subdomainCoordinates;
+      CoordinatesType domainDecomposition = 0;
+      CoordinatesType subdomainCoordinates = 0;
 
       // TODO: static arrays
       int neighbors[ getNeighborsCount() ];
       int periodicNeighbors[ getNeighborsCount() ];
 
-      IndexType Dimensions;
-      bool distributed;
-
-      int rank;
-      int nproc;
+      bool distributed = false;
 
-      bool isSet;
+      bool isSet = false;
 
       //aka MPI-communicator
-      MPI_Comm group;
-
+      MPI_Comm group = MPI::AllGroup();
 };
 
+template< int Dimension, typename Real, typename Device, typename Index >
+std::ostream& operator<<( std::ostream& str, const DistributedMesh< Grid< Dimension, Real, Device, Index > >& grid );
+
 } // namespace DistributedMeshes
 } // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/DistributedMeshes/DistributedGrid.hpp b/src/TNL/Meshes/DistributedMeshes/DistributedGrid.hpp
index c48fec9af40e64d4f8dc12ff51c323e47360f09f..043c61c74d4f0998e6de71c36fb7594092dd4578 100644
--- a/src/TNL/Meshes/DistributedMeshes/DistributedGrid.hpp
+++ b/src/TNL/Meshes/DistributedMeshes/DistributedGrid.hpp
@@ -1,5 +1,5 @@
 /***************************************************************************
-                          DistributedGrid_Base.hpp  -  description
+                          DistributedGrid.hpp  -  description
                              -------------------
     begin                : July 07, 2018
     copyright            : (C) 2018 by Tomas Oberhuber
@@ -13,47 +13,12 @@
 #include <cstdlib>
 
 #include "DistributedGrid.h"
+#include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
 #include <TNL/MPI/Wrappers.h>
 
 namespace TNL {
-   namespace Meshes {
-      namespace DistributedMeshes {
-
-template<int Dimension, typename Real, typename Device, typename Index >
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-DistributedMesh()
- : domainDecomposition( 0 ), isSet( false ) {}
-
-template<int Dimension, typename Real, typename Device, typename Index >
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-~DistributedMesh()
-{
-}
-
-
-template<int Dimension, typename Real, typename Device, typename Index >
-void
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-configSetup( Config::ConfigDescription& config )
-{
-   config.addEntry< int >( "grid-domain-decomposition-x", "Number of grid subdomains along x-axis.", 0 );
-   config.addEntry< int >( "grid-domain-decomposition-y", "Number of grid subdomains along y-axis.", 0 );
-   config.addEntry< int >( "grid-domain-decomposition-z", "Number of grid subdomains along z-axis.", 0 );
-}
-
-template<int Dimension, typename Real, typename Device, typename Index >
-bool
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-setup( const Config::ParameterContainer& parameters,
-       const String& prefix )
-{
-   this->domainDecomposition[ 0 ] = parameters.getParameter< int >( "grid-domain-decomposition-x" );
-   if( Dimension > 1 )
-      this->domainDecomposition[ 1 ] = parameters.getParameter< int >( "grid-domain-decomposition-y" );
-   if( Dimension > 2 )
-      this->domainDecomposition[ 2 ] = parameters.getParameter< int >( "grid-domain-decomposition-z" );
-   return true;
-}
+namespace Meshes {
+namespace DistributedMeshes {
 
 template< int Dimension, typename Real, typename Device, typename Index >
 void
@@ -74,41 +39,25 @@ getDomainDecomposition() const
 template< int Dimension, typename Real, typename Device, typename Index >
 void
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-setGlobalGrid( const GridType &globalGrid )
+setGlobalGrid( const GridType& globalGrid )
 {
-   this->group = MPI::AllGroup();
-
    this->globalGrid = globalGrid;
    this->isSet=true;
-   this->overlap.setValue( 1 ); // TODO: Remove this - its only for compatibility with old code
-   this->lowerOverlap.setValue( 0 );
-   this->upperOverlap.setValue( 0 );
 
    for( int i = 0; i < getNeighborsCount(); i++ )
       this->neighbors[ i ] = -1;
 
-   this->Dimensions= GridType::getMeshDimension();
-   this->spaceSteps=globalGrid.getSpaceSteps();
-   this->distributed=false;
-
-   this->rank=MPI::GetRank(group);
-   this->nproc=MPI::GetSize(group);
-   //use MPI only if have more than one process
-   if(this->nproc>1)
-   {
-      this->distributed=true;
-   }
+   // use MPI only if have more than one process
+   this->distributed = MPI::GetSize(group) > 1;
 
    if( !this->distributed )
    {
       this->subdomainCoordinates.setValue( 0 );
       this->domainDecomposition.setValue( 0 );
-      this->localOrigin=globalGrid.getOrigin();
-      this->localGridSize=globalGrid.getDimensions();
-      this->localSize=globalGrid.getDimensions();
-      this->globalBegin=CoordinatesType(0);
-      this->localBegin.setValue( 0 );
-      return;
+      localGrid.setOrigin( globalGrid.getOrigin() );
+      localGrid.setDimensions( globalGrid.getDimensions() );
+      this->localSize = globalGrid.getDimensions();
+      this->globalBegin = 0;
    }
    else
    {
@@ -117,12 +66,12 @@ setGlobalGrid( const GridType &globalGrid )
       int dims[ Dimension ];
       for( int i = 0; i < Dimension; i++ )
          dims[ i ] = this->domainDecomposition[ i ];
-      MPI::Compute_dims( this->nproc, Dimension, dims );
+      MPI::Compute_dims( MPI::GetSize(group), Dimension, dims );
       for( int i = 0; i < Dimension; i++ )
          this->domainDecomposition[ i ] = dims[ i ];
 
-      int size = this->nproc;
-      int tmp = this->rank;
+      int size = MPI::GetSize(group);
+      int tmp = MPI::GetRank(group);
       for( int i = Dimension - 1; i >= 0; i-- )
       {
          size = size / this->domainDecomposition[ i ];
@@ -146,9 +95,12 @@ setGlobalGrid( const GridType &globalGrid )
                                      ( this->subdomainCoordinates[ i ] - numberOfLarger[ i ] ) * this->localSize[ i ];
       }
 
-      this->localGridSize = this->localSize;
+      localGrid.setDimensions( this->localSize );
       this->setupNeighbors();
-  }
+   }
+
+   // setting space steps computes the grid proportions as a side efect
+   localGrid.setSpaceSteps( globalGrid.getSpaceSteps() );
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
@@ -159,47 +111,59 @@ setOverlaps( const SubdomainOverlapsType& lower,
 {
    this->lowerOverlap = lower;
    this->upperOverlap = upper;
-   this->localOrigin = this->globalGrid.getOrigin() + this->globalGrid.getSpaceSteps() * (this->globalBegin - this->lowerOverlap);
-   this->localBegin = this->lowerOverlap;
-   this->localGridSize = this->localSize + this->lowerOverlap + this->upperOverlap;
+   localGrid.setOrigin( this->globalGrid.getOrigin() + this->globalGrid.getSpaceSteps() * (this->globalBegin - this->lowerOverlap) );
+   localGrid.setDimensions( this->localSize + this->lowerOverlap + this->upperOverlap );
+   // setting space steps computes the grid proportions as a side efect
+   localGrid.setSpaceSteps( globalGrid.getSpaceSteps() );
+
+   // update local begin and end
+   localGrid.setLocalBegin( this->lowerOverlap );
+   localGrid.setLocalEnd( localGrid.getDimensions() - this->upperOverlap );
+
+   // update interior begin and end
+   CoordinatesType interiorBegin = this->lowerOverlap;
+   CoordinatesType interiorEnd = localGrid.getDimensions() - this->upperOverlap;
+   const int* neighbors = getNeighbors();
+   if( neighbors[ ZzYzXm ] == -1 )
+      interiorBegin[0] += 1;
+   if( neighbors[ ZzYzXp ] == -1 )
+      interiorEnd[0] -= 1;
+   if( ZzYmXz < getNeighborsCount() && neighbors[ ZzYmXz ] == -1 )
+      interiorBegin[1] += 1;
+   if( ZzYpXz < getNeighborsCount() && neighbors[ ZzYpXz ] == -1 )
+      interiorEnd[1] -= 1;
+   if( ZmYzXz < getNeighborsCount() && neighbors[ ZmYzXz ] == -1 )
+      interiorBegin[2] += 1;
+   if( ZpYzXz < getNeighborsCount() && neighbors[ ZpYzXz ] == -1 )
+      interiorEnd[2] -= 1;
+   localGrid.setInteriorBegin( interiorBegin );
+   localGrid.setInteriorEnd( interiorEnd );
 }
 
-
 template< int Dimension, typename Real, typename Device, typename Index >
 void
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-setupGrid( GridType& grid)
-{
-   TNL_ASSERT_TRUE(this->isSet,"DistributedGrid is not set, but used by SetupGrid");
-   grid.setOrigin(this->localOrigin);
-   grid.setDimensions(this->localGridSize);
-   //compute local proportions by side efect
-   grid.setSpaceSteps(this->spaceSteps);
-   grid.setDistMesh(this);
-};
-
-template< int Dimension, typename Real, typename Device, typename Index >
-const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::CoordinatesType&
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-getSubdomainCoordinates() const
+setGhostLevels( int levels )
 {
-   return this->subdomainCoordinates;
+   SubdomainOverlapsType lowerOverlap, upperOverlap;
+   SubdomainOverlapsGetter< GridType >::getOverlaps( this, lowerOverlap, upperOverlap, levels );
+   setOverlaps( lowerOverlap, upperOverlap );
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
-const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::PointType&
+int
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-getLocalOrigin() const
+getGhostLevels() const
 {
-   return this->localOrigin;
+   return TNL::max( TNL::max(lowerOverlap), TNL::max(upperOverlap) );
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
-const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::PointType&
+const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::CoordinatesType&
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-getSpaceSteps() const
+getSubdomainCoordinates() const
 {
-   return this->spaceSteps;
+   return this->subdomainCoordinates;
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
@@ -237,6 +201,14 @@ getUpperOverlap() const
    return this->upperOverlap;
 };
 
+template< int Dimension, typename Real, typename Device, typename Index >
+const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::GridType&
+DistributedMesh< Grid< Dimension, Real, Device, Index > >::
+getLocalMesh() const
+{
+    return this->localGrid;
+}
+
 template< int Dimension, typename Real, typename Device, typename Index >
 const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::CoordinatesType&
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
@@ -269,22 +241,6 @@ getGlobalBegin() const
    return this->globalBegin;
 }
 
-template< int Dimension, typename Real, typename Device, typename Index >
-const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::CoordinatesType&
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-getLocalGridSize() const
-{
-   return this->localGridSize;
-}
-
-template< int Dimension, typename Real, typename Device, typename Index >
-const typename DistributedMesh< Grid< Dimension, Real, Device, Index > >::CoordinatesType&
-DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-getLocalBegin() const
-{
-   return this->localBegin;
-}
-
 template< int Dimension, typename Real, typename Device, typename Index >
    template< int EntityDimension >
 Index
@@ -306,9 +262,9 @@ getEntitiesCount() const
 template< int Dimension, typename Real, typename Device, typename Index >
 void
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-setCommunicationGroup(MPI_Comm group)
+setCommunicationGroup( MPI_Comm group )
 {
-    this->group=group;
+   this->group = group;
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
@@ -316,7 +272,7 @@ MPI_Comm
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
 getCommunicationGroup() const
 {
-    return this->group;
+   return this->group;
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
@@ -402,81 +358,86 @@ template< int Dimension, typename Real, typename Device, typename Index >
     template<typename DistributedGridType >
 bool
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-SetupByCut(DistributedGridType &inputDistributedGrid,
-         Containers::StaticVector<Dimension, int> savedDimensions,
-         Containers::StaticVector<DistributedGridType::getMeshDimension()-Dimension,int> reducedDimensions,
-         Containers::StaticVector<DistributedGridType::getMeshDimension()-Dimension,IndexType> fixedIndexs)
+SetupByCut( DistributedGridType &inputDistributedGrid,
+            Containers::StaticVector<Dimension, int> savedDimensions,
+            Containers::StaticVector<DistributedGridType::getMeshDimension()-Dimension,int> reducedDimensions,
+            Containers::StaticVector<DistributedGridType::getMeshDimension()-Dimension,IndexType> fixedIndexs)
 {
+   bool isInCut=true;
+   const int coDimension = DistributedGridType::getMeshDimension()-Dimension;
+   for( int i = 0; i < coDimension; i++ )
+   {
+      auto begin = inputDistributedGrid.getGlobalBegin();
+      auto size = inputDistributedGrid.getLocalSize();
+      isInCut &= fixedIndexs[i] > begin[reducedDimensions[i]] && fixedIndexs[i] < begin[reducedDimensions[i]] + size[reducedDimensions[i]];
+   }
 
-      int coDimensionension=DistributedGridType::getMeshDimension()-Dimension;
-
-      bool isInCut=true;
-      for(int i=0;i<coDimensionension; i++)
+   // create new group with used nodes
+   const MPI_Comm oldGroup = inputDistributedGrid.getCommunicationGroup();
+   if(isInCut)
+   {
+      this->isSet=true;
+
+      auto fromGlobalMesh = inputDistributedGrid.getGlobalGrid();
+      // set global grid
+      typename GridType::PointType outOrigin;
+      typename GridType::PointType outProportions;
+      typename GridType::CoordinatesType outDimensions;
+      // set local grid
+      typename GridType::PointType localOrigin;
+      typename GridType::CoordinatesType localBegin, localGridSize;
+
+      for(int i=0; i<Dimension;i++)
       {
-            auto begin=inputDistributedGrid.getGlobalBegin();
-            auto size= inputDistributedGrid.getLocalSize();
-            isInCut &= fixedIndexs[i]>begin[reducedDimensions[i]] && fixedIndexs[i]< (begin[reducedDimensions[i]]+size[reducedDimensions[i]]);
+         outOrigin[i] = fromGlobalMesh.getOrigin()[savedDimensions[i]];
+         outProportions[i] = fromGlobalMesh.getProportions()[savedDimensions[i]];
+         outDimensions[i] = fromGlobalMesh.getDimensions()[savedDimensions[i]];
+
+         this->domainDecomposition[i] = inputDistributedGrid.getDomainDecomposition()[savedDimensions[i]];
+         this->subdomainCoordinates[i] = inputDistributedGrid.getSubdomainCoordinates()[savedDimensions[i]];
+
+         this->lowerOverlap[i] = inputDistributedGrid.getLowerOverlap()[savedDimensions[i]];
+         this->upperOverlap[i] = inputDistributedGrid.getUpperOverlap()[savedDimensions[i]];
+         this->localSize[i] = inputDistributedGrid.getLocalSize()[savedDimensions[i]];
+         this->globalBegin[i] = inputDistributedGrid.getGlobalBegin()[savedDimensions[i]];
+         localGridSize[i] = inputDistributedGrid.getLocalMesh().getDimensions()[savedDimensions[i]];
+         localBegin[i] = inputDistributedGrid.getLocalMesh().getLocalBegin()[savedDimensions[i]];
+         localOrigin[i] = inputDistributedGrid.getLocalMesh().getOrigin()[savedDimensions[i]];
       }
 
-      //create new group with used nodes
-      const MPI_Comm oldGroup=inputDistributedGrid.getCommunicationGroup();
-      if(isInCut)
-      {
-           this->isSet=true;
-
-            auto fromGlobalMesh=inputDistributedGrid.getGlobalGrid();
-            //set global grid
-            typename GridType::PointType outOrigin;
-            typename GridType::PointType outProportions;
-            typename GridType::CoordinatesType outDimensions;
-
-            for(int i=0; i<Dimension;i++)
-            {
-                outOrigin[i]=fromGlobalMesh.getOrigin()[savedDimensions[i]];
-                outProportions[i]=fromGlobalMesh.getProportions()[savedDimensions[i]];
-                outDimensions[i]=fromGlobalMesh.getDimensions()[savedDimensions[i]];
-
-                this->domainDecomposition[i]=inputDistributedGrid.getDomainDecomposition()[savedDimensions[i]];
-                this->subdomainCoordinates[i]=inputDistributedGrid.getSubdomainCoordinates()[savedDimensions[i]];
-
-                this->overlap[i]=inputDistributedGrid.getOverlap()[savedDimensions[i]];//TODO: RomoveThis
-                this->lowerOverlap[i]=inputDistributedGrid.getLowerOverlap()[savedDimensions[i]];
-                this->upperOverlap[i]=inputDistributedGrid.getUpperOverlap()[savedDimensions[i]];
-                this->localSize[i]=inputDistributedGrid.getLocalSize()[savedDimensions[i]];
-                this->globalBegin[i]=inputDistributedGrid.getGlobalBegin()[savedDimensions[i]];
-                this->localGridSize[i]=inputDistributedGrid.getLocalGridSize()[savedDimensions[i]];
-                this->localBegin[i]=inputDistributedGrid.getLocalBegin()[savedDimensions[i]];
-
-                this->localOrigin[i]=inputDistributedGrid.getLocalOrigin()[savedDimensions[i]];
-                this->spaceSteps[i]=inputDistributedGrid.getSpaceSteps()[savedDimensions[i]];
-            }
-
-            int newRank = getRankOfProcCoord(this->subdomainCoordinates);
-            this->group = MPI::Comm_split( oldGroup, 1, newRank );
+      this->globalGrid.setDimensions(outDimensions);
+      this->globalGrid.setDomain(outOrigin,outProportions);
 
-            setupNeighbors();
+      // setOverlaps resets the local grid
+//      setOverlaps( this->lowerOverlap, this->upperOverlap );
 
+      localGrid.setDimensions( localGridSize );
+      localGrid.setOrigin( localOrigin );
+      // setting space steps computes the grid proportions as a side efect
+      localGrid.setSpaceSteps( globalGrid.getSpaceSteps() );
+      localGrid.setLocalBegin( localBegin );
+      localGrid.setLocalEnd( localBegin + localSize );
+      // TODO: set interiorBegin, interiorEnd
 
+      const int newRank = getRankOfProcCoord(this->subdomainCoordinates);
+      this->group = MPI::Comm_split( oldGroup, 1, newRank );
 
-            bool isDistributed=false;
-            for(int i=0;i<Dimension; i++)
-            {
-                isDistributed|=(domainDecomposition[i]>1);
-            }
+      setupNeighbors();
 
-            this->distributed=isDistributed;
-
-            this->globalGrid.setDimensions(outDimensions);
-            this->globalGrid.setDomain(outOrigin,outProportions);
-
-            return true;
-      }
-      else
+      bool isDistributed = false;
+      for( int i = 0; i < Dimension; i++ )
       {
-         this->group = MPI::Comm_split( oldGroup, MPI_UNDEFINED, 0 );
+         isDistributed |= domainDecomposition[i] > 1;
       }
+      this->distributed = isDistributed;
 
+      return true;
+   }
+   else
+   {
+      this->group = MPI::Comm_split( oldGroup, MPI_UNDEFINED, 0 );
       return false;
+   }
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
@@ -510,39 +471,61 @@ writeProlog( Logger& logger )
 }
 
 template< int Dimension, typename Real, typename Device, typename Index >
-void
+bool
+DistributedMesh< Grid< Dimension, Real, Device, Index > >::
+operator==( const DistributedMesh& other ) const
+{
+   return globalGrid == other.globalGrid
+       && localGrid == other.localGrid
+       && localSize == other.localSize
+       && globalBegin == other.globalBegin
+       && lowerOverlap == other.lowerOverlap
+       && upperOverlap == other.upperOverlap
+       && domainDecomposition == other.domainDecomposition
+       && subdomainCoordinates == other.subdomainCoordinates
+       && distributed == other.distributed
+       && isSet == other.isSet
+       && group == other.group;
+}
+
+template< int Dimension, typename Real, typename Device, typename Index >
+bool
 DistributedMesh< Grid< Dimension, Real, Device, Index > >::
-print( std::ostream& str ) const
+operator!=( const DistributedMesh& other ) const
+{
+   return ! operator==( other );
+}
+
+template< int Dimension, typename Real, typename Device, typename Index >
+std::ostream& operator<<( std::ostream& str, const DistributedMesh< Grid< Dimension, Real, Device, Index > >& grid )
 {
    for( int j = 0; j < MPI::GetSize(); j++ )
    {
       if( j == MPI::GetRank() )
       {
          str << "Node : " << MPI::GetRank() << std::endl
-             << " localOrigin : " << localOrigin << std::endl
-             << " localBegin : " << localBegin << std::endl
-             << " localSize : " << localSize  << std::endl
-             << " localGridSize : " << localGridSize << std::endl
-             << " overlap : " << overlap << std::endl
-             << " globalBegin : " << globalBegin << std::endl
-             << " spaceSteps : " << spaceSteps << std::endl
-             << " lowerOverlap : " << lowerOverlap << std::endl
-             << " upperOverlap : " << upperOverlap << std::endl
-             << " domainDecomposition : " << domainDecomposition << std::endl
-             << " subdomainCoordinates : " << subdomainCoordinates << std::endl
+             << " globalGrid : " << grid.getGlobalGrid() << std::endl
+             << " localGrid : " << grid.getLocalMesh() << std::endl
+             << " localSize : " << grid.getLocalSize() << std::endl
+             << " globalBegin : " << grid.globalBegin << std::endl
+             << " lowerOverlap : " << grid.lowerOverlap << std::endl
+             << " upperOverlap : " << grid.upperOverlap << std::endl
+             << " domainDecomposition : " << grid.domainDecomposition << std::endl
+             << " subdomainCoordinates : " << grid.subdomainCoordinates << std::endl
              << " neighbors : ";
-         for( int i = 0; i < getNeighborsCount(); i++ )
-            str << " " << neighbors[ i ];
+         for( int i = 0; i < grid.getNeighborsCount(); i++ )
+            str << " " << grid.getNeighbors()[ i ];
          str << std::endl;
          str << " periodicNeighbours : ";
-         for( int i = 0; i < getNeighborsCount(); i++ )
-            str << " " << periodicNeighbors[ i ];
+         for( int i = 0; i < grid.getNeighborsCount(); i++ )
+            str << " " << grid.getPeriodicNeighbors()[ i ];
          str << std::endl;
       }
       MPI::Barrier();
    }
+   return str;
 }
 
-      } //namespace DistributedMeshes
-   } // namespace Meshes
+} // namespace DistributedMeshes
+} // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/DistributedMeshes/DistributedGridIO.h b/src/TNL/Meshes/DistributedMeshes/DistributedGridIO.h
deleted file mode 100644
index edb08baf7b6cd909988e50446a19a1a66df42e6a..0000000000000000000000000000000000000000
--- a/src/TNL/Meshes/DistributedMeshes/DistributedGridIO.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
-                          DistributedGrid.h  -  description
-                             -------------------
-    begin                : October 5, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#pragma once
-
-#include <iostream>
-
-#include <TNL/File.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
-#include <TNL/Meshes/DistributedMeshes/CopyEntitiesHelper.h>
-#include <TNL/Functions/MeshFunction.h>
-#include <TNL/Devices/Host.h>
-#include <TNL/Devices/Cuda.h>
-
-namespace TNL {
-namespace Meshes {
-namespace DistributedMeshes {
-
-enum DistrGridIOTypes { Dummy = 0 , LocalCopy = 1, MpiIO=2 };
-
-template< typename MeshFunction,
-          DistrGridIOTypes type = LocalCopy,
-          typename Mesh = typename MeshFunction::MeshType,
-          typename Device = typename MeshFunction::DeviceType >
-class DistributedGridIO
-{
-};
-
-template< typename MeshFunctionType >
-class DistributedGridIO< MeshFunctionType, Dummy >
-{
-    bool save(const String& fileName, MeshFunctionType &meshFunction)
-    {
-        return true;
-    }
-
-    bool load(const String& fileName, MeshFunctionType &meshFunction)
-    {
-        return true;
-    }
-};
-
-} // namespace DistributedMeshes
-} // namespace Meshes
-} // namespace TNL
-
-//not clean logic of includes...
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO_MeshFunction.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO_VectorField.h>
diff --git a/src/TNL/Meshes/DistributedMeshes/DistributedGridIO_MeshFunction.h b/src/TNL/Meshes/DistributedMeshes/DistributedGridIO_MeshFunction.h
deleted file mode 100644
index 698d7e41dc7ebbf5b2cf2481bb97c991620dcc96..0000000000000000000000000000000000000000
--- a/src/TNL/Meshes/DistributedMeshes/DistributedGridIO_MeshFunction.h
+++ /dev/null
@@ -1,521 +0,0 @@
-/***************************************************************************
-                          DistributedGridIO_NeshFunction.h  -  description
-                             -------------------
-    begin                : October 5, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#pragma once
-
-#include <TNL/Functions/MeshFunction.h>
-#include <TNL/Functions/MeshFunctionView.h>
-#include <TNL/MPI/getDataType.h>
-
-namespace TNL {
-namespace Meshes {
-namespace DistributedMeshes {
-
-
-/*
- * This variant cerate copy of MeshFunction but smaller, reduced to local entities, without overlap.
- * It is slow and has high RAM consumption
- */
-template< typename MeshFunction,
-          int Dimension,
-          typename MeshReal,
-          typename Device,
-          typename Index >
-class DistributedGridIO<
-   MeshFunction,
-   LocalCopy,
-   Meshes::Grid< Dimension, MeshReal, Device, Index > >
-{
-   public:
-      using MeshType = Meshes::Grid< Dimension, MeshReal, Device, Index >;
-      using MeshFunctionType = MeshFunction;
-      using MeshFunctionViewType = Functions::MeshFunctionView< MeshType, MeshFunction::getEntitiesDimension(), typename MeshFunction::RealType >;
-      using CoordinatesType = typename MeshFunctionType::MeshType::CoordinatesType;
-      using PointType = typename MeshFunctionType::MeshType::PointType;
-      using VectorType = Containers::Vector< typename MeshFunctionType::RealType, typename MeshFunctionType::DeviceType, typename MeshFunctionType::IndexType >;
-      //typedef DistributedGrid< MeshType,MeshFunctionType::getMeshDimension()> DistributedGridType;
-
-      static bool save(const String& fileName, MeshFunctionType &meshFunction)
-      {
-         auto *distrGrid=meshFunction.getMesh().getDistributedMesh();
-
-         if(distrGrid==NULL) //not distributed
-         {
-            meshFunction.save(fileName);
-            return true;
-         }
-
-         const MeshType& mesh=meshFunction.getMesh();
-
-         PointType spaceSteps=mesh.getSpaceSteps();
-         PointType origin=mesh.getOrigin();
-
-         CoordinatesType localSize=distrGrid->getLocalSize();
-         CoordinatesType localBegin=distrGrid->getLocalBegin();
-
-         Pointers::SharedPointer<MeshType> newMesh;
-         newMesh->setDimensions(localSize);
-         newMesh->setSpaceSteps(spaceSteps);
-         CoordinatesType newOrigin;
-         newMesh->setOrigin(origin+spaceSteps*localBegin);
-
-         File meshFile;
-         meshFile.open( fileName+String("-mesh-")+distrGrid->printProcessCoords()+String(".tnl"), std::ios_base::out );
-         newMesh->save( meshFile );
-         meshFile.close();
-
-         VectorType newDof(newMesh-> template getEntitiesCount< typename MeshType::Cell >());
-
-         MeshFunctionViewType newMeshFunction;
-         newMeshFunction.bind(newMesh,newDof);
-
-         CoordinatesType zeroCoord;
-         zeroCoord.setValue(0);
-
-         CopyEntitiesHelper<MeshFunctionViewType>::Copy(meshFunction,newMeshFunction,localBegin,zeroCoord,localSize);
-
-         File file;
-         file.open( fileName+String("-")+distrGrid->printProcessCoords()+String(".tnl"), std::ios_base::out );
-         newMeshFunction.save(file);
-         file.close();
-
-         return true;
-
-      };
-
-    static bool load(const String& fileName,MeshFunctionType &meshFunction)
-    {
-        auto *distrGrid=meshFunction.getMesh().getDistributedMesh();
-        if(distrGrid==NULL) //not distributed
-        {
-            meshFunction.boundLoad(fileName);
-            return true;
-        }
-
-        const MeshType& mesh=meshFunction.getMesh();
-
-        PointType spaceSteps=mesh.getSpaceSteps();
-        PointType origin=mesh.getOrigin();
-
-        CoordinatesType localSize=distrGrid->getLocalSize();
-        CoordinatesType localBegin=distrGrid->getLocalBegin();
-
-        Pointers::SharedPointer<MeshType> newMesh;
-        newMesh->setDimensions(localSize);
-        newMesh->setSpaceSteps(spaceSteps);
-        CoordinatesType newOrigin;
-        newMesh->setOrigin(origin+spaceSteps*localBegin);
-
-        VectorType newDof(newMesh-> template getEntitiesCount< typename MeshType::Cell >());
-        MeshFunctionType newMeshFunction;
-        newMeshFunction.bind(newMesh,newDof);
-
-        CoordinatesType zeroCoord;
-        zeroCoord.setValue(0);
-
-        File file;
-        file.open( fileName+String("-")+distrGrid->printProcessCoords()+String(".tnl"), std::ios_base::in );
-        newMeshFunction.boundLoad(file);
-        file.close();
-        CopyEntitiesHelper<MeshFunctionType>::Copy(newMeshFunction,meshFunction,zeroCoord,localBegin,localSize);
-
-        return true;
-    };
-
-};
-
-/*
- * Save distributed data into single file without overlaps using MPIIO and MPI datatypes,
- * EXPLOSIVE: works with only Grids and MPI
- * BAD IMPLEMENTTION creating MPI-Types at every save! -- I dont want contamine more places by MPI..
- */
-
-#ifdef HAVE_MPI
-template<typename MeshFunctionType>
-class DistributedGridIO_MPIIOBase
-{
-   public:
-
-      using RealType = typename MeshFunctionType::RealType;
-      typedef typename MeshFunctionType::MeshType MeshType;
-      typedef typename MeshFunctionType::MeshType::CoordinatesType CoordinatesType;
-      typedef typename MeshFunctionType::MeshType::PointType PointType;
-      typedef typename MeshFunctionType::VectorType VectorType;
-      //typedef DistributedGrid< MeshType,MeshFunctionType::getMeshDimension()> DistributedGridType;
-
-    static bool save(const String& fileName, MeshFunctionType &meshFunction, RealType *data)
-    {
-		auto *distrGrid=meshFunction.getMesh().getDistributedMesh();
-
-        if(distrGrid==NULL) //not distributed
-        {
-            meshFunction.save(fileName);
-        }
-
-       MPI_Comm group=distrGrid->getCommunicationGroup();
-
-	   MPI_File file;
-      int ok=MPI_File_open( group,
-                      const_cast< char* >( fileName.getString() ),
-                      MPI_MODE_CREATE | MPI_MODE_WRONLY,
-                      MPI_INFO_NULL,
-                      &file);
-      if( ok != 0 )
-         throw std::runtime_error("Open file falied");
-
-		int written=save(file,meshFunction, data,0);
-
-        MPI_File_close(&file);
-
-		return written>0;
-
-	};
-
-    static int save(MPI_File &file, MeshFunctionType &meshFunction, RealType *data, int offset)
-    {
-
-       auto *distrGrid=meshFunction.getMesh().getDistributedMesh();
-       MPI_Comm group=distrGrid->getCommunicationGroup();
-       MPI_Datatype ftype;
-       MPI_Datatype atype;
-       int dataCount=CreateDataTypes(distrGrid,&ftype,&atype);
-
-       int headerSize;
-
-       MPI_File_set_view(file,0,MPI_BYTE,MPI_BYTE,"native",MPI_INFO_NULL);
-
-       if(MPI::GetRank(group)==0)
-       {
-            MPI_File_seek(file,offset,MPI_SEEK_SET);
-            headerSize=writeMeshFunctionHeader(file,meshFunction,dataCount);
-       }
-       MPI_Bcast(&headerSize, 1, MPI_INT,0, group);
-
-	   offset +=headerSize;
-
-       MPI_File_set_view(file,offset,
-               TNL::MPI::getDataType<RealType>(),
-               ftype,"native",MPI_INFO_NULL);
-
-       MPI_Status wstatus;
-
-       MPI_File_write(file,data,1,atype,&wstatus);
-
-       MPI_Type_free(&atype);
-       MPI_Type_free(&ftype);
-
-       return headerSize+dataCount*sizeof(RealType); //size of written data
-
-    };
-
-    template<typename DitsributedGridType>
-    static int CreateDataTypes(DitsributedGridType *distrGrid,MPI_Datatype *ftype,MPI_Datatype *atype)
-    {
-        int dim=distrGrid->getMeshDimension();
-
-        int fstarts[dim];
-        int flsize[dim];
-        int fgsize[dim];
-
-        hackArray(dim,fstarts,distrGrid->getGlobalBegin().getData());
-        hackArray(dim,flsize,distrGrid->getLocalSize().getData());
-        hackArray(dim,fgsize,distrGrid->getGlobalSize().getData());
-
-        MPI_Type_create_subarray(dim,
-            fgsize,flsize,fstarts,
-            MPI_ORDER_C,
-            TNL::MPI::getDataType<RealType>(),
-            ftype);
-
-        MPI_Type_commit(ftype);
-
-       int agsize[dim];
-       int alsize[dim];
-       int astarts[dim];
-
-       hackArray(dim,astarts,distrGrid->getLocalBegin().getData());
-       hackArray(dim,alsize,distrGrid->getLocalSize().getData());
-       hackArray(dim,agsize,distrGrid->getLocalGridSize().getData());
-
-       MPI_Type_create_subarray(dim,
-            agsize,alsize,astarts,
-            MPI_ORDER_C,
-            TNL::MPI::getDataType<RealType>(),
-            atype);
-       MPI_Type_commit(atype);
-
-        int dataCount=1;
-        for(int i=0;i<dim;i++)
-            dataCount*=fgsize[i];
-
-        return dataCount;
-
-    }
-
-    template<typename Index>
-    static void hackArray(int dim, int* out, Index* in)
-    {
-        if(dim==1)
-        {
-            out[0]=in[0];
-        }
-
-        if(dim==2)
-        {
-           out[1]=in[0];
-           out[0]=in[1];
-        }
-
-        if(dim==3)
-        {
-           out[0]=in[2];
-           out[1]=in[1];
-           out[2]=in[0];
-        }
-    }
-
-    static unsigned int writeMeshFunctionHeader(MPI_File file,MeshFunctionType &meshFunction, int length )
-    {
-
-        unsigned int size=0;
-        int count;
-        MPI_Status wstatus;
-
-        //Magic
-        MPI_File_write( file, const_cast< void* >( ( const void* ) "TNLMN" ), 5, MPI_CHAR,&wstatus );
-        MPI_Get_count(&wstatus,MPI_CHAR,&count);
-        size+=count*sizeof(char);
-
-        //Meshfunction type
-        String meshFunctionSerializationType=meshFunction.getSerializationTypeVirtual();
-        int meshFunctionSerializationTypeLength=meshFunctionSerializationType.getLength();
-        MPI_File_write(file,&meshFunctionSerializationTypeLength,1,MPI_INT,&wstatus);
-        MPI_Get_count(&wstatus,MPI_INT,&count);
-        size+=count*sizeof(int);
-        MPI_File_write(file,const_cast< void* >( ( const void* ) meshFunctionSerializationType.getString() ),meshFunctionSerializationType.getLength(),MPI_CHAR,&wstatus);
-        MPI_Get_count(&wstatus,MPI_CHAR,&count);
-        size+=count*sizeof(char);
-
-        //Magic
-        MPI_File_write( file, const_cast< void* >( ( const void* ) "TNLMN" ),5,MPI_CHAR,&wstatus);
-        MPI_Get_count(&wstatus,MPI_CHAR,&count);
-        size+=count*sizeof(char);
-        //Vector Type
-//        String dataSerializationType=meshFunction.getData().getSerializationTypeVirtual();
-        String dataSerializationType = Containers::detail::ArrayIO< RealType, typename MeshFunctionType::DeviceType, typename MeshFunctionType::IndexType >::getSerializationType();
-        int dataSerializationTypeLength=dataSerializationType.getLength();
-        MPI_File_write(file,&dataSerializationTypeLength,1,MPI_INT,&wstatus);
-        MPI_Get_count(&wstatus,MPI_INT,&count);
-        size+=count*sizeof(int);
-        MPI_File_write( file, const_cast< void* >( ( const void* ) dataSerializationType.getString() ), dataSerializationType.getLength(), MPI_CHAR, &wstatus );
-        MPI_Get_count(&wstatus,MPI_CHAR,&count);
-        size+=count*sizeof(char);
-        //Data count
-        MPI_File_write(file,&(length),1,MPI_INT,&wstatus);
-        MPI_Get_count(&wstatus,MPI_INT,&count);
-        size+=count*sizeof(int);
-
-        return size;
-    };
-
-   static bool load(const String& fileName,MeshFunctionType &meshFunction, RealType* data )
-   {
-      auto *distrGrid=meshFunction.getMesh().getDistributedMesh();
-      if(distrGrid==NULL) //not distributed
-      {
-         meshFunction.boundLoad(fileName);
-         return true;
-      }
-
-      MPI_Comm group=distrGrid->getCommunicationGroup();
-
-      MPI_File file;
-      if( MPI_File_open( group,
-            const_cast< char* >( fileName.getString() ),
-            MPI_MODE_RDONLY,
-            MPI_INFO_NULL,
-            &file ) != 0 )
-      {
-         std::cerr << "Unable to open file " << fileName.getString() << std::endl;
-         return false;
-      }
-      bool ret= load(file, meshFunction, data,0)>0;
-
-      MPI_File_close(&file);
-      return ret;
-   }
-
-    /* Funky bomb - no checks - only dirty load */
-    static int load(MPI_File &file,MeshFunctionType &meshFunction, RealType* data, int offset )
-    {
-       auto *distrGrid=meshFunction.getMesh().getDistributedMesh();
-
-       MPI_Comm group=distrGrid->getCommunicationGroup();
-       MPI_Datatype ftype;
-       MPI_Datatype atype;
-       int dataCount=CreateDataTypes(distrGrid,&ftype,&atype);
-
-       MPI_File_set_view(file,0,MPI_BYTE,MPI_BYTE,"native",MPI_INFO_NULL);
-
-       int headerSize=0;
-
-       if(MPI::GetRank(group)==0)
-       {
-            MPI_File_seek(file,offset,MPI_SEEK_SET);
-            headerSize=readMeshFunctionHeader(file,meshFunction,dataCount);
-       }
-       MPI_Bcast(&headerSize, 1, MPI_INT,0, group);
-
-       if(headerSize<0)
-            return false;
-
-       offset+=headerSize;
-
-       MPI_File_set_view(file,offset,
-            TNL::MPI::getDataType<RealType>(),
-            ftype,"native",MPI_INFO_NULL);
-       MPI_Status wstatus;
-       MPI_File_read(file,(void*)data,1,atype,&wstatus);
-
-       MPI_Type_free(&atype);
-       MPI_Type_free(&ftype);
-
-       return headerSize+dataCount*sizeof(RealType); //size of readed data;
-    };
-
-    //it shoudl check some loaded files...... but chcek nothing...
-    static int readMeshFunctionHeader(MPI_File file,MeshFunctionType &meshFunction, int length)
-    {
-        MPI_Status rstatus;
-        char buffer[255];
-        int size=0;
-        int count=0;
-
-        MPI_File_read(file, (void *)buffer,5, MPI_CHAR, &rstatus);//MAGIC
-        size+=5*sizeof(char);
-        MPI_File_read(file, (void *)&count,1, MPI_INT, &rstatus);//SIZE OF DATATYPE
-        size+=1*sizeof(int);
-        MPI_File_read(file, (void *)&buffer,count, MPI_CHAR, &rstatus);//DATATYPE
-        size+=count*sizeof(char);
-
-        MPI_File_read(file, (void *)buffer,5, MPI_CHAR, &rstatus);//MAGIC
-        size+=5*sizeof(char);
-        MPI_File_read(file, (void *)&count,1, MPI_INT, &rstatus);//SIZE OF DATATYPE
-        size+=1*sizeof(int);
-        MPI_File_read(file, (void *)&buffer,count, MPI_CHAR, &rstatus);//DATATYPE
-        size+=count*sizeof(char);
-        MPI_File_read(file, (void *)&count,1, MPI_INT, &rstatus);//DATACOUNT
-        size+=1*sizeof(int);
-
-        if(count!=length)
-        {
-            std::cerr<<"Chyba načítání MeshFunction, délka dat v souboru neodpovídá očekávané délce" << std::endl;
-            size=-1;
-        }
-
-        return size;
-    };
-
-};
-#endif
-
-template< typename MeshFunction,
-          int Dimension,
-          typename MeshReal,
-          typename Index >
-class DistributedGridIO<
-   MeshFunction,
-   MpiIO,
-   Meshes::Grid< Dimension, MeshReal, Devices::Cuda, Index >,
-   Devices::Cuda >
-{
-   public:
-      using MeshType = Meshes::Grid< Dimension, MeshReal, Devices::Cuda, Index >;
-      using MeshFunctionType = MeshFunction;
-
-      static bool save(const String& fileName, MeshFunctionType &meshFunction)
-      {
-#ifdef HAVE_MPI
-         if(MPI::isInitialized())//i.e. - isUsed
-         {
-            using HostVectorType = Containers::Vector<typename MeshFunctionType::RealType, Devices::Host, typename MeshFunctionType::IndexType >;
-            HostVectorType hostVector;
-            hostVector=meshFunction.getData();
-            typename MeshFunctionType::RealType * data=hostVector.getData();
-            return DistributedGridIO_MPIIOBase<MeshFunctionType>::save(fileName,meshFunction,data);
-         }
-#endif
-         std::cout << "MPIIO can be used only when MPI is initialized." << std::endl;
-         return false;
-      };
-
-      static bool load(const String& fileName,MeshFunctionType &meshFunction)
-      {
-#ifdef HAVE_MPI
-         if(MPI::isInitialized())//i.e. - isUsed
-         {
-            using HostVectorType = Containers::Vector<typename MeshFunctionType::RealType, Devices::Host, typename MeshFunctionType::IndexType >;
-            HostVectorType hostVector;
-            hostVector.setLike(meshFunction.getData());
-            auto* data=hostVector.getData();
-            DistributedGridIO_MPIIOBase<MeshFunctionType>::load(fileName,meshFunction,data);
-            meshFunction.getData()=hostVector;
-            return true;
-         }
-#endif
-         std::cout << "MPIIO can be used only when MPI is initialized." << std::endl;
-         return false;
-    };
-};
-
-template< typename MeshFunction,
-          int Dimension,
-          typename MeshReal,
-          typename Index >
-class DistributedGridIO<
-   MeshFunction,
-   MpiIO,
-   Meshes::Grid< Dimension, MeshReal, Devices::Host, Index >,
-   Devices::Host >
-{
-   public:
-      using MeshType = Meshes::Grid< Dimension, MeshReal, Devices::Host, Index >;
-      using MeshFunctionType = MeshFunction;
-
-      static bool save(const String& fileName, MeshFunctionType &meshFunction)
-      {
-#ifdef HAVE_MPI
-         if(MPI::isInitialized())//i.e. - isUsed
-         {
-            typename MeshFunctionType::RealType* data=meshFunction.getData().getData();
-            return DistributedGridIO_MPIIOBase<MeshFunctionType>::save(fileName,meshFunction,data);
-         }
-#endif
-         std::cout << "MPIIO can be used only when MPI is initialized." << std::endl;
-         return false;
-    };
-
-      static bool load(const String& fileName,MeshFunctionType &meshFunction)
-      {
-#ifdef HAVE_MPI
-         if(MPI::isInitialized())//i.e. - isUsed
-         {
-            typename MeshFunctionType::RealType* data = meshFunction.getData().getData();
-            return DistributedGridIO_MPIIOBase<MeshFunctionType>::load(fileName,meshFunction,data);
-         }
-#endif
-         std::cout << "MPIIO can be used only when MPI is initialized." << std::endl;
-         return false;
-    };
-};
-
-      } //namespace DistributedMeshes
-   } //namespace Meshes
-} //namespace TNL
diff --git a/src/TNL/Meshes/DistributedMeshes/DistributedGridIO_VectorField.h b/src/TNL/Meshes/DistributedMeshes/DistributedGridIO_VectorField.h
deleted file mode 100644
index 8febf3c723b19bfffef001a70c6b3ed769a96420..0000000000000000000000000000000000000000
--- a/src/TNL/Meshes/DistributedMeshes/DistributedGridIO_VectorField.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/***************************************************************************
-                          DistributedGridIO_NeshFunction.h  -  description
-                             -------------------
-    begin                : October 5, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#pragma once
-
-#include <TNL/Functions/VectorField.h>
-#include <TNL/Meshes/Grid.h>
-
-namespace TNL {
-namespace Meshes {
-namespace DistributedMeshes {
-
-template< typename MeshFunction,
-          DistrGridIOTypes type = LocalCopy,
-          typename Mesh = typename MeshFunction::MeshType,
-          typename Device = typename MeshFunction::DeviceType >
-class DistributedGridIO_VectorField
-{
-};
-
-template<
-   int Size,
-   typename MeshFunction,
-   int Dimension,
-   typename MeshReal,
-   typename Device,
-   typename Index >
-class DistributedGridIO_VectorField<
-   Functions::VectorField< Size, MeshFunction >,
-   MpiIO,
-   Meshes::Grid< Dimension, MeshReal, Device, Index >,
-   Device >
-{
-   public:
-      using MeshType = Meshes::Grid< Dimension, MeshReal, Device, Index >;
-      using MeshFunctionType = MeshFunction;
-      using VectorFieldType = Functions::VectorField< Size, MeshFunctionType >;
-      using CoordinatesType = typename MeshFunctionType::MeshType::CoordinatesType;
-      using PointType = typename MeshFunctionType::MeshType::PointType;
-      using VectorType = typename MeshFunctionType::VectorType;
-
-   static bool save(const String& fileName, Functions::VectorField< Size, MeshFunctionType > &vectorField)
-   {
-#ifdef HAVE_MPI
-        if(MPI::isInitialized())//i.e. - isUsed
-        {
-            auto *distrGrid=vectorField.getMesh().getDistributedMesh();
-			if(distrGrid==NULL)
-			{
-				vectorField.save(fileName);
-                                return true;
-			}
-
-            MPI_Comm group=distrGrid->getCommunicationGroup();
-
-           //write
-           MPI_File file;
-           MPI_File_open( group,
-                          const_cast< char* >( fileName.getString() ),
-                          MPI_MODE_CREATE | MPI_MODE_WRONLY,
-                          MPI_INFO_NULL,
-                          &file);
-
-
-           int offset=0; //global offset -> every mesh function creates it's own data types we need manage global offset
-           if(MPI::GetRank(group)==0)
-               offset+=writeVectorFieldHeader(file,vectorField);
-           MPI_Bcast(&offset, 1, MPI_INT,0, group);
-
-           for( int i = 0; i < vectorField.getVectorDimension(); i++ )
-           {
-               typename MeshFunctionType::RealType * data=vectorField[i]->getData().getData();  //here manage data transfer Device...
-               int size = DistributedGridIO_MPIIOBase<MeshFunctionType>::save(file,*(vectorField[i]),data,offset);
-               offset+=size;
-               if( size==0  )
-                  return false;
-           }
-
-           MPI_File_close(&file);
-           return true;
-        }
-#endif
-        std::cout << "MPIIO can be used only when MPI is initialized." << std::endl;
-        return false;
-
-    };
-
-#ifdef HAVE_MPI
-	private:
-	  static unsigned int writeVectorFieldHeader(MPI_File &file,Functions::VectorField<Size,MeshFunctionType > &vectorField)
-	  {
-			unsigned int size=0;
-		    int count;
-		    MPI_Status wstatus;
-
-		    //Magic
-		    MPI_File_write( file, const_cast< void* >( ( const void* ) "TNLMN" ), 5, MPI_CHAR,&wstatus );
-		    MPI_Get_count(&wstatus,MPI_CHAR,&count);
-		    size+=count*sizeof(char);
-
-		    //VectorField type
-		    String vectorFieldSerializationType=vectorField.getSerializationTypeVirtual();
-		    int vectorFieldSerializationTypeLength=vectorFieldSerializationType.getLength();
-		    MPI_File_write(file,&vectorFieldSerializationTypeLength,1,MPI_INT,&wstatus);
-		    MPI_Get_count(&wstatus,MPI_INT,&count);
-		    size+=count*sizeof(int);
-		    MPI_File_write(file,const_cast< void* >( ( const void* ) vectorFieldSerializationType.getString() ),vectorFieldSerializationType.getLength(),MPI_CHAR,&wstatus);
-		    MPI_Get_count(&wstatus,MPI_CHAR,&count);
-		    size+=count*sizeof(char);
-
-		    return size;
-	  }
-
-      static unsigned int readVectorFieldHeader(MPI_File &file,Functions::VectorField<Size,MeshFunctionType> &vectorField)
-      {
-            MPI_Status rstatus;
-            char buffer[255];
-            int size=0;
-            int count=0;
-
-            MPI_File_read(file, (void *)buffer,5, MPI_CHAR, &rstatus);//MAGIC
-            size+=5*sizeof(char);
-            MPI_File_read(file, (void *)&count,1, MPI_INT, &rstatus);//SIZE OF DATATYPE
-            size+=1*sizeof(int);
-            MPI_File_read(file, (void *)&buffer,count, MPI_CHAR, &rstatus);//DATATYPE
-            size+=count*sizeof(char);
-
-            return size;
-      }
-#endif
-
-    public:
-    static bool load(const String& fileName, Functions::VectorField<Size,MeshFunctionType> &vectorField)
-    {
-#ifdef HAVE_MPI
-        if(MPI::isInitialized())//i.e. - isUsed
-        {
-            auto *distrGrid=vectorField.getMesh().getDistributedMesh();
-			if(distrGrid==NULL)
-			{
-				vectorField.save(fileName);
-                                return true;
-			}
-
-            MPI_Comm group=distrGrid->getCommunicationGroup();
-
-           //write
-           MPI_File file;
-           MPI_File_open( group,
-                          const_cast< char* >( fileName.getString() ),
-                          MPI_MODE_RDONLY,
-                          MPI_INFO_NULL,
-                          &file);
-
-
-           int offset=0; //global offset -> every meshfunctoion creates it's own datatypes we need manage global offset
-           if(MPI::GetRank(group)==0)
-               offset+=readVectorFieldHeader(file,vectorField);
-           MPI_Bcast(&offset, 1, MPI_INT,0, group);
-
-           for( int i = 0; i < vectorField.getVectorDimension(); i++ )
-           {
-               typename MeshFunctionType::RealType * data=vectorField[i]->getData().getData();  //here manage data transfer Device...
-               int size = DistributedGridIO_MPIIOBase<MeshFunctionType>::load(file,*(vectorField[i]),data,offset);
-               offset+=size;
-               if( size==0  )
-                  return false;
-           }
-
-           MPI_File_close(&file);
-           return true;
-        }
-#endif
-        std::cout << "MPIIO can be used only when MPI is initialized." << std::endl;
-        return false;
-
-    };
-
-};
-
-}
-}
-}
diff --git a/src/TNL/Meshes/DistributedMeshes/DistributedGridSynchronizer.h b/src/TNL/Meshes/DistributedMeshes/DistributedGridSynchronizer.h
index ed68150a041dc4ed209ac3a15ea226b96c801c6e..afc5c6c7736ba908d774198b42c63efae74fba05 100644
--- a/src/TNL/Meshes/DistributedMeshes/DistributedGridSynchronizer.h
+++ b/src/TNL/Meshes/DistributedMeshes/DistributedGridSynchronizer.h
@@ -30,14 +30,14 @@ template< int MeshDimension,
 class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridReal, Device, Index > >, MeshDimension >
 {
    public:
-      static constexpr int getMeshDimension() { return MeshDimension; };
-      static constexpr int getNeighborCount() {return DirectionCount<MeshDimension>::get();};
-
       typedef typename Grid< MeshDimension, GridReal, Device, Index >::Cell Cell;
-      typedef typename Grid< MeshDimension, GridReal, Device, Index >::DistributedMeshType DistributedGridType;
+      typedef DistributedMesh< Grid< MeshDimension, GridReal, Device, Index > > DistributedGridType;
       typedef typename DistributedGridType::CoordinatesType CoordinatesType;
       using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
+      static constexpr int getMeshDimension() { return DistributedGridType::getMeshDimension(); };
+      static constexpr int getNeighborsCount() { return DistributedGridType::getNeighborsCount(); };
+
       enum PeriodicBoundariesCopyDirection
       {
          BoundaryToOverlap,
@@ -49,7 +49,7 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
          isSet = false;
       };
 
-      DistributedMeshSynchronizer( DistributedGridType *distributedGrid )
+      DistributedMeshSynchronizer( const DistributedGridType *distributedGrid )
       {
          isSet = false;
          setDistributedGrid( distributedGrid );
@@ -60,7 +60,7 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
          this->periodicBoundariesCopyDirection = dir;
       }
 
-      void setDistributedGrid( DistributedGridType *distributedGrid )
+      void setDistributedGrid( const DistributedGridType *distributedGrid )
       {
          isSet = true;
 
@@ -69,12 +69,12 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
          const SubdomainOverlapsType& lowerOverlap = this->distributedGrid->getLowerOverlap();
          const SubdomainOverlapsType& upperOverlap = this->distributedGrid->getUpperOverlap();
 
-         const CoordinatesType& localBegin = this->distributedGrid->getLocalBegin();
+         const CoordinatesType& localBegin = this->distributedGrid->getLocalMesh().getLocalBegin();
          const CoordinatesType& localSize = this->distributedGrid->getLocalSize();
 
          const int *neighbors = distributedGrid->getNeighbors();
 
-         for( int i=0; i<this->getNeighborCount(); i++ )
+         for( int i=0; i<this->getNeighborsCount(); i++ )
          {
             Index sendSize=1;//send and receive  areas have the same size
 
@@ -126,7 +126,7 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
          if( !distributedGrid->isDistributed() ) return;
 
          // allocate buffers (setSize does nothing if the array size is already correct)
-         for( int i=0; i<this->getNeighborCount(); i++ ) {
+         for( int i=0; i<this->getNeighborsCount(); i++ ) {
             sendBuffers[ i ].setSize( sendSizes[ i ] * sizeof(RealType) );
             recieveBuffers[ i ].setSize( sendSizes[ i ] * sizeof(RealType));
          }
@@ -143,12 +143,12 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
             PeriodicBoundariesMaskPointer( nullptr ) ); // the mask is used only when receiving data );
 
          //async send and receive
-         MPI_Request requests[2*this->getNeighborCount()];
+         MPI_Request requests[2*this->getNeighborsCount()];
          MPI_Comm group = distributedGrid->getCommunicationGroup();
          int requestsCount( 0 );
 
          //send everything, recieve everything
-         for( int i=0; i<this->getNeighborCount(); i++ )
+         for( int i=0; i<this->getNeighborsCount(); i++ )
          {
             /*TNL_MPI_PRINT( "Sending data... " << i << " sizes -> "
                << sendSizes[ i ] << "sendDimensions -> " <<  sendDimensions[ i ]
@@ -199,7 +199,7 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
          using RealType = typename MeshFunctionType::RealType;
          using Helper = BufferEntitiesHelper< MeshFunctionType, PeriodicBoundariesMaskPointer, getMeshDimension(), RealType, Device >;
 
-         for(int i=0;i<this->getNeighborCount();i++)
+         for(int i=0;i<this->getNeighborsCount();i++)
          {
             bool isBoundary=( neighbor[ i ] == -1 );
             if( ! isBoundary || periodicBoundaries )
@@ -211,24 +211,22 @@ class DistributedMeshSynchronizer< DistributedMesh< Grid< MeshDimension, GridRea
 
    private:
 
-      Containers::StaticArray< getNeighborCount(), int > sendSizes;
-      Containers::Array< std::uint8_t, Device, Index > sendBuffers[getNeighborCount()];
-      Containers::Array< std::uint8_t, Device, Index > recieveBuffers[getNeighborCount()];
+      Containers::StaticArray< getNeighborsCount(), int > sendSizes;
+      Containers::Array< std::uint8_t, Device, Index > sendBuffers[getNeighborsCount()];
+      Containers::Array< std::uint8_t, Device, Index > recieveBuffers[getNeighborsCount()];
 
       PeriodicBoundariesCopyDirection periodicBoundariesCopyDirection = BoundaryToOverlap;
 
-      CoordinatesType sendDimensions[getNeighborCount()];
-      CoordinatesType recieveDimensions[getNeighborCount()];
-      CoordinatesType sendBegin[getNeighborCount()];
-      CoordinatesType recieveBegin[getNeighborCount()];
+      CoordinatesType sendDimensions[getNeighborsCount()];
+      CoordinatesType recieveDimensions[getNeighborsCount()];
+      CoordinatesType sendBegin[getNeighborsCount()];
+      CoordinatesType recieveBegin[getNeighborsCount()];
 
-      DistributedGridType *distributedGrid;
+      const DistributedGridType *distributedGrid;
 
       bool isSet;
 };
 
-
 } // namespace DistributedMeshes
 } // namespace Meshes
 } // namespace TNL
-
diff --git a/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h b/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h
index b479544f7e1ebccb739027758d046a4263aa25e6..c92a17cd2b8051bcae7f4b368f41ecb28d1b7088 100644
--- a/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h
+++ b/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h
@@ -11,11 +11,13 @@
 #pragma once
 
 #include <TNL/Meshes/Grid.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 
 namespace TNL {
-   namespace Meshes {
-      namespace DistributedMeshes {
+namespace Meshes {
+namespace DistributedMeshes {
+
+template< typename Mesh >
+class DistributedMesh;
 
 template< typename Mesh >
 class SubdomainOverlapsGetter
@@ -118,9 +120,8 @@ class SubdomainOverlapsGetter< Grid< 3, Real, Device, Index > >
 
 };
 
-
-      } // namespace DistributedMeshes
-   } // namespace Meshes
+} // namespace DistributedMeshes
+} // namespace Meshes
 } // namespace TNL
 
 #include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.hpp>
diff --git a/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.hpp b/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.hpp
index aa185e1ecf0d08193feb8a58abeb40785914eead..782355c246972610004c83090bd2b5f91d20b8f7 100644
--- a/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.hpp
+++ b/src/TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.hpp
@@ -15,8 +15,8 @@
 #include <TNL/Meshes/Grid.h>
 
 namespace TNL {
-   namespace Meshes {
-      namespace DistributedMeshes {
+namespace Meshes {
+namespace DistributedMeshes {
 
 /*
  * TODO: This could work when the MPI directions are rewritten
@@ -32,6 +32,9 @@ getOverlaps( const DistributedMeshType* distributedMesh,
              IndexType subdomainOverlapSize,
              const SubdomainOverlapsType& periodicBoundariesOverlapSize )
 {
+   // initialize to 0
+   lower = upper = 0;
+
    if( ! MPI::isDistributed() )
       return;
    TNL_ASSERT_TRUE( distributedMesh != NULL, "" );
@@ -70,6 +73,9 @@ getOverlaps( const DistributedMeshType* distributedMesh,
              const SubdomainOverlapsType& lowerPeriodicBoundariesOverlapSize,
              const SubdomainOverlapsType& upperPeriodicBoundariesOverlapSize )
 {
+   // initialize to 0
+   lower = upper = 0;
+
    if( MPI::GetSize() == 1 )
       return;
    TNL_ASSERT_TRUE( distributedMesh != NULL, "" );
@@ -101,6 +107,9 @@ getOverlaps( const DistributedMeshType* distributedMesh,
              const SubdomainOverlapsType& lowerPeriodicBoundariesOverlapSize,
              const SubdomainOverlapsType& upperPeriodicBoundariesOverlapSize )
 {
+   // initialize to 0
+   lower = upper = 0;
+
    if( MPI::GetSize() == 1 )
       return;
    TNL_ASSERT_TRUE( distributedMesh != NULL, "" );
@@ -143,6 +152,9 @@ getOverlaps( const DistributedMeshType* distributedMesh,
              const SubdomainOverlapsType& lowerPeriodicBoundariesOverlapSize,
              const SubdomainOverlapsType& upperPeriodicBoundariesOverlapSize )
 {
+   // initialize to 0
+   lower = upper = 0;
+
    if( MPI::GetSize() == 1 )
       return;
    TNL_ASSERT_TRUE( distributedMesh != NULL, "" );
@@ -181,6 +193,6 @@ getOverlaps( const DistributedMeshType* distributedMesh,
       upper[ 2 ] = upperPeriodicBoundariesOverlapSize[ 2 ];
 }
 
-      } // namespace DistributedMeshes
-   } // namespace Meshes
+} // namespace DistributedMeshes
+} // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/DummyMesh.h b/src/TNL/Meshes/DummyMesh.h
index e0caf6d3c403fd6227f7b8ab269c0ea1cc9e5267..13337da6e654a381a8d390bd988e163288a4b4f8 100644
--- a/src/TNL/Meshes/DummyMesh.h
+++ b/src/TNL/Meshes/DummyMesh.h
@@ -10,8 +10,6 @@
 
 #pragma once
 
-#include <TNL/String.h>
-#include <TNL/File.h>
 #include <TNL/Devices/Host.h>
 
 namespace TNL {
@@ -26,16 +24,8 @@ public:
    typedef Real RealType;
    typedef Device DeviceType;
    typedef Index IndexType;
- 
-   constexpr static int getMeshDimension() { return 1; }
- 
-   void save( File& file ) const {}
-
-   void load( File& file ) {}
 
-   void save( const String& fileName ) const {}
-
-   void load( const String& fileName ) {}
+   constexpr static int getMeshDimension() { return 1; }
 };
 
 } // namespace Meshes
diff --git a/src/TNL/Meshes/Grid.h b/src/TNL/Meshes/Grid.h
index c196e8b88708bd228707c3b6d059a35a4039a3f8..4d69fc3c4a22ba1cebf2313d266014b7dc4767cd 100644
--- a/src/TNL/Meshes/Grid.h
+++ b/src/TNL/Meshes/Grid.h
@@ -10,21 +10,45 @@
 
 #pragma once
 
-#include <TNL/Object.h>
 #include <TNL/Devices/Host.h>
-#include <TNL/Containers/StaticVector.h>
-#include <TNL/Containers/Vector.h>
 
 namespace TNL {
-namespace Meshes {    
+namespace Meshes {
 
 template< int Dimension,
           typename Real = double,
           typename Device = Devices::Host,
           typename Index = int >
-class Grid : public Object
+class Grid;
+
+template< int Dimension, typename Real, typename Device, typename Index >
+bool operator==( const Grid< Dimension, Real, Device, Index >& lhs,
+                 const Grid< Dimension, Real, Device, Index >& rhs )
+{
+   return lhs.getDimensions() == rhs.getDimensions()
+       && lhs.getOrigin() == rhs.getOrigin()
+       && lhs.getProportions() == rhs.getProportions();
+}
+
+template< int Dimension, typename Real, typename Device, typename Index >
+bool operator!=( const Grid< Dimension, Real, Device, Index >& lhs,
+                 const Grid< Dimension, Real, Device, Index >& rhs )
+{
+   return ! (lhs == rhs);
+}
+
+template< int Dimension, typename Real, typename Device, typename Index >
+std::ostream& operator<<( std::ostream& str, const Grid< Dimension, Real, Device, Index >& grid )
 {
-};
+   str << "Grid dimensions:    " << grid.getDimensions()  << std::endl;
+   str << "     origin:        " << grid.getOrigin()      << std::endl;
+   str << "     proportions:   " << grid.getProportions() << std::endl;
+   str << "     localBegin:    " << grid.getLocalBegin() << std::endl;
+   str << "     localEnd:      " << grid.getLocalEnd() << std::endl;
+   str << "     interiorBegin: " << grid.getInteriorBegin() << std::endl;
+   str << "     interiorEnd:   " << grid.getInteriorEnd() << std::endl;
+   return str;
+}
 
 } // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/GridDetails/Grid1D.h b/src/TNL/Meshes/GridDetails/Grid1D.h
index 67b6e78e8c7f0c3a243abc80dab2fe4d319ac8b1..64f783a174252a8153a5406eed14e661f541b04e 100644
--- a/src/TNL/Meshes/GridDetails/Grid1D.h
+++ b/src/TNL/Meshes/GridDetails/Grid1D.h
@@ -17,7 +17,6 @@
 #include <TNL/Meshes/GridDetails/NeighborGridEntityGetter.h>
 #include <TNL/Meshes/GridEntity.h>
 #include <TNL/Meshes/GridEntityConfig.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 
 namespace TNL {
 namespace Meshes {
@@ -25,17 +24,14 @@ namespace Meshes {
 template< typename Real,
           typename Device,
           typename Index >
-class Grid< 1, Real, Device, Index > : public Object
+class Grid< 1, Real, Device, Index >
 {
-   public:
-
-   typedef Real RealType;
-   typedef Device DeviceType;
-   typedef Index GlobalIndexType;
-   typedef Containers::StaticVector< 1, Real > PointType;
-   typedef Containers::StaticVector< 1, Index > CoordinatesType;
-
-   typedef DistributedMeshes::DistributedMesh <Grid> DistributedMeshType;
+public:
+   using RealType = Real;
+   using DeviceType = Device;
+   using GlobalIndexType = Index;
+   using PointType = Containers::StaticVector< 1, Real >;
+   using CoordinatesType = Containers::StaticVector< 1, Index >;
 
    // TODO: deprecated and to be removed (GlobalIndexType shall be used instead)
    typedef Index IndexType;
@@ -57,22 +53,12 @@ class Grid< 1, Real, Device, Index > : public Object
     * \brief Basic constructor.
     */
    Grid();
-   
+
    Grid( const Index xSize );
 
    // empty destructor is needed only to avoid crappy nvcc warnings
    ~Grid() {}
 
-   /**
-    * \brief Returns (host) type of grid Real (value), Device type and the type of Index.
-    */
-   static String getSerializationType();
-
-   /**
-    * \brief Returns (host) type of grid Real (value), Device type and the type of Index.
-    */
-   virtual String getSerializationTypeVirtual() const;
-
    /**
     * \brief Sets the size of dimensions.
     * \param xSize Size of dimesion x.
@@ -88,6 +74,26 @@ class Grid< 1, Real, Device, Index > : public Object
    __cuda_callable__
    const CoordinatesType& getDimensions() const;
 
+   void setLocalBegin( const CoordinatesType& begin );
+
+   __cuda_callable__
+   const CoordinatesType& getLocalBegin() const;
+
+   void setLocalEnd( const CoordinatesType& end );
+
+   __cuda_callable__
+   const CoordinatesType& getLocalEnd() const;
+
+   void setInteriorBegin( const CoordinatesType& begin );
+
+   __cuda_callable__
+   const CoordinatesType& getInteriorBegin() const;
+
+   void setInteriorEnd( const CoordinatesType& end );
+
+   __cuda_callable__
+   const CoordinatesType& getInteriorEnd() const;
+
    /**
     * \brief Sets the origin.
     * \param origin Starting point of this grid.
@@ -180,42 +186,18 @@ class Grid< 1, Real, Device, Index > : public Object
     */
    __cuda_callable__
    inline RealType getSmallestSpaceStep() const;
-   
-   void setDistMesh(DistributedMeshType * distMesh);
-   
-   DistributedMeshType * getDistributedMesh() const;
-
-   /**
-    * \brief Method for saving the object to a file as a binary data
-    */
-   void save( File& file ) const;
-
-   /**
-    * \brief Method for restoring the object from a file.
-    */
-   void load( File& file );
-
-   /**
-    * \brief Method for saving the object to a file.
-    */
-   void save( const String& fileName ) const;
-
-   /**
-    * \brief Method for restoring the object from a file.
-    */
-   void load( const String& fileName );
 
    void writeProlog( Logger& logger ) const;
 
-   protected:
+protected:
 
    void computeProportions();
-       
+
    void computeSpaceStepPowers();
 
    void computeSpaceSteps();
 
-   CoordinatesType dimensions;
+   CoordinatesType dimensions, localBegin, localEnd, interiorBegin, interiorEnd;
 
    IndexType numberOfCells, numberOfVertices;
 
@@ -224,8 +206,6 @@ class Grid< 1, Real, Device, Index > : public Object
    PointType spaceSteps;
 
    RealType spaceStepsProducts[ 5 ];
-   
-   DistributedMeshType *distGrid;
 };
 
 } // namespace Meshes
diff --git a/src/TNL/Meshes/GridDetails/Grid1D_impl.h b/src/TNL/Meshes/GridDetails/Grid1D_impl.h
index 679b473f1cebdc9e95a515676aec7bbceeb13229..0ad33b103f5130413f446912e4fb551e8c3844e3 100644
--- a/src/TNL/Meshes/GridDetails/Grid1D_impl.h
+++ b/src/TNL/Meshes/GridDetails/Grid1D_impl.h
@@ -14,7 +14,6 @@
 #include <iomanip>
 #include <TNL/String.h>
 #include <TNL/Assert.h>
-#include <TNL/Meshes/GridDetails/GnuplotWriter.h>
 #include <TNL/Meshes/GridDetails/GridEntityGetter_impl.h>
 #include <TNL/Meshes/GridDetails/NeighborGridEntityGetter1D_impl.h>
 #include <TNL/Meshes/GridDetails/Grid1D.h>
@@ -28,8 +27,7 @@ template< typename Real,
           typename Index >
 Grid< 1, Real, Device, Index >::Grid()
 : numberOfCells( 0 ),
-  numberOfVertices( 0 ),
-  distGrid(nullptr)
+  numberOfVertices( 0 )
 {
 }
 
@@ -38,32 +36,11 @@ template< typename Real,
           typename Index >
 Grid< 1, Real, Device, Index >::Grid( const Index xSize )
 : numberOfCells( 0 ),
-  numberOfVertices( 0 ),
-        distGrid(nullptr)
+  numberOfVertices( 0 )
 {
    this->setDimensions( xSize );
 }
 
-template< typename Real,
-          typename Device,
-          typename Index >
-String Grid< 1, Real, Device, Index >::getSerializationType()
-{
-   return String( "Meshes::Grid< " ) +
-          convertToString( getMeshDimension() ) + ", " +
-          getType< RealType >() + ", " +
-          getType< Devices::Host >() + ", " +
-          getType< IndexType >() + " >";
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-String Grid< 1, Real, Device, Index >::getSerializationTypeVirtual() const
-{
-   return this->getSerializationType();
-};
-
 template< typename Real,
           typename Device,
           typename Index >
@@ -87,7 +64,7 @@ void Grid< 1, Real, Device, Index > ::computeSpaceStepPowers()
       this->spaceStepsProducts[ 2 ] = 1.0;
       this->spaceStepsProducts[ 3 ] = hx;
       this->spaceStepsProducts[ 4 ] = hx * hx;
-   
+
 }
 
 
@@ -112,11 +89,17 @@ template< typename Real,
           typename Index  >
 void Grid< 1, Real, Device, Index >::setDimensions( const Index xSize )
 {
-   TNL_ASSERT_GT( xSize, 0, "Grid size must be positive." );
+   TNL_ASSERT_GE( xSize, 0, "Grid size must be non-negative." );
    this->dimensions.x() = xSize;
    this->numberOfCells = xSize;
    this->numberOfVertices = xSize + 1;
    computeSpaceSteps();
+
+   // only default behaviour, DistributedGrid must use the setters explicitly after setDimensions
+   localBegin = 0;
+   interiorBegin = 1;
+   localEnd = dimensions;
+   interiorEnd = dimensions - 1;
 }
 
 template< typename Real,
@@ -137,11 +120,84 @@ const typename Grid< 1, Real, Device, Index >::CoordinatesType&
    return this->dimensions;
 }
 
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 1, Real, Device, Index >::setLocalBegin( const CoordinatesType& begin )
+{
+   localBegin = begin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 1, Real, Device, Index >::CoordinatesType&
+   Grid< 1, Real, Device, Index >::getLocalBegin() const
+{
+   return localBegin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 1, Real, Device, Index >::setLocalEnd( const CoordinatesType& end )
+{
+   localEnd = end;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 1, Real, Device, Index >::CoordinatesType&
+   Grid< 1, Real, Device, Index >::
+   getLocalEnd() const
+{
+   return localEnd;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 1, Real, Device, Index >::setInteriorBegin( const CoordinatesType& begin )
+{
+   interiorBegin = begin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 1, Real, Device, Index >::CoordinatesType&
+   Grid< 1, Real, Device, Index >::getInteriorBegin() const
+{
+   return interiorBegin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 1, Real, Device, Index >::setInteriorEnd( const CoordinatesType& end )
+{
+   interiorEnd = end;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 1, Real, Device, Index >::CoordinatesType&
+   Grid< 1, Real, Device, Index >::getInteriorEnd() const
+{
+   return interiorEnd;
+}
+
 template< typename Real,
           typename Device,
           typename Index >
 void Grid< 1, Real, Device, Index >::setDomain( const PointType& origin,
-                                                     const PointType& proportions )
+                                                const PointType& proportions )
 {
    this->origin = origin;
    this->proportions = proportions;
@@ -247,7 +303,7 @@ getSpaceSteps() const
 template< typename Real,
           typename Device,
           typename Index >
-inline void 
+inline void
 Grid< 1, Real, Device, Index >::
 setSpaceSteps(const typename Grid< 1, Real, Device, Index >::PointType& steps)
 {
@@ -290,63 +346,6 @@ getSmallestSpaceStep() const
    return this->spaceSteps.x();
 }
 
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 1, Real, Device, Index >:: setDistMesh(DistributedMeshType * distMesh)
-{
-    this->distGrid=distMesh;
-}
-   
-template< typename Real,
-          typename Device,
-          typename Index >
-DistributedMeshes::DistributedMesh <Grid< 1, Real, Device, Index >> * 
-Grid< 1, Real, Device, Index >:: getDistributedMesh(void) const
-{
-    return this->distGrid;
-}
-    
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 1, Real, Device, Index >::save( File& file ) const
-{
-   Object::save( file );
-   this->origin.save( file );
-   this->proportions.save( file );
-   this->dimensions.save( file );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 1, Real, Device, Index >::load( File& file )
-{
-   Object::load( file );
-   CoordinatesType dimensions;
-   this->origin.load( file );
-   this->proportions.load( file );
-   dimensions.load( file );
-   this->setDimensions( dimensions );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 1, Real, Device, Index >::save( const String& fileName ) const
-{
-   Object::save( fileName );
-}
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 1, Real, Device, Index >::load( const String& fileName )
-{
-   Object::load( fileName );
-}
-
 template< typename Real,
           typename Device,
           typename Index >
@@ -354,8 +353,6 @@ void
 Grid< 1, Real, Device, Index >::
 writeProlog( Logger& logger ) const
 {
-   if( this->getDistributedMesh() && this->getDistributedMesh()->isDistributed() )
-      return this->getDistributedMesh()->writeProlog( logger );
    logger.writeParameter( "Dimension:", getMeshDimension() );
    logger.writeParameter( "Domain origin:", this->origin );
    logger.writeParameter( "Domain proportions:", this->proportions );
diff --git a/src/TNL/Meshes/GridDetails/Grid2D.h b/src/TNL/Meshes/GridDetails/Grid2D.h
index 3fd9194bd74517085227c84a97a4d8061d3d8221..d11487b5d84cd757735f81391d2aea8aee6982df 100644
--- a/src/TNL/Meshes/GridDetails/Grid2D.h
+++ b/src/TNL/Meshes/GridDetails/Grid2D.h
@@ -17,7 +17,6 @@
 #include <TNL/Meshes/GridDetails/NeighborGridEntityGetter.h>
 #include <TNL/Meshes/GridEntity.h>
 #include <TNL/Meshes/GridEntityConfig.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 
 namespace TNL {
 namespace Meshes {
@@ -25,7 +24,7 @@ namespace Meshes {
 template< typename Real,
           typename Device,
           typename Index >
-class Grid< 2, Real, Device, Index > : public Object
+class Grid< 2, Real, Device, Index >
 {
    public:
 
@@ -35,8 +34,6 @@ class Grid< 2, Real, Device, Index > : public Object
    typedef Containers::StaticVector< 2, Real > PointType;
    typedef Containers::StaticVector< 2, Index > CoordinatesType;
 
-   typedef DistributedMeshes::DistributedMesh <Grid> DistributedMeshType;
- 
    // TODO: deprecated and to be removed (GlobalIndexType shall be used instead)
    typedef Index IndexType;
 
@@ -60,16 +57,6 @@ class Grid< 2, Real, Device, Index > : public Object
    // empty destructor is needed only to avoid crappy nvcc warnings
    ~Grid() {}
 
-   /**
-    * \brief See Grid1D::getSerializationType().
-    */
-   static String getSerializationType();
-
-   /**
-    * \brief See Grid1D::getSerializationTypeVirtual().
-    */
-   virtual String getSerializationTypeVirtual() const;
-
    /**
     * \brief Sets the size of dimensions.
     * \param xSize Size of dimension x.
@@ -88,6 +75,26 @@ class Grid< 2, Real, Device, Index > : public Object
    __cuda_callable__
    const CoordinatesType& getDimensions() const;
 
+   void setLocalBegin( const CoordinatesType& begin );
+
+   __cuda_callable__
+   const CoordinatesType& getLocalBegin() const;
+
+   void setLocalEnd( const CoordinatesType& end );
+
+   __cuda_callable__
+   const CoordinatesType& getLocalEnd() const;
+
+   void setInteriorBegin( const CoordinatesType& begin );
+
+   __cuda_callable__
+   const CoordinatesType& getInteriorBegin() const;
+
+   void setInteriorEnd( const CoordinatesType& end );
+
+   __cuda_callable__
+   const CoordinatesType& getInteriorEnd() const;
+
    /**
     * \brief See Grid1D::setDomain().
     */
@@ -179,44 +186,19 @@ class Grid< 2, Real, Device, Index > : public Object
    __cuda_callable__
    inline RealType getSmallestSpaceStep() const;
 
-
-   void setDistMesh(DistributedMeshType * distGrid);
-   
-   DistributedMeshType * getDistributedMesh() const;
-
-   /**
-    * \brief See Grid1D::save( File& file ) const.
-    */
-   void save( File& file ) const;
-
-   /**
-    * \brief See Grid1D::load( File& file ).
-    */
-   void load( File& file );
-
-   /**
-    * \brief See Grid1D::save( const String& fileName ) const.
-    */
-   void save( const String& fileName ) const;
-
-   /**
-    * \brief See Grid1D::load( const String& fileName ).
-    */
-   void load( const String& fileName );
-
    void writeProlog( Logger& logger ) const;
 
    protected:
-   
+
    void computeProportions();
-       
+
    __cuda_callable__
    void computeSpaceStepPowers();
 
    __cuda_callable__
    void computeSpaceSteps();
 
-   CoordinatesType dimensions;
+   CoordinatesType dimensions, localBegin, localEnd, interiorBegin, interiorEnd;
 
    IndexType numberOfCells, numberOfNxFaces, numberOfNyFaces, numberOfFaces, numberOfVertices;
 
@@ -225,9 +207,7 @@ class Grid< 2, Real, Device, Index > : public Object
    PointType spaceSteps;
 
    RealType spaceStepsProducts[ 5 ][ 5 ];
-   
-   DistributedMeshType *distGrid;
- 
+
    template< typename, typename, int >
    friend class GridEntityGetter;
 };
diff --git a/src/TNL/Meshes/GridDetails/Grid2D_impl.h b/src/TNL/Meshes/GridDetails/Grid2D_impl.h
index 3d8a4c19400c807aa5adf0bc701daf28ec6a63a9..fc290d23d430fa53b909beb7cdb588f1e9174785 100644
--- a/src/TNL/Meshes/GridDetails/Grid2D_impl.h
+++ b/src/TNL/Meshes/GridDetails/Grid2D_impl.h
@@ -14,12 +14,10 @@
 #include <iomanip>
 #include <TNL/String.h>
 #include <TNL/Assert.h>
-#include <TNL/Meshes/GridDetails/GnuplotWriter.h>
 #include <TNL/Meshes/GridDetails/GridEntityGetter_impl.h>
 #include <TNL/Meshes/GridDetails/NeighborGridEntityGetter2D_impl.h>
 #include <TNL/Meshes/GridDetails/Grid2D.h>
 #include <TNL/Meshes/GridDetails/GridEntityMeasureGetter.h>
-#include <TNL/Containers/Vector.h>
 
 namespace TNL {
 namespace Meshes {
@@ -32,8 +30,7 @@ Grid< 2, Real, Device, Index > :: Grid()
   numberOfNxFaces( 0 ),
   numberOfNyFaces( 0 ),
   numberOfFaces( 0 ),
-  numberOfVertices( 0 ),
-  distGrid(nullptr)
+  numberOfVertices( 0 )
 {
 }
 
@@ -45,32 +42,11 @@ Grid< 2, Real, Device, Index >::Grid( const Index xSize, const Index ySize )
   numberOfNxFaces( 0 ),
   numberOfNyFaces( 0 ),
   numberOfFaces( 0 ),
-  numberOfVertices( 0 ),
-  distGrid(nullptr)
+  numberOfVertices( 0 )
 {
    this->setDimensions( xSize, ySize );
 }
 
-template< typename Real,
-          typename Device,
-          typename Index >
-String Grid< 2, Real, Device, Index > :: getSerializationType()
-{
-   return String( "Meshes::Grid< " ) +
-          convertToString( getMeshDimension() ) + ", " +
-          getType< RealType >() + ", " +
-          getType< Devices::Host >() + ", " +
-          getType< IndexType >() + " >";
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-String Grid< 2, Real, Device, Index > :: getSerializationTypeVirtual() const
-{
-   return this->getSerializationType();
-};
-
 template< typename Real,
           typename Device,
           typename Index >
@@ -154,8 +130,8 @@ template< typename Real,
           typename Index >
 void Grid< 2, Real, Device, Index > :: setDimensions( const Index xSize, const Index ySize )
 {
-   TNL_ASSERT_GT( xSize, 0, "Grid size must be positive." );
-   TNL_ASSERT_GT( ySize, 0, "Grid size must be positive." );
+   TNL_ASSERT_GE( xSize, 0, "Grid size must be non-negative." );
+   TNL_ASSERT_GE( ySize, 0, "Grid size must be non-negative." );
 
    this->dimensions.x() = xSize;
    this->dimensions.y() = ySize;
@@ -165,6 +141,12 @@ void Grid< 2, Real, Device, Index > :: setDimensions( const Index xSize, const I
    this->numberOfFaces = this->numberOfNxFaces + this->numberOfNyFaces;
    this->numberOfVertices = ( xSize + 1 ) * ( ySize + 1 );
    computeSpaceSteps();
+
+   // only default behaviour, DistributedGrid must use the setters explicitly after setDimensions
+   localBegin = 0;
+   interiorBegin = 1;
+   localEnd = dimensions;
+   interiorEnd = dimensions - 1;
 }
 
 template< typename Real,
@@ -185,6 +167,79 @@ Grid< 2, Real, Device, Index > :: getDimensions() const
    return this->dimensions;
 }
 
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 2, Real, Device, Index >::setLocalBegin( const CoordinatesType& begin )
+{
+   localBegin = begin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 2, Real, Device, Index >::CoordinatesType&
+   Grid< 2, Real, Device, Index >::getLocalBegin() const
+{
+   return localBegin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 2, Real, Device, Index >::setLocalEnd( const CoordinatesType& end )
+{
+   localEnd = end;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 2, Real, Device, Index >::CoordinatesType&
+   Grid< 2, Real, Device, Index >::
+   getLocalEnd() const
+{
+   return localEnd;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 2, Real, Device, Index >::setInteriorBegin( const CoordinatesType& begin )
+{
+   interiorBegin = begin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 2, Real, Device, Index >::CoordinatesType&
+   Grid< 2, Real, Device, Index >::getInteriorBegin() const
+{
+   return interiorBegin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 2, Real, Device, Index >::setInteriorEnd( const CoordinatesType& end )
+{
+   interiorEnd = end;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 2, Real, Device, Index >::CoordinatesType&
+   Grid< 2, Real, Device, Index >::getInteriorEnd() const
+{
+   return interiorEnd;
+}
+
 template< typename Real,
           typename Device,
           typename Index >
@@ -305,7 +360,7 @@ getSpaceSteps() const
 template< typename Real,
           typename Device,
           typename Index >
-inline void 
+inline void
 Grid< 2, Real, Device, Index >::
 setSpaceSteps(const typename Grid< 2, Real, Device, Index >::PointType& steps)
 {
@@ -359,63 +414,6 @@ Real Grid< 2, Real, Device, Index > :: getSmallestSpaceStep() const
    return min( this->spaceSteps.x(), this->spaceSteps.y() );
 }
 
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 2, Real, Device, Index >:: setDistMesh(DistributedMeshType* distMesh)
-{
-    this->distGrid=distMesh;
-}
-   
-template< typename Real,
-          typename Device,
-          typename Index >
-DistributedMeshes::DistributedMesh <Grid< 2, Real, Device, Index >> * 
-Grid< 2, Real, Device, Index >:: getDistributedMesh(void) const
-{
-    return this->distGrid;
-}
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 2, Real, Device, Index > :: save( File& file ) const
-{
-   Object::save( file );
-   this->origin.save( file );
-   this->proportions.save( file );
-   this->dimensions.save( file );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 2, Real, Device, Index > :: load( File& file )
-{
-   Object::load( file );
-   CoordinatesType dimensions;
-   this->origin.load( file );
-   this->proportions.load( file );
-   dimensions.load( file );
-   this->setDimensions( dimensions );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 2, Real, Device, Index > :: save( const String& fileName ) const
-{
-   Object::save( fileName );
-};
-
-template< typename Real,
-           typename Device,
-           typename Index >
-void Grid< 2, Real, Device, Index > :: load( const String& fileName )
-{
-   Object::load( fileName );
-};
-
 template< typename Real,
           typename Device,
           typename Index >
@@ -423,8 +421,6 @@ void
 Grid< 2, Real, Device, Index >::
 writeProlog( Logger& logger ) const
 {
-   if( this->getDistributedMesh() && this->getDistributedMesh()->isDistributed() )
-      return this->getDistributedMesh()->writeProlog( logger );
    logger.writeParameter( "Dimension:", getMeshDimension() );
    logger.writeParameter( "Domain origin:", this->origin );
    logger.writeParameter( "Domain proportions:", this->proportions );
diff --git a/src/TNL/Meshes/GridDetails/Grid3D.h b/src/TNL/Meshes/GridDetails/Grid3D.h
index 91357ba1265d120a8bd1d8a6918de9109c906201..3f1e871e023cb5adc86ef82d621b70eb02d927c4 100644
--- a/src/TNL/Meshes/GridDetails/Grid3D.h
+++ b/src/TNL/Meshes/GridDetails/Grid3D.h
@@ -24,7 +24,7 @@ namespace Meshes {
 template< typename Real,
           typename Device,
           typename Index >
-class Grid< 3, Real, Device, Index > : public Object
+class Grid< 3, Real, Device, Index >
 {
    public:
 
@@ -34,8 +34,6 @@ class Grid< 3, Real, Device, Index > : public Object
    typedef Containers::StaticVector< 3, Real > PointType;
    typedef Containers::StaticVector< 3, Index > CoordinatesType;
 
-   typedef DistributedMeshes::DistributedMesh <Grid> DistributedMeshType;
- 
    // TODO: deprecated and to be removed (GlobalIndexType shall be used instead)
    typedef Index IndexType;
 
@@ -60,16 +58,6 @@ class Grid< 3, Real, Device, Index > : public Object
    // empty destructor is needed only to avoid crappy nvcc warnings
    ~Grid() {}
 
-   /**
-    * \brief See Grid1D::getSerializationType().
-    */
-   static String getSerializationType();
-
-   /**
-    * \brief See Grid1D::getSerializationTypeVirtual().
-    */
-   virtual String getSerializationTypeVirtual() const;
-
    /**
     * \brief Sets the size of dimensions.
     * \param xSize Size of dimesion x.
@@ -89,6 +77,26 @@ class Grid< 3, Real, Device, Index > : public Object
    __cuda_callable__
    const CoordinatesType& getDimensions() const;
 
+   void setLocalBegin( const CoordinatesType& begin );
+
+   __cuda_callable__
+   const CoordinatesType& getLocalBegin() const;
+
+   void setLocalEnd( const CoordinatesType& end );
+
+   __cuda_callable__
+   const CoordinatesType& getLocalEnd() const;
+
+   void setInteriorBegin( const CoordinatesType& begin );
+
+   __cuda_callable__
+   const CoordinatesType& getInteriorBegin() const;
+
+   void setInteriorEnd( const CoordinatesType& end );
+
+   __cuda_callable__
+   const CoordinatesType& getInteriorEnd() const;
+
    /**
     * \brief See Grid1D::setDomain().
     */
@@ -152,10 +160,6 @@ class Grid< 3, Real, Device, Index > : public Object
     * \brief See Grid1D::setSpaceSteps().
     */
    inline void setSpaceSteps(const PointType& steps);
-   
-   void setDistMesh(DistributedMeshType * distGrid);
-   
-   DistributedMeshType * getDistributedMesh(void) const;
 
    /**
     * \brief Returns product of space steps to the xPow.
@@ -191,37 +195,17 @@ class Grid< 3, Real, Device, Index > : public Object
    __cuda_callable__
    RealType getSmallestSpaceStep() const;
 
-   /**
-    * \brief See Grid1D::save( File& file ) const.
-    */
-   void save( File& file ) const;
-
-   /**
-    * \brief See Grid1D::load( File& file ).
-    */
-   void load( File& file );
-
-   /**
-    * \brief See Grid1D::save( const String& fileName ) const.
-    */
-   void save( const String& fileName ) const;
-
-   /**
-    * \brief See Grid1D::load( const String& fileName ).
-    */
-   void load( const String& fileName );
-
    void writeProlog( Logger& logger ) const;
 
    protected:
 
    void computeProportions();
-       
-   void computeSpaceStepPowers();    
-       
+
+   void computeSpaceStepPowers();
+
    void computeSpaceSteps();
 
-   CoordinatesType dimensions;
+   CoordinatesType dimensions, localBegin, localEnd, interiorBegin, interiorEnd;
 
    IndexType numberOfCells,
           numberOfNxFaces, numberOfNyFaces, numberOfNzFaces, numberOfNxAndNyFaces, numberOfFaces,
@@ -235,8 +219,6 @@ class Grid< 3, Real, Device, Index > : public Object
    PointType spaceSteps;
 
    RealType spaceStepsProducts[ 5 ][ 5 ][ 5 ];
-   
-   DistributedMeshType *distGrid;
 
    template< typename, typename, int >
    friend class GridEntityGetter;
diff --git a/src/TNL/Meshes/GridDetails/Grid3D_impl.h b/src/TNL/Meshes/GridDetails/Grid3D_impl.h
index 0b1f86d6b2d105fe68404803cfcbe322d1ffd8be..3dafeb2a3816004c90c14730fa6f2f7888fbd2de 100644
--- a/src/TNL/Meshes/GridDetails/Grid3D_impl.h
+++ b/src/TNL/Meshes/GridDetails/Grid3D_impl.h
@@ -14,7 +14,6 @@
 #include <iomanip>
 #include <TNL/String.h>
 #include <TNL/Assert.h>
-#include <TNL/Meshes/GridDetails/GnuplotWriter.h>
 #include <TNL/Meshes/GridDetails/GridEntityGetter_impl.h>
 #include <TNL/Meshes/GridDetails/NeighborGridEntityGetter3D_impl.h>
 #include <TNL/Meshes/GridDetails/Grid3D.h>
@@ -38,8 +37,7 @@ Grid< 3, Real, Device, Index > :: Grid()
   numberOfDzEdges( 0 ),
   numberOfDxAndDyEdges( 0 ),
   numberOfEdges( 0 ),
-  numberOfVertices( 0 ),
-  distGrid(nullptr)
+  numberOfVertices( 0 )
 {
 }
 
@@ -58,33 +56,12 @@ Grid< 3, Real, Device, Index >::Grid( const Index xSize, const Index ySize, cons
   numberOfDzEdges( 0 ),
   numberOfDxAndDyEdges( 0 ),
   numberOfEdges( 0 ),
-  numberOfVertices( 0 ),
-  distGrid(nullptr)
+  numberOfVertices( 0 )
 {
    this->setDimensions( xSize, ySize, zSize );
 }
 
 
-template< typename Real,
-          typename Device,
-          typename Index >
-String Grid< 3, Real, Device, Index > :: getSerializationType()
-{
-   return String( "Meshes::Grid< " ) +
-          convertToString( getMeshDimension() ) + ", " +
-          getType< RealType >() + ", " +
-          getType< Devices::Host >() + ", " +
-          getType< IndexType >() + " >";
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-String Grid< 3, Real, Device, Index > :: getSerializationTypeVirtual() const
-{
-   return this->getSerializationType();
-};
-
 template< typename Real,
           typename Device,
           typename Index >
@@ -97,9 +74,9 @@ void Grid< 3, Real, Device, Index > :: computeSpaceSteps()
       this->spaceSteps.x() = this->proportions.x() / ( Real ) this->getDimensions().x();
       this->spaceSteps.y() = this->proportions.y() / ( Real ) this->getDimensions().y();
       this->spaceSteps.z() = this->proportions.z() / ( Real ) this->getDimensions().z();
-      
+
       this->computeSpaceStepPowers();
-      
+
    }
 };
 
@@ -107,7 +84,7 @@ template< typename Real,
           typename Device,
           typename Index >
 void Grid< 3, Real, Device, Index > :: computeSpaceStepPowers()
-{      
+{
       const RealType& hx = this->spaceSteps.x();
       const RealType& hy = this->spaceSteps.y();
       const RealType& hz = this->spaceSteps.z();
@@ -203,9 +180,9 @@ template< typename Real,
           typename Index >
 void Grid< 3, Real, Device, Index > :: setSpaceSteps(const PointType& steps)
 {
-     this->spaceSteps=steps;    
+     this->spaceSteps=steps;
      computeSpaceStepPowers();
-     computeProportions(); 
+     computeProportions();
 }
 
 
@@ -214,9 +191,9 @@ template< typename Real,
           typename Index >
 void Grid< 3, Real, Device, Index > :: setDimensions( const Index xSize, const Index ySize, const Index zSize )
 {
-   TNL_ASSERT_GT( xSize, 0, "Grid size must be positive." );
-   TNL_ASSERT_GT( ySize, 0, "Grid size must be positive." );
-   TNL_ASSERT_GT( zSize, 0, "Grid size must be positive." );
+   TNL_ASSERT_GE( xSize, 0, "Grid size must be non-negative." );
+   TNL_ASSERT_GE( ySize, 0, "Grid size must be non-negative." );
+   TNL_ASSERT_GE( zSize, 0, "Grid size must be non-negative." );
 
    this->dimensions.x() = xSize;
    this->dimensions.y() = ySize;
@@ -241,6 +218,12 @@ void Grid< 3, Real, Device, Index > :: setDimensions( const Index xSize, const I
    this->cellZNeighborsStep = xSize * ySize;
 
    computeSpaceSteps();
+
+   // only default behaviour, DistributedGrid must use the setters explicitly after setDimensions
+   localBegin = 0;
+   interiorBegin = 1;
+   localEnd = dimensions;
+   interiorEnd = dimensions - 1;
 }
 
 template< typename Real,
@@ -261,6 +244,79 @@ const typename Grid< 3, Real, Device, Index > :: CoordinatesType&
    return this->dimensions;
 }
 
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 3, Real, Device, Index >::setLocalBegin( const CoordinatesType& begin )
+{
+   localBegin = begin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 3, Real, Device, Index >::CoordinatesType&
+   Grid< 3, Real, Device, Index >::getLocalBegin() const
+{
+   return localBegin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 3, Real, Device, Index >::setLocalEnd( const CoordinatesType& end )
+{
+   localEnd = end;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 3, Real, Device, Index >::CoordinatesType&
+   Grid< 3, Real, Device, Index >::
+   getLocalEnd() const
+{
+   return localEnd;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 3, Real, Device, Index >::setInteriorBegin( const CoordinatesType& begin )
+{
+   interiorBegin = begin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 3, Real, Device, Index >::CoordinatesType&
+   Grid< 3, Real, Device, Index >::getInteriorBegin() const
+{
+   return interiorBegin;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+void Grid< 3, Real, Device, Index >::setInteriorEnd( const CoordinatesType& end )
+{
+   interiorEnd = end;
+}
+
+template< typename Real,
+          typename Device,
+          typename Index  >
+__cuda_callable__
+const typename Grid< 3, Real, Device, Index >::CoordinatesType&
+   Grid< 3, Real, Device, Index >::getInteriorEnd() const
+{
+   return interiorEnd;
+}
+
 template< typename Real,
           typename Device,
           typename Index >
@@ -429,63 +485,6 @@ Real Grid< 3, Real, Device, Index > :: getSmallestSpaceStep() const
    return min( this->spaceSteps.x(), min( this->spaceSteps.y(), this->spaceSteps.z() ) );
 }
 
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 3, Real, Device, Index >:: setDistMesh(DistributedMeshType * distMesh)
-{
-    this->distGrid=distMesh;
-}
-   
-template< typename Real,
-          typename Device,
-          typename Index >
-DistributedMeshes::DistributedMesh <Grid< 3, Real, Device, Index >> * 
-Grid< 3, Real, Device, Index >:: getDistributedMesh(void) const
-{
-    return this->distGrid;
-}
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 3, Real, Device, Index > :: save( File& file ) const
-{
-   Object::save( file );
-   this->origin.save( file );
-   this->proportions.save( file );
-   this->dimensions.save( file );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 3, Real, Device, Index >::load( File& file )
-{
-   Object :: load( file );
-   CoordinatesType dimensions;
-   this->origin.load( file );
-   this->proportions.load( file );
-   dimensions.load( file );
-   this->setDimensions( dimensions );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 3, Real, Device, Index >::save( const String& fileName ) const
-{
-   Object::save( fileName );
-};
-
-template< typename Real,
-          typename Device,
-          typename Index >
-void Grid< 3, Real, Device, Index >::load( const String& fileName )
-{
-   Object::load( fileName );
-};
-
 template< typename Real,
           typename Device,
           typename Index >
@@ -493,8 +492,6 @@ void
 Grid< 3, Real, Device, Index >::
 writeProlog( Logger& logger ) const
 {
-   if( this->getDistributedMesh() && this->getDistributedMesh()->isDistributed() )
-      return this->getDistributedMesh()->writeProlog( logger );   
    logger.writeParameter( "Dimension:", getMeshDimension() );
    logger.writeParameter( "Domain origin:", this->origin );
    logger.writeParameter( "Domain proportions:", this->proportions );
diff --git a/src/TNL/Meshes/GridDetails/GridTraverser_1D.hpp b/src/TNL/Meshes/GridDetails/GridTraverser_1D.hpp
index c1aab9660d50ee8fe6917ae08c6bb869e333c056..47dacb1a25345b10044c75e90e3f75d1fd08d9fd 100644
--- a/src/TNL/Meshes/GridDetails/GridTraverser_1D.hpp
+++ b/src/TNL/Meshes/GridDetails/GridTraverser_1D.hpp
@@ -52,7 +52,7 @@ processEntities(
       entity.getCoordinates() = begin;
       entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
-      entity.getCoordinates() = end;
+      entity.getCoordinates() = end - 1;
       entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
    }
@@ -66,7 +66,7 @@ processEntities(
             GridEntity entity( *gridPointer );
 #pragma omp for
             // TODO: g++ 5.5 crashes when coding this loop without auxiliary x as bellow
-            for( IndexType x = begin.x(); x <= end.x(); x++ )
+            for( IndexType x = begin.x(); x < end.x(); x++ )
             {
                entity.getCoordinates().x() = x;
                entity.refresh();
@@ -78,7 +78,7 @@ processEntities(
       {
          GridEntity entity( *gridPointer );
          for( entity.getCoordinates().x() = begin.x();
-              entity.getCoordinates().x() <= end.x();
+              entity.getCoordinates().x() < end.x();
               entity.getCoordinates().x() ++ )
          {
             entity.refresh();
@@ -88,7 +88,7 @@ processEntities(
 #else
       GridEntity entity( *gridPointer );
       for( entity.getCoordinates().x() = begin.x();
-           entity.getCoordinates().x() <= end.x();
+           entity.getCoordinates().x() < end.x();
            entity.getCoordinates().x() ++ )
       {
          entity.refresh();
@@ -119,10 +119,10 @@ GridTraverser1D(
    typedef Index IndexType;
    typedef Meshes::Grid< 1, Real, Devices::Cuda, Index > GridType;
    typename GridType::CoordinatesType coordinates;
- 
+
    coordinates.x() = begin.x() + ( gridIdx * Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
-   if( coordinates <= end )
-   {   
+   if( coordinates < end )
+   {
       GridEntity entity( *grid, coordinates );
       entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
@@ -145,7 +145,7 @@ GridBoundaryTraverser1D(
    typedef Index IndexType;
    typedef Meshes::Grid< 1, Real, Devices::Cuda, Index > GridType;
    typename GridType::CoordinatesType coordinates;
- 
+
    if( threadIdx.x == 0 )
    {
       coordinates.x() = begin.x();
@@ -155,7 +155,7 @@ GridBoundaryTraverser1D(
    }
    if( threadIdx.x == 1 )
    {
-      coordinates.x() = end.x();
+      coordinates.x() = end.x() - 1;
       GridEntity entity( *grid, coordinates );
       entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
@@ -204,7 +204,7 @@ processEntities(
          blockSize,
          blocksCount,
          gridsCount,
-         end.x() - begin.x() + 1 );
+         end.x() - begin.x() );
       dim3 gridIdx;
       for( gridIdx.x = 0; gridIdx.x < gridsCount.x; gridIdx.x++ )
       {
@@ -225,7 +225,7 @@ processEntities(
 
       /*dim3 cudaBlockSize( 256 );
       dim3 cudaBlocks;
-      cudaBlocks.x = Cuda::getNumberOfBlocks( end.x() - begin.x() + 1, cudaBlockSize.x );
+      cudaBlocks.x = Cuda::getNumberOfBlocks( end.x() - begin.x(), cudaBlockSize.x );
       const IndexType cudaXGrids = Cuda::getNumberOfGrids( cudaBlocks.x );
 
       for( IndexType gridXIdx = 0; gridXIdx < cudaXGrids; gridXIdx ++ )
diff --git a/src/TNL/Meshes/GridDetails/GridTraverser_2D.hpp b/src/TNL/Meshes/GridDetails/GridTraverser_2D.hpp
index a1a33cdfcaef51ddbca46ceac66fd9d0ac98df05..19d0c43eb575d23405770138f218e366de35d05e 100644
--- a/src/TNL/Meshes/GridDetails/GridTraverser_2D.hpp
+++ b/src/TNL/Meshes/GridDetails/GridTraverser_2D.hpp
@@ -49,28 +49,28 @@ processEntities(
    if( processOnlyBoundaryEntities )
    {
       GridEntity entity( *gridPointer, begin, gridEntityParameters... );
-      
+
       if( YOrthogonalBoundary )
          for( entity.getCoordinates().x() = begin.x();
-              entity.getCoordinates().x() <= end.x();
+              entity.getCoordinates().x() < end.x();
               entity.getCoordinates().x() ++ )
          {
             entity.getCoordinates().y() = begin.y();
             entity.refresh();
             EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
-            entity.getCoordinates().y() = end.y();
+            entity.getCoordinates().y() = end.y() - 1;
             entity.refresh();
             EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
          }
       if( XOrthogonalBoundary )
          for( entity.getCoordinates().y() = begin.y();
-              entity.getCoordinates().y() <= end.y();
+              entity.getCoordinates().y() < end.y();
               entity.getCoordinates().y() ++ )
          {
             entity.getCoordinates().x() = begin.x();
             entity.refresh();
             EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
-            entity.getCoordinates().x() = end.x();
+            entity.getCoordinates().x() = end.x() - 1;
             entity.refresh();
             EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
          }
@@ -85,8 +85,8 @@ processEntities(
             GridEntity entity( *gridPointer, begin, gridEntityParameters... );
 #pragma omp for
             // TODO: g++ 5.5 crashes when coding this loop without auxiliary x and y as bellow
-            for( IndexType y = begin.y(); y <= end.y(); y ++ )
-               for( IndexType x = begin.x(); x <= end.x(); x ++ )
+            for( IndexType y = begin.y(); y < end.y(); y ++ )
+               for( IndexType x = begin.x(); x < end.x(); x ++ )
                {
                   entity.getCoordinates().x() = x;
                   entity.getCoordinates().y() = y;
@@ -99,10 +99,10 @@ processEntities(
       {
          GridEntity entity( *gridPointer, begin, gridEntityParameters... );
          for( entity.getCoordinates().y() = begin.y();
-              entity.getCoordinates().y() <= end.y();
+              entity.getCoordinates().y() < end.y();
               entity.getCoordinates().y() ++ )
             for( entity.getCoordinates().x() = begin.x();
-                 entity.getCoordinates().x() <= end.x();
+                 entity.getCoordinates().x() < end.x();
                  entity.getCoordinates().x() ++ )
                {
                   entity.refresh();
@@ -112,10 +112,10 @@ processEntities(
 #else
       GridEntity entity( *gridPointer, begin, gridEntityParameters... );
          for( entity.getCoordinates().y() = begin.y();
-              entity.getCoordinates().y() <= end.y();
+              entity.getCoordinates().y() < end.y();
               entity.getCoordinates().y() ++ )
             for( entity.getCoordinates().x() = begin.x();
-                 entity.getCoordinates().x() <= end.x();
+                 entity.getCoordinates().x() < end.x();
                  entity.getCoordinates().x() ++ )
                {
                   entity.refresh();
@@ -128,7 +128,7 @@ processEntities(
 /****
  * 2D traverser, CUDA
  */
-#ifdef HAVE_CUDA 
+#ifdef HAVE_CUDA
 template< typename Real,
           typename Index,
           typename GridEntity,
@@ -136,7 +136,7 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser2D(
    const Meshes::Grid< 2, Real, Devices::Cuda, Index >* grid,
    UserData userData,
@@ -150,8 +150,8 @@ GridTraverser2D(
 
    coordinates.x() = begin.x() + Cuda::getGlobalThreadIdx_x( gridIdx );
    coordinates.y() = begin.y() + Cuda::getGlobalThreadIdx_y( gridIdx );
-   
-   if( coordinates <= end )
+
+   if( coordinates < end )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -173,7 +173,7 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser2DBoundaryAlongX(
    const Meshes::Grid< 2, Real, Devices::Cuda, Index >* grid,
    UserData userData,
@@ -188,8 +188,8 @@ GridTraverser2DBoundaryAlongX(
 
    coordinates.x() = beginX + Cuda::getGlobalThreadIdx_x( gridIdx );
    coordinates.y() = fixedY;
-   
-   if( coordinates.x() <= endX )
+
+   if( coordinates.x() < endX )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -208,7 +208,7 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser2DBoundaryAlongY(
    const Meshes::Grid< 2, Real, Devices::Cuda, Index >* grid,
    UserData userData,
@@ -223,8 +223,8 @@ GridTraverser2DBoundaryAlongY(
 
    coordinates.x() = fixedX;
    coordinates.y() = beginY + Cuda::getGlobalThreadIdx_x( gridIdx );
-   
-   if( coordinates.y() <= endY )
+
+   if( coordinates.y() < endY )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -232,7 +232,7 @@ GridTraverser2DBoundaryAlongY(
       ( *grid,
         userData,
         entity );
-   }   
+   }
 }
 
 
@@ -243,7 +243,7 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser2DBoundary(
    const Meshes::Grid< 2, Real, Devices::Cuda, Index >* grid,
    UserData userData,
@@ -257,17 +257,17 @@ GridTraverser2DBoundary(
 {
    using GridType = Meshes::Grid< 2, Real, Devices::Cuda, Index >;
    using CoordinatesType = typename GridType::CoordinatesType;
-   
+
    const Index faceIdx = blockIdx.x / blocksPerFace;
    const Index faceBlockIdx = blockIdx.x % blocksPerFace;
    const Index threadId = faceBlockIdx * blockDim. x + threadIdx.x;
    if( faceIdx < 2 )
    {
-      const Index entitiesAlongX = endX - beginX + 1;
+      const Index entitiesAlongX = endX - beginX;
       if( threadId < entitiesAlongX )
       {
-         GridEntity entity( *grid, 
-            CoordinatesType(  beginX + threadId, faceIdx == 0 ? beginY : endY ),
+         GridEntity entity( *grid,
+            CoordinatesType(  beginX + threadId, faceIdx == 0 ? beginY : endY - 1 ),
             gridEntityParameters... );
          //printf( "faceIdx %d Thread %d -> %d %d \n ", faceIdx, threadId, entity.getCoordinates().x(), entity.getCoordinates().y() );
          entity.refresh();
@@ -276,31 +276,31 @@ GridTraverser2DBoundary(
    }
    else
    {
-      const Index entitiesAlongY = endY - beginY - 1;   
+      const Index entitiesAlongY = endY - beginY;
       if( threadId < entitiesAlongY )
       {
-         GridEntity entity( *grid, 
-            CoordinatesType(  faceIdx == 2 ? beginX : endX, beginY + threadId + 1  ),
+         GridEntity entity( *grid,
+            CoordinatesType(  faceIdx == 2 ? beginX : endX - 1, beginY + threadId + 1  ),
             gridEntityParameters... );
          //printf( "faceIdx %d Thread %d -> %d %d \n ", faceIdx, threadId, entity.getCoordinates().x(), entity.getCoordinates().y() );
          entity.refresh();
          EntitiesProcessor::processEntity( *grid, userData, entity );
       }
    }
-   
-   
-   
+
+
+
    /*const Index aux = max( entitiesAlongX, entitiesAlongY );
    const Index& warpSize = Cuda::getWarpSize();
    const Index threadsPerAxis = warpSize * ( aux / warpSize + ( aux % warpSize != 0 ) );
-   
+
    Index threadId = Cuda::getGlobalThreadIdx_x( gridIdx );
-   GridEntity entity( *grid, 
+   GridEntity entity( *grid,
          CoordinatesType( 0, 0 ),
          gridEntityParameters... );
    CoordinatesType& coordinates = entity.getCoordinates();
    const Index axisIndex = threadId / threadsPerAxis;
-   //printf( "axisIndex %d, threadId %d thradsPerAxis %d \n", axisIndex, threadId, threadsPerAxis );   
+   //printf( "axisIndex %d, threadId %d thradsPerAxis %d \n", axisIndex, threadId, threadsPerAxis );
    threadId -= axisIndex * threadsPerAxis;
    switch( axisIndex )
    {
@@ -314,7 +314,7 @@ GridTraverser2DBoundary(
          }
          break;
       case 2:
-         coordinates = CoordinatesType( beginX + threadId, endY );
+         coordinates = CoordinatesType( beginX + threadId, endY - 1 );
          if( threadId < entitiesAlongX )
          {
             //printf( "X2: Thread %d -> %d %d \n ", threadId, coordinates.x(), coordinates.y() );
@@ -332,7 +332,7 @@ GridTraverser2DBoundary(
          }
          break;
       case 4:
-         coordinates = CoordinatesType( endX, beginY + threadId + 1 );
+         coordinates = CoordinatesType( endX - 1, beginY + threadId + 1 );
          if( threadId < entitiesAlongY )
          {
             //printf( "Y2: Thread %d -> %d %d \n ", threadId, coordinates.x(), coordinates.y() );
@@ -341,13 +341,13 @@ GridTraverser2DBoundary(
          }
          break;
    }*/
-   
+
    /*if( threadId < entitiesAlongX )
    {
-      GridEntity entity( *grid, 
+      GridEntity entity( *grid,
          CoordinatesType( beginX + threadId, beginY ),
          gridEntityParameters... );
-      //printf( "X1: Thread %d -> %d %d x %d %d \n ", threadId, 
+      //printf( "X1: Thread %d -> %d %d x %d %d \n ", threadId,
       //   entity.getCoordinates().x(), entity.getCoordinates().y(),
       //   grid->getDimensions().x(), grid->getDimensions().y() );
       entity.refresh();
@@ -355,8 +355,8 @@ GridTraverser2DBoundary(
    }
    else if( ( threadId -= entitiesAlongX ) < entitiesAlongX && threadId >= 0 )
    {
-      GridEntity entity( *grid, 
-         CoordinatesType( beginX + threadId, endY ),
+      GridEntity entity( *grid,
+         CoordinatesType( beginX + threadId, endY - 1 ),
          gridEntityParameters... );
       entity.refresh();
       //printf( "X2: Thread %d -> %d %d \n ", threadId, entity.getCoordinates().x(), entity.getCoordinates().y() );
@@ -369,12 +369,12 @@ GridTraverser2DBoundary(
       gridEntityParameters... );
       entity.refresh();
       //printf( "Y1: Thread %d -> %d %d \n ", threadId, entity.getCoordinates().x(), entity.getCoordinates().y() );
-      EntitiesProcessor::processEntity( *grid, userData, entity );      
+      EntitiesProcessor::processEntity( *grid, userData, entity );
    }
    else if( ( ( threadId -= entitiesAlongY - 1 ) < entitiesAlongY - 1  ) && threadId >= 0 )
    {
       GridEntity entity( *grid,
-         CoordinatesType( endX, beginY + threadId + 1 ),
+         CoordinatesType( endX - 1, beginY + threadId + 1 ),
       gridEntityParameters... );
       entity.refresh();
       //printf( "Y2: Thread %d -> %d %d \n ", threadId, entity.getCoordinates().x(), entity.getCoordinates().y() );
@@ -407,16 +407,16 @@ processEntities(
    const GridEntityParameters&... gridEntityParameters )
 {
 #ifdef HAVE_CUDA
-   if( processOnlyBoundaryEntities && 
+   if( processOnlyBoundaryEntities &&
        ( GridEntity::getEntityDimension() == 2 || GridEntity::getEntityDimension() == 0 ) )
    {
 #ifdef GRID_TRAVERSER_USE_STREAMS
       dim3 cudaBlockSize( 256 );
       dim3 cudaBlocksCountAlongX, cudaGridsCountAlongX,
            cudaBlocksCountAlongY, cudaGridsCountAlongY;
-      Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongX, cudaGridsCountAlongX, end.x() - begin.x() + 1 );
-      Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongY, cudaGridsCountAlongY, end.y() - begin.y() - 1 );
-            
+      Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongX, cudaGridsCountAlongX, end.x() - begin.x() );
+      Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongY, cudaGridsCountAlongY, end.y() - begin.y() - 2 );
+
       auto& pool = Cuda::StreamPool::getInstance();
       Pointers::synchronizeSmartPointersOnDevice< Devices::Cuda >();
 
@@ -475,16 +475,16 @@ processEntities(
       cudaStreamSynchronize( s3 );
       cudaStreamSynchronize( s4 );
 #else // not defined GRID_TRAVERSER_USE_STREAMS
-      dim3 cudaBlockSize( 256 );      
+      dim3 cudaBlockSize( 256 );
       dim3 cudaBlocksCount, cudaGridsCount;
-      const IndexType entitiesAlongX = end.x() - begin.x() + 1;
-      const IndexType entitiesAlongY = end.x() - begin.x() - 1;
+      const IndexType entitiesAlongX = end.x() - begin.x();
+      const IndexType entitiesAlongY = end.x() - begin.x() - 2;
       const IndexType maxFaceSize = max( entitiesAlongX, entitiesAlongY );
       const IndexType blocksPerFace = maxFaceSize / cudaBlockSize.x + ( maxFaceSize % cudaBlockSize.x != 0 );
       IndexType cudaThreadsCount = 4 * cudaBlockSize.x * blocksPerFace;
       Cuda::setupThreads( cudaBlockSize, cudaBlocksCount, cudaGridsCount, cudaThreadsCount );
-      //std::cerr << "blocksPerFace = " << blocksPerFace << "Threads count = " << cudaThreadsCount 
-      //          << "cudaBlockCount = " << cudaBlocksCount.x << std::endl;      
+      //std::cerr << "blocksPerFace = " << blocksPerFace << "Threads count = " << cudaThreadsCount
+      //          << "cudaBlockCount = " << cudaBlocksCount.x << std::endl;
       dim3 gridIdx, cudaGridSize;
       Pointers::synchronizeSmartPointersOnDevice< Devices::Cuda >();
       for( gridIdx.x = 0; gridIdx.x < cudaGridsCount.x; gridIdx.x++ )
@@ -504,17 +504,17 @@ processEntities(
                  gridEntityParameters... );
       }
 #endif //GRID_TRAVERSER_USE_STREAMS
-      //getchar();      
-      TNL_CHECK_CUDA_DEVICE;      
+      //getchar();
+      TNL_CHECK_CUDA_DEVICE;
    }
    else
    {
       dim3 cudaBlockSize( 16, 16 );
       dim3 cudaBlocksCount, cudaGridsCount;
       Cuda::setupThreads( cudaBlockSize, cudaBlocksCount, cudaGridsCount,
-                          end.x() - begin.x() + 1,
-                          end.y() - begin.y() + 1 );
-      
+                          end.x() - begin.x(),
+                          end.y() - begin.y() );
+
       auto& pool = Cuda::StreamPool::getInstance();
       const cudaStream_t& s = pool.getStream( stream );
 
diff --git a/src/TNL/Meshes/GridDetails/GridTraverser_3D.hpp b/src/TNL/Meshes/GridDetails/GridTraverser_3D.hpp
index 48e8c352348b78138dc4aa1280069562ed1fc9c5..7bfe80d7b1c4c460299c6860d6333e31da1f1172 100644
--- a/src/TNL/Meshes/GridDetails/GridTraverser_3D.hpp
+++ b/src/TNL/Meshes/GridDetails/GridTraverser_3D.hpp
@@ -49,49 +49,49 @@ processEntities(
    if( processOnlyBoundaryEntities )
    {
       GridEntity entity( *gridPointer, begin, gridEntityParameters... );
-      
+
       if( ZOrthogonalBoundary )
          for( entity.getCoordinates().y() = begin.y();
-              entity.getCoordinates().y() <= end.y();
+              entity.getCoordinates().y() < end.y();
               entity.getCoordinates().y() ++ )
             for( entity.getCoordinates().x() = begin.x();
-                 entity.getCoordinates().x() <= end.x();
+                 entity.getCoordinates().x() < end.x();
                  entity.getCoordinates().x() ++ )
             {
                entity.getCoordinates().z() = begin.z();
                entity.refresh();
                EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
-               entity.getCoordinates().z() = end.z();
+               entity.getCoordinates().z() = end.z() - 1;
                entity.refresh();
                EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
             }
       if( YOrthogonalBoundary )
          for( entity.getCoordinates().z() = begin.z();
-                 entity.getCoordinates().z() <= end.z();
+                 entity.getCoordinates().z() < end.z();
                  entity.getCoordinates().z() ++ )
             for( entity.getCoordinates().x() = begin.x();
-                 entity.getCoordinates().x() <= end.x();
+                 entity.getCoordinates().x() < end.x();
                  entity.getCoordinates().x() ++ )
             {
                entity.getCoordinates().y() = begin.y();
                entity.refresh();
                EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
-               entity.getCoordinates().y() = end.y();
+               entity.getCoordinates().y() = end.y() - 1;
                entity.refresh();
                EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
             }
       if( XOrthogonalBoundary )
          for( entity.getCoordinates().z() = begin.z();
-              entity.getCoordinates().z() <= end.z();
+              entity.getCoordinates().z() < end.z();
               entity.getCoordinates().z() ++ )
             for( entity.getCoordinates().y() = begin.y();
-                 entity.getCoordinates().y() <= end.y();
+                 entity.getCoordinates().y() < end.y();
                  entity.getCoordinates().y() ++ )
             {
                entity.getCoordinates().x() = begin.x();
                entity.refresh();
                EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
-               entity.getCoordinates().x() = end.x();
+               entity.getCoordinates().x() = end.x() - 1;
                entity.refresh();
                EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
             }
@@ -106,9 +106,9 @@ processEntities(
             GridEntity entity( *gridPointer, begin, gridEntityParameters... );
 #pragma omp for
             // TODO: g++ 5.5 crashes when coding this loop without auxiliary x and y as bellow
-            for( IndexType z = begin.z(); z <= end.z(); z ++ )
-               for( IndexType y = begin.y(); y <= end.y(); y ++ )
-                  for( IndexType x = begin.x(); x <= end.x(); x ++ )
+            for( IndexType z = begin.z(); z < end.z(); z ++ )
+               for( IndexType y = begin.y(); y < end.y(); y ++ )
+                  for( IndexType x = begin.x(); x < end.x(); x ++ )
                   {
                      entity.getCoordinates().x() = x;
                      entity.getCoordinates().y() = y;
@@ -122,13 +122,13 @@ processEntities(
       {
          GridEntity entity( *gridPointer, begin, gridEntityParameters... );
          for( entity.getCoordinates().z() = begin.z();
-              entity.getCoordinates().z() <= end.z();
+              entity.getCoordinates().z() < end.z();
               entity.getCoordinates().z() ++ )
             for( entity.getCoordinates().y() = begin.y();
-                 entity.getCoordinates().y() <= end.y();
+                 entity.getCoordinates().y() < end.y();
                  entity.getCoordinates().y() ++ )
                for( entity.getCoordinates().x() = begin.x();
-                    entity.getCoordinates().x() <= end.x();
+                    entity.getCoordinates().x() < end.x();
                     entity.getCoordinates().x() ++ )
                   {
                      entity.refresh();
@@ -138,13 +138,13 @@ processEntities(
 #else
       GridEntity entity( *gridPointer, begin, gridEntityParameters... );
       for( entity.getCoordinates().z() = begin.z();
-           entity.getCoordinates().z() <= end.z();
+           entity.getCoordinates().z() < end.z();
            entity.getCoordinates().z() ++ )
          for( entity.getCoordinates().y() = begin.y();
-              entity.getCoordinates().y() <= end.y();
+              entity.getCoordinates().y() < end.y();
               entity.getCoordinates().y() ++ )
             for( entity.getCoordinates().x() = begin.x();
-                 entity.getCoordinates().x() <= end.x();
+                 entity.getCoordinates().x() < end.x();
                  entity.getCoordinates().x() ++ )
                {
                   entity.refresh();
@@ -181,7 +181,7 @@ GridTraverser3D(
    coordinates.y() = begin.y() + Cuda::getGlobalThreadIdx_y( gridIdx );
    coordinates.z() = begin.z() + Cuda::getGlobalThreadIdx_z( gridIdx );
 
-   if( coordinates <= end )
+   if( coordinates < end )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -202,14 +202,14 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser3DBoundaryAlongXY(
    const Meshes::Grid< 3, Real, Devices::Cuda, Index >* grid,
    UserData userData,
    const Index beginX,
    const Index endX,
    const Index beginY,
-   const Index endY,   
+   const Index endY,
    const Index fixedZ,
    const dim3 gridIdx,
    const GridEntityParameters... gridEntityParameters )
@@ -219,9 +219,9 @@ GridTraverser3DBoundaryAlongXY(
 
    coordinates.x() = beginX + Cuda::getGlobalThreadIdx_x( gridIdx );
    coordinates.y() = beginY + Cuda::getGlobalThreadIdx_y( gridIdx );
-   coordinates.z() = fixedZ;  
-   
-   if( coordinates.x() <= endX && coordinates.y() <= endY )
+   coordinates.z() = fixedZ;
+
+   if( coordinates.x() < endX && coordinates.y() < endY )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -239,14 +239,14 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser3DBoundaryAlongXZ(
    const Meshes::Grid< 3, Real, Devices::Cuda, Index >* grid,
    UserData userData,
    const Index beginX,
    const Index endX,
    const Index beginZ,
-   const Index endZ,   
+   const Index endZ,
    const Index fixedY,
    const dim3 gridIdx,
    const GridEntityParameters... gridEntityParameters )
@@ -257,8 +257,8 @@ GridTraverser3DBoundaryAlongXZ(
    coordinates.x() = beginX + Cuda::getGlobalThreadIdx_x( gridIdx );
    coordinates.y() = fixedY;
    coordinates.z() = beginZ + Cuda::getGlobalThreadIdx_y( gridIdx );
-   
-   if( coordinates.x() <= endX && coordinates.z() <= endZ )
+
+   if( coordinates.x() < endX && coordinates.z() < endZ )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -266,7 +266,7 @@ GridTraverser3DBoundaryAlongXZ(
       ( *grid,
         userData,
         entity );
-   }   
+   }
 }
 
 template< typename Real,
@@ -276,14 +276,14 @@ template< typename Real,
           typename EntitiesProcessor,
           bool processOnlyBoundaryEntities,
           typename... GridEntityParameters >
-__global__ void 
+__global__ void
 GridTraverser3DBoundaryAlongYZ(
    const Meshes::Grid< 3, Real, Devices::Cuda, Index >* grid,
    UserData userData,
    const Index beginY,
    const Index endY,
    const Index beginZ,
-   const Index endZ,   
+   const Index endZ,
    const Index fixedX,
    const dim3 gridIdx,
    const GridEntityParameters... gridEntityParameters )
@@ -294,8 +294,8 @@ GridTraverser3DBoundaryAlongYZ(
    coordinates.x() = fixedX;
    coordinates.y() = beginY + Cuda::getGlobalThreadIdx_x( gridIdx );
    coordinates.z() = beginZ + Cuda::getGlobalThreadIdx_y( gridIdx );
-   
-   if( coordinates.y() <= endY && coordinates.z() <= endZ )
+
+   if( coordinates.y() < endY && coordinates.z() < endZ )
    {
       GridEntity entity( *grid, coordinates, gridEntityParameters... );
       entity.refresh();
@@ -303,7 +303,7 @@ GridTraverser3DBoundaryAlongYZ(
       ( *grid,
         userData,
         entity );
-   }   
+   }
 }
 #endif
 
@@ -329,18 +329,18 @@ processEntities(
    const int& stream,
    const GridEntityParameters&... gridEntityParameters )
 {
-#ifdef HAVE_CUDA   
-   if( processOnlyBoundaryEntities && 
+#ifdef HAVE_CUDA
+   if( processOnlyBoundaryEntities &&
        ( GridEntity::getEntityDimension() == 3 || GridEntity::getEntityDimension() == 0 ) )
    {
       dim3 cudaBlockSize( 16, 16 );
-      const IndexType entitiesAlongX = end.x() - begin.x() + 1;
-      const IndexType entitiesAlongY = end.y() - begin.y() + 1;
-      const IndexType entitiesAlongZ = end.z() - begin.z() + 1;
-      
+      const IndexType entitiesAlongX = end.x() - begin.x();
+      const IndexType entitiesAlongY = end.y() - begin.y();
+      const IndexType entitiesAlongZ = end.z() - begin.z();
+
       dim3 cudaBlocksCountAlongXY, cudaBlocksCountAlongXZ, cudaBlocksCountAlongYZ,
            cudaGridsCountAlongXY, cudaGridsCountAlongXZ, cudaGridsCountAlongYZ;
-      
+
       Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongXY, cudaGridsCountAlongXY, entitiesAlongX, entitiesAlongY );
       Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongXZ, cudaGridsCountAlongXZ, entitiesAlongX, entitiesAlongZ - 2 );
       Cuda::setupThreads( cudaBlockSize, cudaBlocksCountAlongYZ, cudaGridsCountAlongYZ, entitiesAlongY - 2, entitiesAlongZ - 2 );
@@ -354,7 +354,7 @@ processEntities(
       const cudaStream_t& s4 = pool.getStream( stream + 3 );
       const cudaStream_t& s5 = pool.getStream( stream + 4 );
       const cudaStream_t& s6 = pool.getStream( stream + 5 );
-      
+
       dim3 gridIdx, gridSize;
       for( gridIdx.y = 0; gridIdx.y < cudaGridsCountAlongXY.y; gridIdx.y++ )
          for( gridIdx.x = 0; gridIdx.x < cudaGridsCountAlongXY.x; gridIdx.x++ )
@@ -449,11 +449,11 @@ processEntities(
    {
       dim3 cudaBlockSize( 8, 8, 8 );
       dim3 cudaBlocksCount, cudaGridsCount;
-      
+
       Cuda::setupThreads( cudaBlockSize, cudaBlocksCount, cudaGridsCount,
-                          end.x() - begin.x() + 1,
-                          end.y() - begin.y() + 1,
-                          end.z() - begin.z() + 1 );
+                          end.x() - begin.x(),
+                          end.y() - begin.y(),
+                          end.z() - begin.z() );
 
       auto& pool = Cuda::StreamPool::getInstance();
       const cudaStream_t& s = pool.getStream( stream );
diff --git a/src/TNL/Meshes/GridDetails/Traverser_Grid1D.h b/src/TNL/Meshes/GridDetails/Traverser_Grid1D.h
index d6b49f9bad1d1622f5555a5ddcdeb363fe893eb1..19ce29b5c5d5b4e5033932dabfb686d9c1a75aeb 100644
--- a/src/TNL/Meshes/GridDetails/Traverser_Grid1D.h
+++ b/src/TNL/Meshes/GridDetails/Traverser_Grid1D.h
@@ -26,8 +26,6 @@ class Traverser< Meshes::Grid< 1, Real, Device, Index >, GridEntity, 1 >
       using GridType = Meshes::Grid< 1, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
@@ -56,8 +54,6 @@ class Traverser< Meshes::Grid< 1, Real, Device, Index >, GridEntity, 0 >
       using GridType = Meshes::Grid< 1, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
diff --git a/src/TNL/Meshes/GridDetails/Traverser_Grid1D_impl.h b/src/TNL/Meshes/GridDetails/Traverser_Grid1D_impl.h
index d1f21cde2f2434f524500f29f6260d0a5e9d369e..c566cc7c05f3b3d104c7895c92dce5c84d953fc2 100644
--- a/src/TNL/Meshes/GridDetails/Traverser_Grid1D_impl.h
+++ b/src/TNL/Meshes/GridDetails/Traverser_Grid1D_impl.h
@@ -11,8 +11,6 @@
 #pragma once
 
 #include <TNL/Meshes/GridDetails/GridTraverser.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
-
 
 namespace TNL {
 namespace Meshes {
@@ -35,41 +33,37 @@ processBoundaryEntities( const GridPointer& gridPointer,
     * Boundary cells
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimensions." );
-   
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || ! distributedGrid->isDistributed() )
+
+   if( gridPointer->getLocalBegin() < gridPointer->getInteriorBegin() && gridPointer->getInteriorEnd() < gridPointer->getLocalEnd() )
+   {
+      // 2 boundaries (left and right)
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true >(
+         gridPointer,
+         gridPointer->getInteriorBegin() - 1,
+         gridPointer->getInteriorEnd() + 1,
+         userData,
+         asynchronousMode );
+   }
+   else if( gridPointer->getLocalBegin() < gridPointer->getInteriorBegin() )
    {
-        GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true >(
-           gridPointer,
-           CoordinatesType( 0 ),
-           gridPointer->getDimensions() - CoordinatesType( 1 ),
-           userData,
-           asynchronousMode );
+      // 1 boundary (left)
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         gridPointer->getInteriorBegin() - 1,
+         gridPointer->getInteriorBegin(),
+         userData,
+         asynchronousMode );
    }
-   else //Distributed
+   else if( gridPointer->getInteriorEnd() < gridPointer->getLocalEnd() )
    {
-       const int* neighbors=distributedGrid->getNeighbors(); 
-       if( neighbors[ Meshes::DistributedMeshes::ZzYzXm ] == -1 )
-       {
-          GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-              gridPointer,
-              CoordinatesType( 0 ) + distributedGrid->getLowerOverlap(),
-              CoordinatesType( 0 ) + distributedGrid->getLowerOverlap(),
-              userData,
-              asynchronousMode );
-       }
-       
-       if( neighbors[ Meshes::DistributedMeshes::ZzYzXp ] == -1 )
-       {
-          GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-              gridPointer,
-              gridPointer->getDimensions() - CoordinatesType( 1 ) - distributedGrid->getUpperOverlap(),
-              gridPointer->getDimensions() - CoordinatesType( 1 ) - distributedGrid->getUpperOverlap(),
-              userData,
-              asynchronousMode );
-       }
+      // 1 boundary (right)
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         gridPointer->getInteriorEnd(),
+         gridPointer->getInteriorEnd() + 1,
+         userData,
+         asynchronousMode );
    }
-   
 }
 
 template< typename Real,
@@ -88,43 +82,12 @@ processInteriorEntities( const GridPointer& gridPointer,
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimension." );
 
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
-   {
-        GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-           gridPointer,
-           CoordinatesType( 1 ),
-           gridPointer->getDimensions() - CoordinatesType( 2 ),
-           userData,
-           asynchronousMode );
-   }
-   else //Distributed
-   {
-      CoordinatesType begin( distributedGrid->getLowerOverlap() );
-      CoordinatesType end( gridPointer->getDimensions() - distributedGrid->getUpperOverlap() - CoordinatesType( 1 ) );
-      
-      const int* neighbors = distributedGrid->getNeighbors(); 
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXm ] == -1 )
-         begin += CoordinatesType( 1 );
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXp ] == -1 )
-         end -= CoordinatesType( 1 );
-      
-      /*
-         TNL_MPI_PRINT( " lowerOverlap = " << distributedGrid->getLowerOverlap() << 
-               " upperOverlap = " << distributedGrid->getUpperOverlap() <<
-               " gridPointer->getDimensions() = " << gridPointer->getDimensions() <<
-               "begin = " << begin << " end = " << end);
-       */
-
-       GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-          gridPointer,
-          begin,
-          end,
-          userData,
-          asynchronousMode );
-   }
-   
+   GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+      gridPointer,
+      gridPointer->getInteriorBegin(),
+      gridPointer->getInteriorEnd(),
+      userData,
+      asynchronousMode );
 }
 
 template< typename Real,
@@ -143,30 +106,13 @@ processAllEntities(
     * All cells
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimensions." );
-   
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
-   {
-        GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-           gridPointer,
-           CoordinatesType( 0 ),
-           gridPointer->getDimensions() - CoordinatesType( 1 ),
-           userData,
-           asynchronousMode );
-   }
-   else //Distributed
-   {
-       CoordinatesType begin( distributedGrid->getLowerOverlap() );
-       CoordinatesType end( gridPointer->getDimensions() - distributedGrid->getUpperOverlap() - 1 );
-       
-       GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-          gridPointer,
-          begin,
-          end,
-          userData,
-          asynchronousMode );
-   }
 
+   GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+      gridPointer,
+      gridPointer->getLocalBegin(),
+      gridPointer->getLocalEnd(),
+      userData,
+      asynchronousMode );
 }
 
 /****
@@ -191,7 +137,7 @@ processBoundaryEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true >(
       gridPointer,
       CoordinatesType( 0 ),
-      gridPointer->getDimensions(),
+      gridPointer->getDimensions() + 1,
       userData,
       asynchronousMode );
 }
@@ -215,7 +161,7 @@ processInteriorEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
       gridPointer,
       CoordinatesType( 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode );
 }
@@ -240,7 +186,7 @@ processAllEntities(
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
       gridPointer,
       CoordinatesType( 0 ),
-      gridPointer->getDimensions(),
+      gridPointer->getDimensions() + 1,
       userData,
       asynchronousMode );
 }
diff --git a/src/TNL/Meshes/GridDetails/Traverser_Grid2D.h b/src/TNL/Meshes/GridDetails/Traverser_Grid2D.h
index 3e0322b61d4c6f44966878e954fc4c08e41e53a0..e6688138aaac22c3f0b5b56e33571381d4d20784 100644
--- a/src/TNL/Meshes/GridDetails/Traverser_Grid2D.h
+++ b/src/TNL/Meshes/GridDetails/Traverser_Grid2D.h
@@ -14,7 +14,7 @@
 #include <TNL/Pointers/SharedPointer.h>
 
 namespace TNL {
-namespace Meshes {   
+namespace Meshes {
 
 template< typename Real,
           typename Device,
@@ -26,8 +26,6 @@ class Traverser< Meshes::Grid< 2, Real, Device, Index >, GridEntity, 2 >
       using GridType = Meshes::Grid< 2, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
@@ -54,8 +52,6 @@ class Traverser< Meshes::Grid< 2, Real, Device, Index >, GridEntity, 1 >
       using GridType = Meshes::Grid< 2, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
@@ -83,8 +79,6 @@ class Traverser< Meshes::Grid< 2, Real, Device, Index >, GridEntity, 0 >
       using GridType = Meshes::Grid< 2, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
diff --git a/src/TNL/Meshes/GridDetails/Traverser_Grid2D_impl.h b/src/TNL/Meshes/GridDetails/Traverser_Grid2D_impl.h
index 858dd376385b1a2eb3ff7c06dfb19e27f5538551..d4bcccaf28a7ef73e1daeabd25a4b4b893f3256c 100644
--- a/src/TNL/Meshes/GridDetails/Traverser_Grid2D_impl.h
+++ b/src/TNL/Meshes/GridDetails/Traverser_Grid2D_impl.h
@@ -34,66 +34,52 @@ processBoundaryEntities( const GridPointer& gridPointer,
     */
    static_assert( GridEntity::getEntityDimension() == 2, "The entity has wrong dimension." );
 
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
+   if( gridPointer->getLocalBegin() < gridPointer->getInteriorBegin() && gridPointer->getInteriorEnd() < gridPointer->getLocalEnd() )
    {
-    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 1 >(
-       gridPointer,
-       CoordinatesType( 0, 0 ),
-       gridPointer->getDimensions() - CoordinatesType( 1, 1 ),
-       userData,
-       asynchronousMode,
-       0 );
+      // 4 boundaries (left, right, down, up)
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 1 >(
+         gridPointer,
+         gridPointer->getInteriorBegin() - 1,
+         gridPointer->getInteriorEnd() + 1,
+         userData,
+         asynchronousMode,
+         0 );
    }
-   else //Distributed
+   else
    {
-      const CoordinatesType begin = distributedGrid->getLowerOverlap();
-      const CoordinatesType end = gridPointer->getDimensions() - distributedGrid->getUpperOverlap() -
-                                  CoordinatesType( 1, 1 );
-      const int* neighbors=distributedGrid->getNeighbors(); 
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXm ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            begin,
-            CoordinatesType( begin.x(), end.y() ),
-            userData,
-            asynchronousMode,
-            0 );
-      }
-       
-      if(neighbors[Meshes::DistributedMeshes::ZzYzXp]==-1)
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            CoordinatesType( end.x(), begin.y() ),
-            end,
-            userData,
-            asynchronousMode,
-            0 );
-      }
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYmXz ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            begin,
-            CoordinatesType( end.x(), begin.y() ),
-            userData,
-            asynchronousMode,
-            0 );
-      }
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYpXz ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            CoordinatesType( begin.x(), end.y() ),
-            end,
-            userData,
-            asynchronousMode,
-            0 );
-      }
+      const CoordinatesType begin = gridPointer->getLocalBegin();
+      const CoordinatesType end = gridPointer->getLocalEnd();
+      const CoordinatesType skipBegin = gridPointer->getInteriorBegin();
+      const CoordinatesType skipEnd = gridPointer->getInteriorEnd();
+
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         begin,
+         CoordinatesType( end.x(), skipBegin.y() ),
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( begin.x(), skipEnd.y() ),
+         end,
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( begin.x(), skipBegin.y() ),
+         CoordinatesType( skipBegin.x(), skipEnd.y() ),
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( skipEnd.x(), skipBegin.y() ),
+         CoordinatesType( end.x(), skipEnd.y() ),
+         userData,
+         asynchronousMode,
+         0 );
    }
 }
 
@@ -112,44 +98,14 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior cells
     */
    static_assert( GridEntity::getEntityDimension() == 2, "The entity has wrong dimensions." );
-   
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
-   {
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         CoordinatesType( 1, 1 ),
-         gridPointer->getDimensions() - CoordinatesType( 2, 2 ),
-         userData,
-         asynchronousMode,
-         0 );
-   }
-   else // distributed
-   {
-      const int* neighbors = distributedGrid->getNeighbors(); 
-      CoordinatesType begin( distributedGrid->getLowerOverlap());
-      CoordinatesType end( gridPointer->getDimensions() - distributedGrid->getUpperOverlap()- CoordinatesType(1,1) );
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXm ] == -1 )
-         begin.x() += 1 ;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXp ] == -1 )
-         end.x() -= 1;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYmXz ] == -1 )
-         begin.y() += 1 ;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYpXz ] == -1 )
-         end.y() -= 1;
-      
-       
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         begin,
-         end,
-         userData,
-         asynchronousMode,
-         0);
-   }
+
+   GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+      gridPointer,
+      gridPointer->getInteriorBegin(),
+      gridPointer->getInteriorEnd(),
+      userData,
+      asynchronousMode,
+      0 );
 }
 
 template< typename Real,
@@ -167,32 +123,14 @@ processAllEntities( const GridPointer& gridPointer,
     * All cells
     */
    static_assert( GridEntity::getEntityDimension() == 2, "The entity has wrong dimension." );
- 
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
-   {
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         CoordinatesType( 0, 0 ),
-         gridPointer->getDimensions() - CoordinatesType( 1, 1 ),
-         userData,
-         asynchronousMode,
-         0 );
-   }
-   else
-   {
-       //const int* neighbors=distributedGrid->getNeighbors(); 
-       CoordinatesType begin( distributedGrid->getLowerOverlap() );
-       CoordinatesType end( gridPointer->getDimensions() - distributedGrid->getUpperOverlap()- CoordinatesType(1,1) );
-       
-       GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-          gridPointer,
-          begin,
-          end,
-          userData,
-          asynchronousMode,
-          0);   
-   }
+
+   GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+      gridPointer,
+      gridPointer->getLocalBegin(),
+      gridPointer->getLocalEnd(),
+      userData,
+      asynchronousMode,
+      0 );
 }
 
 /****
@@ -213,11 +151,11 @@ processBoundaryEntities( const GridPointer& gridPointer,
     * Boundary faces
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0 ),
       userData,
       asynchronousMode,
       1,
@@ -227,7 +165,7 @@ processBoundaryEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1 ),
       userData,
       asynchronousMode,
       0,
@@ -250,11 +188,11 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior faces
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 1, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       1,
@@ -264,7 +202,7 @@ processInteriorEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       0,
@@ -287,11 +225,11 @@ processAllEntities( const GridPointer& gridPointer,
     * All faces
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0 ),
       userData,
       asynchronousMode,
       1,
@@ -301,7 +239,7 @@ processAllEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1 ),
       userData,
       asynchronousMode,
       0,
@@ -324,11 +262,11 @@ processBoundaryEntities( const GridPointer& gridPointer,
     * Boundary vertices
     */
    static_assert( GridEntity::getEntityDimension() == 0, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 1 >(
       gridPointer,
       CoordinatesType( 0, 0 ),
-      gridPointer->getDimensions(),
+      gridPointer->getDimensions() + CoordinatesType( 1, 1 ),
       userData,
       asynchronousMode,
       0 );
@@ -349,16 +287,16 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior vertices
     */
    static_assert( GridEntity::getEntityDimension() == 0, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
       gridPointer,
       CoordinatesType( 1, 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       0 );
 }
- 
+
 template< typename Real,
           typename Device,
           typename Index,
@@ -374,11 +312,11 @@ processAllEntities( const GridPointer& gridPointer,
     * All vertices
     */
    static_assert( GridEntity::getEntityDimension() == 0, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
       gridPointer,
       CoordinatesType( 0, 0 ),
-      gridPointer->getDimensions(),
+      gridPointer->getDimensions() + CoordinatesType( 1, 1 ),
       userData,
       asynchronousMode,
       0 );
diff --git a/src/TNL/Meshes/GridDetails/Traverser_Grid3D.h b/src/TNL/Meshes/GridDetails/Traverser_Grid3D.h
index 71b2cd1d6b2e4940cab21829555a259300734c6f..db5f12a5336a17e88ec6d4964830a2b5b23d4151 100644
--- a/src/TNL/Meshes/GridDetails/Traverser_Grid3D.h
+++ b/src/TNL/Meshes/GridDetails/Traverser_Grid3D.h
@@ -26,8 +26,6 @@ class Traverser< Meshes::Grid< 3, Real, Device, Index >, GridEntity, 3 >
       using GridType = Meshes::Grid< 3, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
@@ -54,8 +52,6 @@ class Traverser< Meshes::Grid< 3, Real, Device, Index >, GridEntity, 2 >
       using GridType = Meshes::Grid< 3, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
@@ -82,8 +78,6 @@ class Traverser< Meshes::Grid< 3, Real, Device, Index >, GridEntity, 1 >
       using GridType = Meshes::Grid< 3, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
@@ -111,8 +105,6 @@ class Traverser< Meshes::Grid< 3, Real, Device, Index >, GridEntity, 0 >
       using GridType = Meshes::Grid< 3, Real, Device, Index >;
       using GridPointer = Pointers::SharedPointer< GridType >;
       using CoordinatesType = typename GridType::CoordinatesType;
-      using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh< GridType >;
-      using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
 
       template< typename EntitiesProcessor,
                 typename UserData >
diff --git a/src/TNL/Meshes/GridDetails/Traverser_Grid3D_impl.h b/src/TNL/Meshes/GridDetails/Traverser_Grid3D_impl.h
index a43c4bfb242dd97e855773399116452eee7e54fe..ad85b6ef723267097d824afa37027e14e21b11b8 100644
--- a/src/TNL/Meshes/GridDetails/Traverser_Grid3D_impl.h
+++ b/src/TNL/Meshes/GridDetails/Traverser_Grid3D_impl.h
@@ -36,88 +36,66 @@ processBoundaryEntities( const GridPointer& gridPointer,
     */
    static_assert( GridEntity::getEntityDimension() == 3, "The entity has wrong dimension." );
 
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
+   if( gridPointer->getLocalBegin() < gridPointer->getInteriorBegin() && gridPointer->getInteriorEnd() < gridPointer->getLocalEnd() )
    {
+      // 6 boundaries (left, right, down, up, front, back)
       GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 1, 1 >(
-          gridPointer,
-          CoordinatesType( 0, 0, 0 ),
-          gridPointer->getDimensions() - CoordinatesType( 1, 1, 1 ),
-          userData,
+         gridPointer,
+         gridPointer->getInteriorBegin() - 1,
+         gridPointer->getInteriorEnd() + 1,
+         userData,
          asynchronousMode,
-          0 );
+         0 );
    }
-   else // distributed
+   else
    {
-      const CoordinatesType begin = distributedGrid->getLowerOverlap();
-      const CoordinatesType end = gridPointer->getDimensions() - distributedGrid->getUpperOverlap() -
-                                  CoordinatesType( 1, 1, 1 );
-      const int* neighbors = distributedGrid->getNeighbors();
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXm ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            begin,
-            CoordinatesType( begin.x(), end.y(), end.z() ),
-            userData,
-            asynchronousMode,
-            0 );
-      }
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXp ] == -1 )
-      {
-          GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            CoordinatesType( end.x() , begin.y(), begin.z() ),
-            end,
-            userData,
-            asynchronousMode,
-            0 );
-       }
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYmXz ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            begin,
-            CoordinatesType( end.x(), begin.y(), end.z() ),
-            userData,
-            asynchronousMode,
-            0 );
-      }
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYpXz ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            CoordinatesType( begin.x(), end.y(), begin.z() ),
-            end,
-            userData,
-            asynchronousMode,
-            0 );
-       }
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZmYzXz ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            begin,
-            CoordinatesType( end.x(), end.y(), begin.z() ),
-            userData,
-            asynchronousMode,
-            0 );
-      }
-      
-      if( neighbors[ Meshes::DistributedMeshes::ZpYzXz ] == -1 )
-      {
-         GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-            gridPointer,
-            CoordinatesType( begin.x(), begin.y(), end.z() ),
-            end,
-            userData,
-            asynchronousMode,
-            0 );
-      } 
+      const CoordinatesType begin = gridPointer->getLocalBegin();
+      const CoordinatesType end = gridPointer->getLocalEnd();
+      const CoordinatesType skipBegin = gridPointer->getInteriorBegin();
+      const CoordinatesType skipEnd = gridPointer->getInteriorEnd();
+
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         begin,
+         CoordinatesType( end.x(), end.y(), skipBegin.z() ),
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( begin.x(), begin.y(), skipEnd.z() ),
+         end,
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( begin.x(), begin.y(), skipBegin.z() ),
+         CoordinatesType( end.x(), skipBegin.y(), skipEnd.z() ),
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( begin.x(), skipEnd.y(), skipBegin.z() ),
+         CoordinatesType( end.x(), end.y(), skipEnd.z() ),
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( begin.x(), skipBegin.y(), skipBegin.z() ),
+         CoordinatesType( skipBegin.x(), skipEnd.y(), skipEnd.z() ),
+         userData,
+         asynchronousMode,
+         0 );
+      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+         gridPointer,
+         CoordinatesType( skipEnd.x(), skipBegin.y(), skipBegin.z() ),
+         CoordinatesType( end.x(), skipEnd.y(), skipEnd.z() ),
+         userData,
+         asynchronousMode,
+         0 );
    }
 }
 
@@ -136,50 +114,14 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior cells
     */
    static_assert( GridEntity::getEntityDimension() == 3, "The entity has wrong dimension." );
-   
-   DistributedGridType* distributedGrid = gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
-   { 
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         CoordinatesType( 1, 1, 1 ),
-         gridPointer->getDimensions() - CoordinatesType( 2, 2, 2 ),
-         userData,
-         asynchronousMode,
-         0 );
-   }
-   else
-   {
-      const int* neighbors = distributedGrid->getNeighbors(); 
-      CoordinatesType begin( distributedGrid->getLowerOverlap());
-      CoordinatesType end( gridPointer->getDimensions() - distributedGrid->getUpperOverlap()- CoordinatesType(1,1,1) );
-      
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXm ] == -1 )
-         begin.x() += 1 ;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYzXp ] == -1 )
-         end.x() -= 1;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYmXz ] == -1 )
-         begin.y() += 1;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZzYpXz ] == -1 )
-         end.y() -= 1;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZmYzXz ] == -1 )
-         begin.z() += 1 ;
-       
-      if( neighbors[ Meshes::DistributedMeshes::ZpYzXz ] == -1 )
-         end.z() -= 1;
 
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         begin,
-         end,
-         userData,
-         asynchronousMode,
-         0 );
-   }
+   GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+      gridPointer,
+      gridPointer->getInteriorBegin(),
+      gridPointer->getInteriorEnd(),
+      userData,
+      asynchronousMode,
+      0 );
 }
 
 template< typename Real,
@@ -197,31 +139,14 @@ processAllEntities( const GridPointer& gridPointer,
     * All cells
     */
    static_assert( GridEntity::getEntityDimension() == 3, "The entity has wrong dimension." );
- 
-   DistributedGridType* distributedGrid=gridPointer->getDistributedMesh();
-   if( distributedGrid == nullptr || !distributedGrid->isDistributed() )
-   { 
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         CoordinatesType( 0, 0, 0 ),
-         gridPointer->getDimensions() - CoordinatesType( 1, 1, 1 ),
-         userData,
-         asynchronousMode,
-         0 );
-   }
-   else
-   {
-      CoordinatesType begin( distributedGrid->getLowerOverlap());
-      CoordinatesType end( gridPointer->getDimensions() - distributedGrid->getUpperOverlap()- CoordinatesType(1,1,1) );
 
-      GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
-         gridPointer,
-         begin,
-         end,
-         userData,
-         asynchronousMode,
-         0 ); 
-   }
+   GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
+      gridPointer,
+      gridPointer->getLocalBegin(),
+      gridPointer->getLocalEnd(),
+      userData,
+      asynchronousMode,
+      0 );
 }
 
 /****
@@ -242,11 +167,11 @@ processBoundaryEntities( const GridPointer& gridPointer,
     * Boundary faces
     */
    static_assert( GridEntity::getEntityDimension() == 2, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0, 0, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0, 0 ),
       userData,
       asynchronousMode,
       2,
@@ -256,17 +181,17 @@ processBoundaryEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1, 0, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1, 0 ),
       userData,
       asynchronousMode,
       1,
       CoordinatesType( 0, 1, 0 ),
       CoordinatesType( 1, 0, 1 ) );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 0, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 0, 1 ),
       userData,
       asynchronousMode,
       0,
@@ -289,11 +214,11 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior faces
     */
    static_assert( GridEntity::getEntityDimension() == 2, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 1, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       2,
@@ -303,7 +228,7 @@ processInteriorEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 1, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       1,
@@ -313,7 +238,7 @@ processInteriorEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       0,
@@ -339,7 +264,7 @@ processAllEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0, 0 ),
       userData,
       asynchronousMode,
       2,
@@ -349,17 +274,17 @@ processAllEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1, 0 ),
       userData,
       asynchronousMode,
       1,
       CoordinatesType( 0, 1, 0 ),
       CoordinatesType( 1, 0, 1 ) );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 0, 1 ),
       userData,
       asynchronousMode,
       0,
@@ -385,11 +310,11 @@ processBoundaryEntities( const GridPointer& gridPointer,
     * Boundary edges
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1, 1 ),
       userData,
       asynchronousMode,
       2,
@@ -399,17 +324,17 @@ processBoundaryEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0, 1 ),
       userData,
       asynchronousMode,
       1,
       CoordinatesType( 1, 0, 1 ),
       CoordinatesType( 0, 1, 0 ) );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 1, 0, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 1, 0 ),
       userData,
       asynchronousMode,
       0,
@@ -432,11 +357,11 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior edges
     */
    static_assert( GridEntity::getEntityDimension() == 1, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 1, 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0, 0 ),
       userData,
       asynchronousMode,
       2,
@@ -446,7 +371,7 @@ processInteriorEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 1, 0, 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1, 0 ),
       userData,
       asynchronousMode,
       1,
@@ -456,7 +381,7 @@ processInteriorEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 1, 1, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 0, 1 ),
       userData,
       asynchronousMode,
       0,
@@ -482,31 +407,31 @@ processAllEntities( const GridPointer& gridPointer,
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 0, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 0, 1, 1 ),
       userData,
       asynchronousMode,
       2,
-      CoordinatesType( 0, 1, 1 ),      
+      CoordinatesType( 0, 1, 1 ),
       CoordinatesType( 1, 0, 0 ) );
 
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 1, 0 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 0, 1 ),
       userData,
       asynchronousMode,
       1,
-      CoordinatesType( 1, 0, 1 ),      
+      CoordinatesType( 1, 0, 1 ),
       CoordinatesType( 0, 1, 0 ) );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, 1, 1, 1, CoordinatesType, CoordinatesType >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions() - CoordinatesType( 0, 0, 1 ),
+      gridPointer->getDimensions() + CoordinatesType( 1, 1, 0 ),
       userData,
       asynchronousMode,
       0,
-      CoordinatesType( 1, 1, 0 ),      
+      CoordinatesType( 1, 1, 0 ),
       CoordinatesType( 0, 0, 1 ) );
 }
 
@@ -528,11 +453,11 @@ processBoundaryEntities( const GridPointer& gridPointer,
     * Boundary vertices
     */
    static_assert( GridEntity::getEntityDimension() == 0, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 1, 1 >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions(),
+      gridPointer->getDimensions() + CoordinatesType( 1, 1, 1 ),
       userData,
       asynchronousMode,
       0 );
@@ -553,16 +478,16 @@ processInteriorEntities( const GridPointer& gridPointer,
     * Interior vertices
     */
    static_assert( GridEntity::getEntityDimension() == 0, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
       gridPointer,
       CoordinatesType( 1, 1, 1 ),
-      gridPointer->getDimensions() - CoordinatesType( 1, 1, 1 ),
+      gridPointer->getDimensions(),
       userData,
       asynchronousMode,
       0 );
 }
- 
+
 template< typename Real,
           typename Device,
           typename Index,
@@ -578,11 +503,11 @@ processAllEntities( const GridPointer& gridPointer,
     * All vertices
     */
    static_assert( GridEntity::getEntityDimension() == 0, "The entity has wrong dimension." );
- 
+
    GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >(
       gridPointer,
       CoordinatesType( 0, 0, 0 ),
-      gridPointer->getDimensions(),
+      gridPointer->getDimensions() + CoordinatesType( 1, 1, 1 ),
       userData,
       asynchronousMode,
       0 );
diff --git a/src/TNL/Meshes/GridEntity.h b/src/TNL/Meshes/GridEntity.h
index 80041a7539d6c852fb4ce59e8c2ed98224897191..573089dc38dcde12dca7cce878040401bbbde5e4 100644
--- a/src/TNL/Meshes/GridEntity.h
+++ b/src/TNL/Meshes/GridEntity.h
@@ -10,6 +10,7 @@
 
 #pragma once
 
+#include <TNL/Containers/StaticVector.h>
 #include <TNL/Meshes/GridDetails/NeighborGridEntitiesStorage.h>
 
 namespace TNL {
@@ -43,24 +44,24 @@ template< int Dimension,
 class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, EntityDimension, Config >
 {
    public:
- 
+
       typedef Meshes::Grid< Dimension, Real, Device, Index > GridType;
       typedef GridType MeshType;
       typedef typename GridType::RealType RealType;
       typedef typename GridType::IndexType IndexType;
       typedef typename GridType::CoordinatesType CoordinatesType;
       typedef Config ConfigType;
- 
-      constexpr static int getMeshDimension() { return GridType::getMeshDimension(); };            
- 
+
+      constexpr static int getMeshDimension() { return GridType::getMeshDimension(); };
+
       constexpr static int getEntityDimension() { return EntityDimension; };
- 
+
       typedef Containers::StaticVector< getMeshDimension(), IndexType > EntityOrientationType;
       typedef Containers::StaticVector< getMeshDimension(), IndexType > EntityBasisType;
       typedef typename GridType::PointType PointType;
- 
+
       typedef NeighborGridEntitiesStorage< GridEntity, Config > NeighborGridEntitiesStorageType;
- 
+
       template< int NeighborEntityDimension = getEntityDimension() >
       using NeighborEntities =
          NeighborGridEntityGetter<
@@ -68,22 +69,22 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, EntityDimensio
                            EntityDimension,
                            Config >,
             NeighborEntityDimension >;
- 
+
       __cuda_callable__ inline
       GridEntity( const GridType& grid );
- 
+
       __cuda_callable__ inline
       GridEntity( const GridType& grid,
                      const CoordinatesType& coordinates,
                      const EntityOrientationType& orientation,
                      const EntityBasisType& basis );
- 
+
       __cuda_callable__ inline
       const CoordinatesType& getCoordinates() const;
- 
+
       __cuda_callable__ inline
       CoordinatesType& getCoordinates();
- 
+
       __cuda_callable__ inline
       void setCoordinates( const CoordinatesType& coordinates );
 
@@ -98,55 +99,55 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, EntityDimensio
 
       __cuda_callable__ inline
       Index getIndex() const;
- 
+
       __cuda_callable__ inline
       const EntityOrientationType& getOrientation() const;
- 
+
       __cuda_callable__ inline
       void setOrientation( const EntityOrientationType& orientation );
- 
+
       __cuda_callable__ inline
       const EntityBasisType& getBasis() const;
- 
+
       __cuda_callable__ inline
       void setBasis( const EntityBasisType& basis );
- 
+
       template< int NeighborEntityDimension = getEntityDimension() >
       __cuda_callable__ inline
       const NeighborEntities< NeighborEntityDimension >&
       getNeighborEntities() const;
- 
+
       __cuda_callable__ inline
       bool isBoundaryEntity() const;
- 
+
       __cuda_callable__ inline
       PointType getCenter() const;
- 
+
       __cuda_callable__ inline
       const RealType& getMeasure() const;
- 
+
       __cuda_callable__ inline
       const GridType& getMesh() const;
- 
+
    protected:
- 
+
       const GridType& grid;
- 
+
       IndexType entityIndex;
- 
+
       CoordinatesType coordinates;
- 
+
       EntityOrientationType orientation;
- 
+
       EntityBasisType basis;
- 
+
       NeighborGridEntitiesStorageType neighborEntitiesStorage;
- 
+
       //__cuda_callable__ inline
       //GridEntity();
- 
+
       friend class BoundaryGridEntityChecker< GridEntity >;
- 
+
       friend class GridEntityCenterGetter< GridEntity >;
 };
 
@@ -161,7 +162,7 @@ template< int Dimension,
 class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, Dimension, Config >
 {
    public:
- 
+
       typedef Meshes::Grid< Dimension, Real, Device, Index > GridType;
       typedef GridType MeshType;
       typedef typename GridType::RealType RealType;
@@ -169,16 +170,16 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, Dimension, Con
       typedef typename GridType::CoordinatesType CoordinatesType;
       typedef typename GridType::PointType PointType;
       typedef Config ConfigType;
- 
+
       constexpr static int getMeshDimension() { return GridType::getMeshDimension(); };
- 
+
       constexpr static int getEntityDimension() { return getMeshDimension(); };
- 
- 
+
+
       typedef Containers::StaticVector< getMeshDimension(), IndexType > EntityOrientationType;
       typedef Containers::StaticVector< getMeshDimension(), IndexType > EntityBasisType;
       typedef NeighborGridEntitiesStorage< GridEntity, Config > NeighborGridEntitiesStorageType;
- 
+
       template< int NeighborEntityDimension = getEntityDimension() >
       using NeighborEntities =
          NeighborGridEntityGetter<
@@ -190,19 +191,19 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, Dimension, Con
 
       __cuda_callable__ inline
       GridEntity( const GridType& grid );
- 
+
       __cuda_callable__ inline
       GridEntity( const GridType& grid,
                   const CoordinatesType& coordinates,
                   const EntityOrientationType& orientation = EntityOrientationType( ( Index ) 0 ),
                   const EntityBasisType& basis = EntityBasisType( ( Index ) 1 ) );
- 
+
       __cuda_callable__ inline
       const CoordinatesType& getCoordinates() const;
- 
+
       __cuda_callable__ inline
       CoordinatesType& getCoordinates();
- 
+
       __cuda_callable__ inline
       void setCoordinates( const CoordinatesType& coordinates );
 
@@ -217,54 +218,54 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, Dimension, Con
 
       __cuda_callable__ inline
       Index getIndex() const;
- 
+
       __cuda_callable__ inline
       const EntityOrientationType getOrientation() const;
- 
+
       __cuda_callable__ inline
       void setOrientation( const EntityOrientationType& orientation ){};
- 
+
       __cuda_callable__ inline
       const EntityBasisType getBasis() const;
- 
+
       __cuda_callable__ inline
       void setBasis( const EntityBasisType& basis ){};
- 
+
       template< int NeighborEntityDimension = Dimension >
       __cuda_callable__ inline
       const NeighborEntities< NeighborEntityDimension >&
       getNeighborEntities() const;
- 
+
       __cuda_callable__ inline
       bool isBoundaryEntity() const;
- 
+
       __cuda_callable__ inline
       PointType getCenter() const;
- 
+
       __cuda_callable__ inline
       const RealType& getMeasure() const;
- 
+
       __cuda_callable__ inline
       const PointType& getEntityProportions() const;
- 
+
       __cuda_callable__ inline
       const GridType& getMesh() const;
 
    protected:
- 
+
       const GridType& grid;
- 
+
       IndexType entityIndex;
- 
+
       CoordinatesType coordinates;
- 
+
       NeighborGridEntitiesStorageType neighborEntitiesStorage;
- 
+
       //__cuda_callable__ inline
       //GridEntity();
- 
+
       friend class BoundaryGridEntityChecker< GridEntity >;
- 
+
       friend class GridEntityCenterGetter< GridEntity >;
 };
 
@@ -279,7 +280,7 @@ template< int Dimension,
 class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, 0, Config >
 {
    public:
- 
+
       typedef Meshes::Grid< Dimension, Real, Device, Index > GridType;
       typedef GridType MeshType;
       typedef typename GridType::RealType RealType;
@@ -287,15 +288,15 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, 0, Config >
       typedef typename GridType::CoordinatesType CoordinatesType;
       typedef typename GridType::PointType PointType;
       typedef Config ConfigType;
- 
+
       constexpr static int getMeshDimension() { return GridType::getMeshDimension(); };
- 
+
       constexpr static int getEntityDimension() { return 0; };
- 
+
       typedef Containers::StaticVector< getMeshDimension(), IndexType > EntityOrientationType;
       typedef Containers::StaticVector< getMeshDimension(), IndexType > EntityBasisType;
       typedef NeighborGridEntitiesStorage< GridEntity, Config > NeighborGridEntitiesStorageType;
- 
+
       template< int NeighborEntityDimension = getEntityDimension() >
       using NeighborEntities =
          NeighborGridEntityGetter<
@@ -307,19 +308,19 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, 0, Config >
 
       __cuda_callable__ inline
       GridEntity( const GridType& grid );
- 
+
       __cuda_callable__ inline
       GridEntity( const GridType& grid,
                      const CoordinatesType& coordinates,
                      const EntityOrientationType& orientation = EntityOrientationType( ( Index ) 0 ),
                      const EntityBasisType& basis = EntityOrientationType( ( Index ) 0 ) );
- 
+
       __cuda_callable__ inline
       const CoordinatesType& getCoordinates() const;
- 
+
       __cuda_callable__ inline
       CoordinatesType& getCoordinates();
- 
+
       __cuda_callable__ inline
       void setCoordinates( const CoordinatesType& coordinates );
 
@@ -334,28 +335,28 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, 0, Config >
 
       __cuda_callable__ inline
       Index getIndex() const;
- 
+
       __cuda_callable__ inline
       const EntityOrientationType getOrientation() const;
- 
+
       __cuda_callable__ inline
       void setOrientation( const EntityOrientationType& orientation ){};
- 
+
       __cuda_callable__ inline
       const EntityBasisType getBasis() const;
- 
+
       __cuda_callable__ inline
       void setBasis( const EntityBasisType& basis ){};
 
- 
+
       template< int NeighborEntityDimension = getEntityDimension() >
       __cuda_callable__ inline
       const NeighborEntities< NeighborEntityDimension >&
       getNeighborEntities() const;
- 
+
       __cuda_callable__ inline
       bool isBoundaryEntity() const;
- 
+
       __cuda_callable__ inline
       PointType getCenter() const;
 
@@ -365,25 +366,25 @@ class GridEntity< Meshes::Grid< Dimension, Real, Device, Index >, 0, Config >
 
       __cuda_callable__ inline
       const RealType getMeasure() const;
- 
+
       __cuda_callable__ inline
       PointType getEntityProportions() const;
- 
+
       __cuda_callable__ inline
       const GridType& getMesh() const;
- 
+
    protected:
- 
+
       const GridType& grid;
- 
+
       IndexType entityIndex;
- 
+
       CoordinatesType coordinates;
- 
+
       NeighborGridEntitiesStorageType neighborEntitiesStorage;
- 
+
       friend class BoundaryGridEntityChecker< GridEntity >;
- 
+
       friend class GridEntityCenterGetter< GridEntity >;
 };
 
diff --git a/src/TNL/Meshes/Mesh.h b/src/TNL/Meshes/Mesh.h
index 41e24412b65b0e8a004be28b3505ddfe62587c67..506850eceaafc7f652b0ef77284c7f1eff4384a8 100644
--- a/src/TNL/Meshes/Mesh.h
+++ b/src/TNL/Meshes/Mesh.h
@@ -17,7 +17,6 @@
 #pragma once
 
 #include <ostream>
-#include <TNL/Object.h>
 #include <TNL/Logger.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Meshes/MeshDetails/ConfigValidator.h>
@@ -64,8 +63,7 @@ class MeshInitializableBase< MeshConfig, Devices::Cuda, MeshType >
 template< typename MeshConfig,
           typename Device = Devices::Host >
 class Mesh
-   : public Object,
-     public ConfigValidator< MeshConfig >,
+   : public ConfigValidator< MeshConfig >,
      public MeshInitializableBase< MeshConfig, Device, Mesh< MeshConfig, Device > >,
      public StorageLayerFamily< MeshConfig, Device >,
      public EntityTags::LayerFamily< MeshConfig, Device, Mesh< MeshConfig, Device > >
@@ -110,10 +108,6 @@ class Mesh
       using Face = EntityType< getMeshDimension() - 1 >;
       using Vertex = EntityType< 0 >;
 
-      static String getSerializationType();
-
-      virtual String getSerializationTypeVirtual() const;
-
       /**
        * \brief Returns the count of mesh entities of the given dimension.
        */
@@ -265,13 +259,6 @@ class Mesh
                             const GlobalIndexArray& iperm );
 
 
-      void save( File& file ) const;
-
-      void load( File& file );
-
-      using Object::load;
-      using Object::save;
-
       void print( std::ostream& str ) const;
 
       bool operator==( const Mesh& mesh ) const;
diff --git a/src/TNL/Meshes/Mesh.hpp b/src/TNL/Meshes/Mesh.hpp
index 278ef215dd033aa6062ae1dfaa32c5cd37f6a660..b7394ea2c0454efd58e1e83b79e4c5bfa9c41108 100644
--- a/src/TNL/Meshes/Mesh.hpp
+++ b/src/TNL/Meshes/Mesh.hpp
@@ -85,22 +85,6 @@ getMeshDimension()
    return MeshTraitsType::meshDimension;
 }
 
-template< typename MeshConfig, typename Device >
-String
-Mesh< MeshConfig, Device >::
-getSerializationType()
-{
-   return String( "Meshes::Mesh< ") + TNL::getType< MeshConfig >() + " >";
-}
-
-template< typename MeshConfig, typename Device >
-String
-Mesh< MeshConfig, Device >::
-getSerializationTypeVirtual() const
-{
-   return this->getSerializationType();
-}
-
 template< typename MeshConfig, typename Device >
    template< int Dimension >
 __cuda_callable__
@@ -341,43 +325,6 @@ reorderEntities( const GlobalIndexArray& perm,
 }
 
 
-template< typename MeshConfig, typename Device >
-void
-Mesh< MeshConfig, Device >::
-save( File& file ) const
-{
-   // saving via host is necessary due to segment-based sparse matrices
-   if( std::is_same< Device, Devices::Cuda >::value ) {
-      Mesh< MeshConfig, Devices::Host > hostMesh;
-      hostMesh = *this;
-      hostMesh.save( file );
-   }
-   else {
-      Object::save( file );
-      StorageBaseType::save( file );
-      EntityTagsLayerFamily::save( file );
-   }
-}
-
-template< typename MeshConfig, typename Device >
-void
-Mesh< MeshConfig, Device >::
-load( File& file )
-{
-   // loading via host is necessary for the initialization of the dual graph (and due to segment-based sparse matrices)
-   if( std::is_same< Device, Devices::Cuda >::value ) {
-      Mesh< MeshConfig, Devices::Host > hostMesh;
-      hostMesh.load( file );
-      *this = hostMesh;
-   }
-   else {
-      Object::load( file );
-      StorageBaseType::load( file );
-      EntityTagsLayerFamily::load( file );
-      this->initializeDualGraph( *this );
-   }
-}
-
 template< typename MeshConfig, typename Device >
 void
 Mesh< MeshConfig, Device >::
diff --git a/src/TNL/Meshes/MeshDetails/layers/EntityTags/Layer.h b/src/TNL/Meshes/MeshDetails/layers/EntityTags/Layer.h
index b7b79c4e8883d469bb57afc474d75609dc9b8ae7..0fc2bebafe3e5df7983c19f58872c993c4bb0892 100644
--- a/src/TNL/Meshes/MeshDetails/layers/EntityTags/Layer.h
+++ b/src/TNL/Meshes/MeshDetails/layers/EntityTags/Layer.h
@@ -206,17 +206,6 @@ public:
       return ghostsOffset;
    }
 
-   void save( File& file ) const
-   {
-      file << tags;
-   }
-
-   void load( File& file )
-   {
-      file >> tags;
-      updateEntityTagsLayer( DimensionTag() );
-   }
-
    void print( std::ostream& str ) const
    {
       str << "Boundary tags for entities of dimension " << DimensionTag::value << " are: ";
@@ -285,9 +274,6 @@ protected:
    void getGhostEntitiesCount() const;
    void getGhostEntitiesOffset() const;
 
-   void save( File& file ) const {}
-   void load( File& file ) {}
-
    void print( std::ostream& str ) const {}
 
    bool operator==( const Layer& layer ) const
diff --git a/src/TNL/Meshes/MeshDetails/layers/EntityTags/LayerFamily.h b/src/TNL/Meshes/MeshDetails/layers/EntityTags/LayerFamily.h
index 2c30e8316b97f3d695f54c87fa60639c1dda9f2e..712bee34ee5fb05b0f6952d25e4661a7b186c546 100644
--- a/src/TNL/Meshes/MeshDetails/layers/EntityTags/LayerFamily.h
+++ b/src/TNL/Meshes/MeshDetails/layers/EntityTags/LayerFamily.h
@@ -83,18 +83,6 @@ protected:
    }
 
 
-   void save( File& file ) const
-   {
-      LayerType::save( file );
-      BaseType::save( file );
-   }
-
-   void load( File& file )
-   {
-      LayerType::load( file );
-      BaseType::load( file );
-   }
-
    void print( std::ostream& str ) const
    {
       LayerType::print( str );
@@ -133,9 +121,6 @@ protected:
    template< typename Device_ >
    LayerInheritor& operator=( const LayerInheritor< MeshConfig, Device_, DimensionTag< MeshConfig::meshDimension + 1 > >& other ) { return *this; }
 
-   void save( File& file ) const {}
-   void load( File& file ) {}
-
    void print( std::ostream& str ) const {}
 
    bool operator==( const LayerInheritor& layer ) const
diff --git a/src/TNL/Meshes/MeshDetails/layers/StorageLayer.h b/src/TNL/Meshes/MeshDetails/layers/StorageLayer.h
index b6404eb683cc14a992ae69028cbf586dffa5b0fd..38bddd6578a361a4c98069b5df20615f61f96b84 100644
--- a/src/TNL/Meshes/MeshDetails/layers/StorageLayer.h
+++ b/src/TNL/Meshes/MeshDetails/layers/StorageLayer.h
@@ -89,18 +89,6 @@ public:
                DualGraphLayer< MeshConfig, Device >::operator==( layer ) );
    }
 
-   void save( File& file ) const
-   {
-      file << points;
-      BaseType::save( file );
-   }
-
-   void load( File& file )
-   {
-      file >> points;
-      BaseType::load( file );
-   }
-
    void print( std::ostream& str ) const
    {
       str << "Vertex coordinates are: " << points << std::endl;
@@ -282,22 +270,6 @@ public:
       return *this;
    }
 
-   void save( File& file ) const
-   {
-      SubentityStorageBaseType::save( file );
-      SuperentityStorageBaseType::save( file );
-      file.save( &entitiesCount, 1 );
-      BaseType::save( file );
-   }
-
-   void load( File& file )
-   {
-      SubentityStorageBaseType::load( file );
-      SuperentityStorageBaseType::load( file );
-      file.load( &entitiesCount, 1 );
-      BaseType::load( file );
-   }
-
    void print( std::ostream& str ) const
    {
       str << "Number of entities with dimension " << DimensionTag::value << ": " << entitiesCount << std::endl;
@@ -367,9 +339,6 @@ protected:
    void setEntitiesCount() {}
    void getEntitiesCount() const {}
 
-   void save( File& file ) const {}
-   void load( File& file ) {}
-
    void print( std::ostream& str ) const {}
 
    bool operator==( const StorageLayer& meshLayer ) const
diff --git a/src/TNL/Meshes/MeshDetails/layers/SubentityStorageLayer.h b/src/TNL/Meshes/MeshDetails/layers/SubentityStorageLayer.h
index ed84e2b8257ddcc3319498edf0d7ffbd9382e249..5aa1ee57960b0c0e26a03986b6cc139403fff59a 100644
--- a/src/TNL/Meshes/MeshDetails/layers/SubentityStorageLayer.h
+++ b/src/TNL/Meshes/MeshDetails/layers/SubentityStorageLayer.h
@@ -122,18 +122,6 @@ protected:
    }
 
 
-   void save( File& file ) const
-   {
-      BaseType::save( file );
-      matrix.save( file );
-   }
-
-   void load( File& file )
-   {
-      BaseType::load( file );
-      matrix.load( file );
-   }
-
    void print( std::ostream& str ) const
    {
       BaseType::print( str );
@@ -224,9 +212,6 @@ protected:
       return true;
    }
 
-   void save( File& file ) const {}
-   void load( File& file ) {}
-
    void getSubentitiesCount( SubdimensionTag ) {}
    void getSubentitiesMatrix( SubdimensionTag ) {}
 };
diff --git a/src/TNL/Meshes/MeshDetails/layers/SuperentityStorageLayer.h b/src/TNL/Meshes/MeshDetails/layers/SuperentityStorageLayer.h
index 339090de556b1c6c5f171643ae6a3c28b528be30..3cd6a5a2963de03c035652a171d9b462aa20490a 100644
--- a/src/TNL/Meshes/MeshDetails/layers/SuperentityStorageLayer.h
+++ b/src/TNL/Meshes/MeshDetails/layers/SuperentityStorageLayer.h
@@ -134,19 +134,6 @@ protected:
    }
 
 
-   void save( File& file ) const
-   {
-      BaseType::save( file );
-      matrix.save( file );
-   }
-
-   void load( File& file )
-   {
-      BaseType::load( file );
-      matrix.load( file );
-      matrix.getCompressedRowLengths( superentitiesCounts );
-   }
-
    void print( std::ostream& str ) const
    {
       BaseType::print( str );
@@ -236,9 +223,6 @@ protected:
       return true;
    }
 
-   void save( File& file ) const {}
-   void load( File& file ) {}
-
    void getSuperentitiesMatrix( SuperdimensionTag ) {}
 };
 
diff --git a/src/TNL/Meshes/Readers/MeshReader.h b/src/TNL/Meshes/Readers/MeshReader.h
index 8bf8189ba161899a54527ad7c0fee281ee9c246b..778d0faa202d1ac46da505582b73b369de8ecb27 100644
--- a/src/TNL/Meshes/Readers/MeshReader.h
+++ b/src/TNL/Meshes/Readers/MeshReader.h
@@ -18,6 +18,7 @@
 
 #include <TNL/Meshes/MeshBuilder.h>
 #include <TNL/Meshes/VTKTraits.h>
+#include <TNL/Meshes/Traits.h>
 
 namespace TNL {
 namespace Meshes {
@@ -84,17 +85,81 @@ public:
     * \brief Method which loads the intermediate mesh representation into a
     * mesh object.
     *
+    * This overload applies to structured grids, i.e. \ref TNL::Meshes::Grid.
+    *
     * When the method exits, the intermediate mesh representation is destroyed
     * to save memory. However, depending on the specific file format, the mesh
     * file may remain open so that the user can load additional data.
     */
    template< typename MeshType >
-   void loadMesh( MeshType& mesh )
+   std::enable_if_t< isGrid< MeshType >::value >
+   loadMesh( MeshType& mesh )
    {
       // check that detectMesh has been called
       if( meshType == "" )
          detectMesh();
 
+      // check if we have a grid
+      if( meshType != "Meshes::Grid" )
+         throw MeshReaderError( "MeshReader", "the file does not contain a structured grid, it is " + meshType );
+
+      if( getMeshDimension() != mesh.getMeshDimension() )
+         throw MeshReaderError( "MeshReader", "cannot load a " + std::to_string(getMeshDimension()) + "-dimensional "
+                                              "grid into a mesh of type " + std::string(getType(mesh)) );
+
+      // check that the grid attributes were set
+      if( gridExtent.size() != 6 )
+         throw MeshReaderError( "MeshReader", "gridExtent has invalid size: " + std::to_string(gridExtent.size()) + " (should be 6)" );
+      if( gridOrigin.size() != 3 )
+         throw MeshReaderError( "MeshReader", "gridOrigin has invalid size: " + std::to_string(gridOrigin.size()) + " (should be 3)" );
+      if( gridSpacing.size() != 3 )
+         throw MeshReaderError( "MeshReader", "gridSpacing has invalid size: " + std::to_string(gridSpacing.size()) + " (should be 3)" );
+
+      // split the extent into begin and end
+      typename MeshType::CoordinatesType begin, end;
+      for( int i = 0; i < begin.getSize(); i++ ) {
+         begin[i] = gridExtent[2 * i];
+         end[i] = gridExtent[2 * i + 1];
+      }
+      mesh.setDimensions(end - begin);
+
+      // transform the origin and calculate proportions
+      typename MeshType::PointType origin, proportions;
+      for( int i = 0; i < origin.getSize(); i++ ) {
+         origin[i] = gridOrigin[i] + begin[i] * gridSpacing[i];
+         proportions[i] = (end[i] - begin[i]) * gridSpacing[i];
+      }
+      mesh.setDomain( origin, proportions );
+   }
+
+   /**
+    * \brief Method which loads the intermediate mesh representation into a
+    * mesh object.
+    *
+    * This overload applies to unstructured meshes, i.e. \ref TNL::Meshes::Mesh.
+    *
+    * When the method exits, the intermediate mesh representation is destroyed
+    * to save memory. However, depending on the specific file format, the mesh
+    * file may remain open so that the user can load additional data.
+    */
+   template< typename MeshType >
+   std::enable_if_t< ! isGrid< MeshType >::value >
+   loadMesh( MeshType& mesh )
+   {
+      // check that detectMesh has been called
+      if( meshType == "" )
+         detectMesh();
+
+      // check if we have an unstructured mesh
+      if( meshType != "Meshes::Mesh" )
+         throw MeshReaderError( "MeshReader", "the file does not contain an unstructured mesh, it is " + meshType );
+
+      // skip empty mesh (the cell shape is indeterminate)
+      if( NumberOfPoints == 0 && NumberOfCells == 0 ) {
+         mesh = MeshType {};
+         return;
+      }
+
       // check that the cell shape mathes
       const VTK::EntityShape meshCellShape = VTK::TopologyToEntityShape< typename MeshType::template EntityTraits< MeshType::getMeshDimension() >::EntityTopology >::shape;
       if( meshCellShape != cellShape )
@@ -102,7 +167,6 @@ public:
                                             + "of cells used in the file (" + VTK::getShapeName(cellShape) + ")" );
 
       using MeshBuilder = MeshBuilder< MeshType >;
-      using IndexType = typename MeshType::GlobalIndexType;
       using PointType = typename MeshType::PointType;
       using CellSeedType = typename MeshBuilder::CellSeedType;
 
@@ -147,7 +211,7 @@ public:
       pointsArray = connectivityArray = offsetsArray = typesArray = {};
 
       if( ! meshBuilder.build( mesh ) )
-         throw MeshReaderError( "VTKReader", "MeshBuilder failed" );
+         throw MeshReaderError( "MeshReader", "MeshBuilder failed" );
    }
 
    virtual VariantVector
@@ -218,6 +282,10 @@ protected:
    int meshDimension, worldDimension;
    VTK::EntityShape cellShape = VTK::EntityShape::Vertex;
 
+   // intermediate representation of a grid (this is relevant only for TNL::Meshes::Grid)
+   std::vector< std::int64_t > gridExtent;
+   std::vector< double > gridOrigin, gridSpacing;
+
    // intermediate representation of the unstructured mesh (matches the VTU
    // file format, other formats have to be converted)
    VariantVector pointsArray, connectivityArray, offsetsArray, typesArray;
@@ -230,6 +298,10 @@ protected:
       NumberOfPoints = NumberOfCells = 0;
       meshDimension = worldDimension = 0;
       cellShape = VTK::EntityShape::Vertex;
+
+      gridExtent = {};
+      gridOrigin = gridSpacing = {};
+
       pointsArray = connectivityArray = offsetsArray = typesArray = {};
       pointsType = connectivityType = offsetsType = typesType = "";
    }
diff --git a/src/TNL/Meshes/Readers/PVTIReader.h b/src/TNL/Meshes/Readers/PVTIReader.h
new file mode 100644
index 0000000000000000000000000000000000000000..742578dfce9a4c03dc9ee81cff9c09969c9577b9
--- /dev/null
+++ b/src/TNL/Meshes/Readers/PVTIReader.h
@@ -0,0 +1,335 @@
+/***************************************************************************
+                          PVTIReader.h  -  description
+                             -------------------
+    begin                : Jun 26, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#pragma once
+
+#include <experimental/filesystem>
+
+#include <TNL/MPI/Wrappers.h>
+#include <TNL/MPI/Utils.h>
+#include <TNL/Meshes/Readers/VTIReader.h>
+#include <TNL/Meshes/MeshDetails/layers/EntityTags/Traits.h>
+
+namespace TNL {
+namespace Meshes {
+namespace Readers {
+
+class PVTIReader
+: public XMLVTK
+{
+   std::string
+   getSourcePath( std::string source )
+   {
+      namespace fs = std::experimental::filesystem;
+      return fs::path(fileName).parent_path() / source;
+   }
+
+#ifdef HAVE_TINYXML2
+   void readParallelImageData()
+   {
+      using namespace tinyxml2;
+
+      // read the required attributes
+      const std::string extent = getAttributeString( datasetElement, "WholeExtent" );
+      const std::string origin = getAttributeString( datasetElement, "Origin" );
+      const std::string spacing = getAttributeString( datasetElement, "Spacing" );
+
+      // parse the extent
+      {
+         std::stringstream ss( extent );
+         gridExtent.resize( 6, 0 );
+         for( int i = 0; i < 6; i++ ) {
+            ss >> gridExtent[i];
+            // check conversion error
+            if( ! ss.good() )
+               throw MeshReaderError( "VTIReader", "invalid extent: not a number: " + extent );
+         }
+         // check remaining characters
+         std::string suffix;
+         ss >> std::ws >> suffix;
+         if( ! suffix.empty() )
+            throw MeshReaderError( "VTIReader", "invalid extent " + extent + ": trailing characters: " + suffix );
+      }
+
+      // parse the origin
+      {
+         std::stringstream ss( origin );
+         gridOrigin.resize( 3 );
+         for( int i = 0; i < 3; i++ ) {
+            ss >> gridOrigin[i];
+            // check conversion error
+            if( ! ss.good() )
+               throw MeshReaderError( "VTIReader", "invalid origin: not a number: " + origin );
+         }
+         // check remaining characters
+         std::string suffix;
+         ss >> std::ws >> suffix;
+         if( ! suffix.empty() )
+            throw MeshReaderError( "VTIReader", "invalid origin " + origin + ": trailing characters: " + suffix );
+      }
+
+      // parse the spacing
+      {
+         std::stringstream ss( spacing );
+         gridSpacing.resize( 3 );
+         for( int i = 0; i < 3; i++ ) {
+            ss >> gridSpacing[i];
+            // check conversion error
+            if( ! ss.good() )
+               throw MeshReaderError( "VTIReader", "invalid spacing: not a number: " + spacing );
+            // check negative numbers
+            if( gridSpacing[i] < 0 )
+               throw MeshReaderError( "VTIReader", "invalid spacing: negative number: " + spacing );
+         }
+         // check remaining characters
+         std::string suffix;
+         ss >> std::ws >> suffix;
+         if( ! suffix.empty() )
+            throw MeshReaderError( "VTIReader", "invalid spacing " + spacing + ": trailing characters: " + suffix );
+      }
+
+      // determine the grid dimension
+      int dim = 0;
+      for( int i = 0; i < 3; i++ )
+         if( gridSpacing[i] > 0 )
+            dim++;
+         else
+            break;
+      worldDimension = meshDimension = dim;
+
+      // populate cellShape (just for completeness, not necessary for GridTypeResolver)
+      if( meshDimension == 1 )
+         cellShape = VTK::EntityShape::Line;
+      else if( meshDimension == 2 )
+         cellShape = VTK::EntityShape::Pixel;
+      else if( meshDimension == 3 )
+         cellShape = VTK::EntityShape::Voxel;
+
+      // RealType is not stored in the VTI file, so just set the default
+      pointsType = "double";
+
+      // set the index type
+      connectivityType = headerType;
+
+
+      // read GhostLevel attribute
+      ghostLevels = getAttributeInteger( datasetElement, "GhostLevel" );
+      // read MinCommonVertices attribute (TNL-specific, optional)
+      minCommonVertices = getAttributeInteger( datasetElement, "MinCommonVertices", 0 );
+
+      // read pieces info
+      const XMLElement* piece = getChildSafe( datasetElement, "Piece" );
+      while( piece ) {
+         const std::string source = getAttributeString( piece, "Source" );
+         if( source != "" ) {
+            pieceSources.push_back( getSourcePath( source ) );
+         }
+         else
+            throw MeshReaderError( "PVTIReader", "the Source attribute of a <Piece> element was found empty." );
+         // find next
+         piece = piece->NextSiblingElement( "Piece" );
+      }
+      if( pieceSources.size() == 0 )
+         throw MeshReaderError( "PVTIReader", "the file does not contain any <Piece> element." );
+
+      // check that the number of pieces matches the number of MPI ranks
+      const int nproc = MPI::GetSize( group );
+      if( (int) pieceSources.size() != nproc )
+         throw MeshReaderError( "PVTIReader", "the number of subdomains does not match the number of MPI ranks ("
+                                              + std::to_string(pieceSources.size()) + " vs " + std::to_string(nproc) + ")." );
+
+      // read the local piece source
+      const int rank = MPI::GetRank( group );
+      localReader.setFileName( pieceSources[ rank ] );
+      localReader.detectMesh();
+
+      // check that local attributes are the same as global attributes
+      if( getWorldDimension() != localReader.getWorldDimension() )
+         throw MeshReaderError( "PVTIReader", "the world dimension of a subdomain does not match the global grid." );
+      if( getMeshDimension() != localReader.getMeshDimension() )
+         throw MeshReaderError( "PVTIReader", "the mesh dimension of a subdomain does not match the global grid." );
+      if( getCellShape() != localReader.getCellShape() )
+         throw MeshReaderError( "PVTIReader", "the cell shape of a subdomain does not match the global grid." );
+      if( getRealType() != localReader.getRealType() )
+         throw MeshReaderError( "PVTIReader", "the real type of a subdomain does not match the global grid." );
+      if( getGlobalIndexType() != localReader.getGlobalIndexType() )
+         throw MeshReaderError( "PVTIReader", "the global index type of a subdomain does not match the global grid." );
+
+      // TODO: assert that all MPI ranks have the same attributes
+
+      // TODO
+//      if( ghostLevels > 0 ) {
+//         // load the vtkGhostType arrays from PointData and CellData
+//         pointTags = localReader.readPointData( VTK::ghostArrayName() );
+//         cellTags = localReader.readCellData( VTK::ghostArrayName() );
+//      }
+   }
+#endif
+
+public:
+   PVTIReader() = default;
+
+   PVTIReader( const std::string& fileName, MPI_Comm group = MPI::AllGroup() )
+   : XMLVTK( fileName ), group( group )
+   {}
+
+   virtual void detectMesh() override
+   {
+#ifdef HAVE_TINYXML2
+      reset();
+      try {
+         openVTKFile();
+      }
+      catch( const MeshReaderError& ) {
+         reset();
+         throw;
+      }
+
+      // verify file type
+      if( fileType == "PImageData" )
+         readParallelImageData();
+      else
+         throw MeshReaderError( "PVTIReader", "the reader cannot read data of the type " + fileType + ". Use a different reader if possible." );
+
+      // indicate success by setting the mesh type
+      meshType = "Meshes::DistributedGrid";
+#else
+      throw_no_tinyxml();
+#endif
+   }
+
+   template< typename MeshType >
+   std::enable_if_t< isDistributedGrid< MeshType >::value >
+   loadMesh( MeshType& mesh )
+   {
+      // check that detectMesh has been called
+      if( meshType == "" )
+         detectMesh();
+
+      // check if we have a distributed grid
+      if( meshType != "Meshes::DistributedGrid" )
+         throw MeshReaderError( "MeshReader", "the file does not contain a distributed structured grid, it is " + meshType );
+
+      // set the communication group
+      mesh.setCommunicationGroup( group );
+
+      // TODO: set the domain decomposition
+//      mesh.setDomainDecomposition( decomposition );
+
+      // load the global grid (meshType must be faked before calling loadMesh)
+      typename MeshType::GridType globalGrid;
+      meshType = "Meshes::Grid";
+      MeshReader::loadMesh( globalGrid );
+      meshType = "Meshes::DistributedGrid";
+
+      // set the global grid from the extent in the .pvti file
+      // (this actually does the decomposition, i.e. computes the local size etc.)
+      mesh.setGlobalGrid( globalGrid );
+
+      // set ghost levels (this updates the lower and upper overlaps on the
+      // distributed grid, as well as the localOrigin, localBegin and
+      // localGridSize based on the overlaps)
+      mesh.setGhostLevels( ghostLevels );
+      // check MinCommonVertices
+      // TODO
+//      if( minCommonVertices > 0 && minCommonVertices != MeshType::Config::dualGraphMinCommonVertices )
+//         std::cerr << "WARNING: the mesh was decomposed with different MinCommonVertices value than the value set in the mesh configuration "
+//                      "(" << minCommonVertices << " vs " << MeshType::Config::dualGraphMinCommonVertices << ")." << std::endl;
+
+      // load the local mesh and check with the subdomain
+      typename MeshType::GridType localMesh;
+      localReader.loadMesh( localMesh );
+      if( localMesh != mesh.getLocalMesh() ) {
+         std::stringstream msg;
+         msg << "The grid from the " << MPI::GetRank( group ) << "-th subdomain .vti file does not match the local grid of the DistributedGrid."
+             << "\n- Grid from the .vti file:\n" << localMesh
+             << "\n- Local grid from the DistributedGrid:\n" << mesh.getLocalMesh();
+         throw MeshReaderError( "PVTIReader", msg.str() );
+      }
+
+//      using Index = typename MeshType::IndexType;
+//      const Index pointsCount = mesh.getLocalMesh().template getEntitiesCount< 0 >();
+//      const Index cellsCount = mesh.getLocalMesh().template getEntitiesCount< MeshType::getMeshDimension() >();
+
+/*    // TODO
+      if( ghostLevels > 0 ) {
+         // assign point ghost tags
+         using mpark::get;
+         const std::vector<std::uint8_t> pointTags = get< std::vector<std::uint8_t> >( this->pointTags );
+         if( (Index) pointTags.size() != pointsCount )
+            throw MeshReaderError( "PVTIReader", "the vtkGhostType array in PointData has wrong size: " + std::to_string(pointTags.size()) );
+         mesh.vtkPointGhostTypes() = pointTags;
+         for( Index i = 0; i < pointsCount; i++ )
+            if( pointTags[ i ] & (std::uint8_t) VTK::PointGhostTypes::DUPLICATEPOINT )
+               localMesh.template addEntityTag< 0 >( i, EntityTags::GhostEntity );
+
+         // assign cell ghost tags
+         using mpark::get;
+         const std::vector<std::uint8_t> cellTags = get< std::vector<std::uint8_t> >( this->cellTags );
+         if( (Index) cellTags.size() != cellsCount )
+            throw MeshReaderError( "PVTIReader", "the vtkGhostType array in CellData has wrong size: " + std::to_string(cellTags.size()) );
+         mesh.vtkCellGhostTypes() = cellTags;
+         for( Index i = 0; i < cellsCount; i++ ) {
+            if( cellTags[ i ] & (std::uint8_t) VTK::CellGhostTypes::DUPLICATECELL )
+               localMesh.template addEntityTag< MeshType::getMeshDimension() >( i, EntityTags::GhostEntity );
+         }
+
+         // reset arrays since they are not needed anymore
+         this->pointTags = this->cellTags = {};
+      }
+*/
+   }
+
+   template< typename MeshType >
+   std::enable_if_t< ! isDistributedGrid< MeshType >::value >
+   loadMesh( MeshType& mesh )
+   {
+      throw MeshReaderError( "MeshReader", "the PVTI reader cannot be used to load a distributed unstructured mesh." );
+   }
+
+   virtual VariantVector
+   readPointData( std::string arrayName ) override
+   {
+      return localReader.readPointData( arrayName );
+   }
+
+   virtual VariantVector
+   readCellData( std::string arrayName ) override
+   {
+      return localReader.readCellData( arrayName );
+   }
+
+   virtual void reset() override
+   {
+      resetBase();
+      ghostLevels = 0;
+      pieceSources = {};
+      localReader.reset();
+      pointTags = cellTags = {};
+   }
+
+protected:
+   MPI_Comm group;
+
+   int ghostLevels = 0;
+   int minCommonVertices = 0;
+   std::vector<std::string> pieceSources;
+
+   VTIReader localReader;
+
+   // additinal arrays we need to read from the localReader
+   VariantVector pointTags, cellTags;
+};
+
+} // namespace Readers
+} // namespace Meshes
+} // namespace TNL
diff --git a/src/TNL/Meshes/Readers/PVTUReader.h b/src/TNL/Meshes/Readers/PVTUReader.h
index 725aa7fec4baaf797afdda3908f126b728744fc2..99b05b53c9038f97779fdcfc73b26de183222801 100644
--- a/src/TNL/Meshes/Readers/PVTUReader.h
+++ b/src/TNL/Meshes/Readers/PVTUReader.h
@@ -15,6 +15,7 @@
 #include <experimental/filesystem>
 
 #include <TNL/MPI/Wrappers.h>
+#include <TNL/MPI/Utils.h>
 #include <TNL/Meshes/Readers/VTUReader.h>
 #include <TNL/Meshes/MeshDetails/layers/EntityTags/Traits.h>
 
@@ -132,12 +133,24 @@ public:
    }
 
    template< typename MeshType >
-   void loadMesh( MeshType& mesh )
+   std::enable_if_t< isDistributedGrid< MeshType >::value >
+   loadMesh( MeshType& mesh )
+   {
+      throw MeshReaderError( "MeshReader", "the PVTU reader cannot be used to load a distributed structured grid." );
+   }
+
+   template< typename MeshType >
+   std::enable_if_t< ! isDistributedGrid< MeshType >::value >
+   loadMesh( MeshType& mesh )
    {
       // check that detectMesh has been called
       if( meshType == "" )
          detectMesh();
 
+      // check if we have a distributed unstructured mesh
+      if( meshType != "Meshes::DistributedMesh" )
+         throw MeshReaderError( "MeshReader", "the file does not contain an unstructured mesh, it is " + meshType );
+
       // load the local mesh
       auto& localMesh = mesh.getLocalMesh();
       localReader.loadMesh( localMesh );
@@ -204,8 +217,20 @@ public:
       // reset arrays since they are not needed anymore
       this->pointTags = this->cellTags = pointGlobalIndices = cellGlobalIndices = {};
 
-      // set the communication group
-      mesh.setCommunicationGroup( group );
+      // check if we need to split the communicator
+      const Index minCount = MPI::reduce( TNL::min( pointsCount, cellsCount ), MPI_MIN );
+      if( minCount == 0 ) {
+         // split the communicator, remove the ranks which did not get a subdomain
+         const int color = (pointsCount > 0 && cellsCount > 0) ? 0 : MPI_UNDEFINED;
+         const MPI_Comm subgroup = MPI::Comm_split( group, color, 0 );
+
+         // set the communication group
+         mesh.setCommunicationGroup( subgroup );
+      }
+      else {
+         // set the communication group
+         mesh.setCommunicationGroup( group );
+      }
    }
 
    virtual VariantVector
diff --git a/src/TNL/Meshes/Readers/TNLReader.h b/src/TNL/Meshes/Readers/TNLReader.h
deleted file mode 100644
index 5121bbea9d878e110753da150d8b250f9e77e7bc..0000000000000000000000000000000000000000
--- a/src/TNL/Meshes/Readers/TNLReader.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
-                          TNL.h  -  description
-                             -------------------
-    begin                : Nov 20, 2016
-    copyright            : (C) 2016 by Tomas Oberhuber et al.
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#pragma once
-
-#include <TNL/String.h>
-#include <TNL/Object.h>
-#include <TNL/Meshes/VTKTraits.h>
-
-namespace TNL {
-namespace Meshes {
-namespace Readers {
-
-class TNLReader
-{
-public:
-   TNLReader() = delete;
-
-   TNLReader( const String& fileName )
-   : fileName( fileName )
-   {}
-
-   bool
-   detectMesh()
-   {
-      this->reset();
-
-      const String objectType = getObjectType( fileName );
-      const std::vector< String > parsedMeshType = parseObjectType( objectType );
-      if( ! parsedMeshType.size() ) {
-         std::cerr << "Unable to parse the mesh type " << meshType << "." << std::endl;
-         return false;
-      }
-
-      meshType = parsedMeshType[ 0 ];
-      if( meshType == "Meshes::Grid" ) {
-         // save parts necessary to determine the mesh type
-         meshDimension = worldDimension = std::atoi( parsedMeshType[ 1 ].getString() );
-         realType = parsedMeshType[ 2 ];
-         globalIndexType = localIndexType = parsedMeshType[ 4 ];
-         // populate entity types (not necessary for GridTypeResolver, but while we're at it...)
-         if( meshDimension == 1 )
-            cellShape = VTK::EntityShape::Line;
-         else if( meshDimension == 2 )
-            cellShape = VTK::EntityShape::Quad;
-         else if( meshDimension == 3 )
-            cellShape = VTK::EntityShape::Hexahedron;
-      }
-      else if( meshType == "Meshes::Mesh" ) {
-         const std::vector< String > parsedMeshConfig = parseObjectType( parsedMeshType[ 1 ] );
-         if( ! parsedMeshConfig.size() ) {
-            std::cerr << "Unable to parse the mesh config type " << parsedMeshType[ 1 ] << "." << std::endl;
-            return false;
-         }
-         if( parsedMeshConfig.size() != 6 ) {
-            std::cerr << "The parsed mesh config type has wrong size (expected 6 elements):" << std::endl;
-            std::cerr << "[ ";
-            for( std::size_t i = 0; i < parsedMeshConfig.size() - 1; i++ )
-               std::cerr << parsedMeshConfig[ i ] << ", ";
-            std::cerr << parsedMeshConfig.back() << " ]" << std::endl;
-            return false;
-         }
-
-         // save parts necessary to determine the mesh type
-         const String topology = parsedMeshConfig[ 1 ];
-         worldDimension = std::atoi( parsedMeshConfig[ 2 ].getString() );
-         realType = parsedMeshConfig[ 3 ];
-         globalIndexType = parsedMeshConfig[ 4 ];
-         localIndexType = parsedMeshConfig[ 5 ];
-
-         if( topology == "TNL::Meshes::Topologies::Edge" )
-            cellShape = VTK::EntityShape::Line;
-         else if( topology == "TNL::Meshes::Topologies::Triangle" )
-            cellShape = VTK::EntityShape::Triangle;
-         else if( topology == "TNL::Meshes::Topologies::Quadrangle" )
-            cellShape = VTK::EntityShape::Quad;
-         else if( topology == "TNL::Meshes::Topologies::Tetrahedron" )
-            cellShape = VTK::EntityShape::Tetra;
-         else if( topology == "TNL::Meshes::Topologies::Hexahedron" )
-            cellShape = VTK::EntityShape::Hexahedron;
-         else {
-            std::cerr << "Detected topology '" << topology << "' is not supported." << std::endl;
-            return false;
-         }
-      }
-      else {
-         std::cerr << "The mesh type " << meshType << " is not supported (yet)." << std::endl;
-         return false;
-      }
-
-      return true;
-   }
-
-   template< typename MeshType >
-   void
-   loadMesh( MeshType& mesh )
-   {
-      mesh.load( fileName );
-   }
-
-   String
-   getMeshType() const
-   {
-      return meshType;
-   }
-
-   int
-   getMeshDimension() const
-   {
-      return meshDimension;
-   }
-
-   int
-   getWorldDimension() const
-   {
-      return worldDimension;
-   }
-
-   VTK::EntityShape
-   getCellShape() const
-   {
-      return cellShape;
-   }
-
-   String
-   getRealType() const
-   {
-      return realType;
-   }
-
-   String
-   getGlobalIndexType() const
-   {
-      return globalIndexType;
-   }
-
-   String
-   getLocalIndexType() const
-   {
-      return localIndexType;
-   }
-
-protected:
-   String fileName;
-   String meshType;
-   int meshDimension = 0;
-   int worldDimension = 0;
-   VTK::EntityShape cellShape = VTK::EntityShape::Vertex;
-   String realType;
-   String globalIndexType;
-   String localIndexType;
-
-   void reset()
-   {
-      meshType = "";
-      meshDimension = worldDimension = 0;
-      cellShape = VTK::EntityShape::Vertex;
-      realType = localIndexType = globalIndexType = "";
-   }
-};
-
-} // namespace Readers
-} // namespace Meshes
-} // namespace TNL
diff --git a/src/TNL/Meshes/Readers/VTIReader.h b/src/TNL/Meshes/Readers/VTIReader.h
new file mode 100644
index 0000000000000000000000000000000000000000..c1ea0cd51f827208e6cea651022e4010b4f91a1a
--- /dev/null
+++ b/src/TNL/Meshes/Readers/VTIReader.h
@@ -0,0 +1,158 @@
+/***************************************************************************
+                          VTIReader.h  -  description
+                             -------------------
+    begin                : Jun 4, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#pragma once
+
+#include <TNL/Meshes/Readers/XMLVTK.h>
+#include <cstdint>
+
+namespace TNL {
+namespace Meshes {
+namespace Readers {
+
+class VTIReader
+: public XMLVTK
+{
+#ifdef HAVE_TINYXML2
+   void readImageData()
+   {
+      // read the required attributes
+      const std::string extent = getAttributeString( datasetElement, "WholeExtent" );
+      const std::string origin = getAttributeString( datasetElement, "Origin" );
+      const std::string spacing = getAttributeString( datasetElement, "Spacing" );
+
+      // check the <Piece> tag
+      using namespace tinyxml2;
+      const XMLElement* piece = getChildSafe( datasetElement, "Piece" );
+      if( piece->NextSiblingElement( "Piece" ) )
+         // ambiguity - throw error, we don't know which piece to parse (or all of them?)
+         throw MeshReaderError( "VTIReader", "the serial ImageData file contains more than one <Piece> element" );
+      const std::string pieceExtent = getAttributeString( piece, "Extent" );
+      if( pieceExtent != extent )
+         throw MeshReaderError( "VTIReader", "the <Piece> element has different extent than <ImageData> ("
+                                             + pieceExtent + " vs " + extent + ")" );
+
+      // parse the extent
+      {
+         std::stringstream ss( extent );
+         gridExtent.resize( 6, 0 );
+         for( int i = 0; i < 6; i++ ) {
+            ss >> gridExtent[i];
+            // check conversion error
+            if( ! ss.good() )
+               throw MeshReaderError( "VTIReader", "invalid extent: not a number: " + extent );
+         }
+         // check remaining characters
+         std::string suffix;
+         ss >> std::ws >> suffix;
+         if( ! suffix.empty() )
+            throw MeshReaderError( "VTIReader", "invalid extent " + extent + ": trailing characters: " + suffix );
+      }
+
+      // parse the origin
+      {
+         std::stringstream ss( origin );
+         gridOrigin.resize( 3 );
+         for( int i = 0; i < 3; i++ ) {
+            ss >> gridOrigin[i];
+            // check conversion error
+            if( ! ss.good() )
+               throw MeshReaderError( "VTIReader", "invalid origin: not a number: " + origin );
+         }
+         // check remaining characters
+         std::string suffix;
+         ss >> std::ws >> suffix;
+         if( ! suffix.empty() )
+            throw MeshReaderError( "VTIReader", "invalid origin " + origin + ": trailing characters: " + suffix );
+      }
+
+      // parse the spacing
+      {
+         std::stringstream ss( spacing );
+         gridSpacing.resize( 3 );
+         for( int i = 0; i < 3; i++ ) {
+            ss >> gridSpacing[i];
+            // check conversion error
+            if( ! ss.good() )
+               throw MeshReaderError( "VTIReader", "invalid spacing: not a number: " + spacing );
+            // check negative numbers
+            if( gridSpacing[i] < 0 )
+               throw MeshReaderError( "VTIReader", "invalid spacing: negative number: " + spacing );
+         }
+         // check remaining characters
+         std::string suffix;
+         ss >> std::ws >> suffix;
+         if( ! suffix.empty() )
+            throw MeshReaderError( "VTIReader", "invalid spacing " + spacing + ": trailing characters: " + suffix );
+      }
+
+      // determine the grid dimension
+      int dim = 0;
+      for( int i = 0; i < 3; i++ )
+         if( gridSpacing[i] > 0 )
+            dim++;
+         else
+            break;
+      worldDimension = meshDimension = dim;
+
+      // populate cellShape (just for completeness, not necessary for GridTypeResolver)
+      if( meshDimension == 1 )
+         cellShape = VTK::EntityShape::Line;
+      else if( meshDimension == 2 )
+         cellShape = VTK::EntityShape::Pixel;
+      else if( meshDimension == 3 )
+         cellShape = VTK::EntityShape::Voxel;
+
+      // RealType is not stored in the VTI file, so just set the default
+      pointsType = "double";
+
+      // set the index type
+      connectivityType = headerType;
+   }
+#endif
+
+public:
+   VTIReader() = default;
+
+   VTIReader( const std::string& fileName )
+   : XMLVTK( fileName )
+   {}
+
+   virtual void detectMesh() override
+   {
+#ifdef HAVE_TINYXML2
+      reset();
+      try {
+         openVTKFile();
+      }
+      catch( const MeshReaderError& ) {
+         reset();
+         throw;
+      }
+
+      // verify file type
+      if( fileType == "ImageData" )
+         readImageData();
+      else
+         throw MeshReaderError( "VTIReader", "the reader cannot read data of the type " + fileType + ". Use a different reader if possible." );
+
+      // indicate success by setting the mesh type
+      meshType = "Meshes::Grid";
+#else
+      throw_no_tinyxml();
+#endif
+   }
+};
+
+} // namespace Readers
+} // namespace Meshes
+} // namespace TNL
diff --git a/src/TNL/Meshes/Readers/VTKReader.h b/src/TNL/Meshes/Readers/VTKReader.h
index d6cbfb3e28784cb246c31e7d3ff492a765279af3..530ef7b46d0e36f62a6a5c4c5362123a0eb0ac7e 100644
--- a/src/TNL/Meshes/Readers/VTKReader.h
+++ b/src/TNL/Meshes/Readers/VTKReader.h
@@ -15,6 +15,7 @@
 #include <fstream>
 #include <sstream>
 #include <vector>
+#include <map>
 
 #include <TNL/Meshes/Readers/MeshReader.h>
 #include <TNL/Endianness.h>
@@ -189,6 +190,12 @@ public:
             }
             offsetsArray.push_back( connectivityArray.size() );
          }
+         else {
+            // skip the entity
+            const std::int32_t subvertices = readValue< std::int32_t >( dataFormat, inputFile );
+            for( int v = 0; v < subvertices; v++ )
+               skipValue( dataFormat, inputFile, "int" );
+         }
       }
 
       // set cell types
@@ -317,6 +324,8 @@ protected:
                // skip the points coordinates
                for( std::int32_t j = 0; j < components * tuples; j++ )
                   skipValue( dataFormat, str, datatype );
+               // skip end of line (or any whitespace)
+               str >> std::ws;
             }
          }
          else if( name == "POINTS" ) {
@@ -327,6 +336,8 @@ protected:
             // skip the values
             for( std::int32_t j = 0; j < 3 * points_count; j++ )
                skipValue( dataFormat, str, datatype );
+            // skip end of line (or any whitespace)
+            str >> std::ws;
          }
          else if( name == "CELLS" ) {
             sectionPositions.insert( {"CELLS", currentPosition} );
@@ -336,6 +347,8 @@ protected:
             // skip the values
             for( std::int32_t j = 0; j < values_count; j++ )
                skipValue( dataFormat, str, "int" );
+            // skip end of line (or any whitespace)
+            str >> std::ws;
          }
          else if( name == "CELL_TYPES" ) {
             sectionPositions.insert( {"CELL_TYPES", currentPosition} );
@@ -346,6 +359,8 @@ protected:
             for( std::int32_t j = 0; j < count; j++ )
                // cell types are stored with great redundancy as int32 in the VTK file
                skipValue( dataFormat, str, "int" );
+            // skip end of line (or any whitespace)
+            str >> std::ws;
          }
          else if( name == "CELL_DATA" || name == "POINT_DATA" ) {
             if( cells_count == 0 || points_count == 0 )
@@ -423,6 +438,8 @@ protected:
                      // skip the points coordinates
                      for( std::int32_t j = 0; j < components * tuples; j++ )
                         skipValue( dataFormat, str, datatype );
+                     // skip end of line (or any whitespace)
+                     str >> std::ws;
                   }
                   continue;
                }
@@ -435,6 +452,8 @@ protected:
                // skip the values
                for( std::int32_t j = 0; j < elements * values_per_element; j++ )
                   skipValue( dataFormat, str, datatype );
+               // skip end of line (or any whitespace)
+               str >> std::ws;
             }
          }
          else
diff --git a/src/TNL/Meshes/Readers/VTUReader.h b/src/TNL/Meshes/Readers/VTUReader.h
index f9c3902d06fb6c8efb0dec7982b94537a743b45d..3a7ce1aaef82ed11e271823466b01640c4ab5d8f 100644
--- a/src/TNL/Meshes/Readers/VTUReader.h
+++ b/src/TNL/Meshes/Readers/VTUReader.h
@@ -89,6 +89,9 @@ class VTUReader
                // check array size
                if( array.size() != NumberOfCells )
                   throw MeshReaderError( "VTUReader", "size of the types data array does not match the NumberOfCells attribute" );
+               // check empty mesh
+               if( array.size() == 0 )
+                  return;
                cellShape = (VTK::EntityShape) array[0];
                meshDimension = getEntityDimension( cellShape );
                // TODO: check only entities of the same dimension (edges, faces and cells separately)
diff --git a/src/TNL/Meshes/Readers/XMLVTK.h b/src/TNL/Meshes/Readers/XMLVTK.h
index 9e2817a17e058abf64dcdf6167a9a4c8b9ca65ac..a898b85bdcb84e36f57ddd367b3229ce65bcba76 100644
--- a/src/TNL/Meshes/Readers/XMLVTK.h
+++ b/src/TNL/Meshes/Readers/XMLVTK.h
@@ -166,6 +166,10 @@ protected:
    VariantVector
    readAsciiBlock( const char* block ) const
    {
+      // handle empty array
+      if( ! block )
+         return std::vector<T> {};
+
       // creating a copy of the block is rather costly, but so is ASCII parsing
       std::stringstream ss;
       ss << block;
@@ -187,6 +191,10 @@ protected:
    VariantVector
    readBinaryBlock( const char* block ) const
    {
+      // handle empty array
+      if( ! block )
+         return std::vector<T> {};
+
       // skip whitespace at the beginning
       while( *block != '\0' && std::isspace( *block ) )
          ++block;
@@ -250,8 +258,6 @@ protected:
    {
       verifyElement( elem, "DataArray" );
       const char* block = elem->GetText();
-      if( ! block )
-         throw MeshReaderError( "XMLVTK", "the DataArray with Name=\"" + arrayName + "\" does not contain any data" );
       const std::string type = getAttributeString( elem, "type" );
       const std::string format = getAttributeString( elem, "format" );
       if( format == "ascii" ) {
@@ -328,13 +334,13 @@ public:
       // load and verify XML
       tinyxml2::XMLError status = dom.LoadFile( fileName.c_str() );
       if( status != XML_SUCCESS )
-         throw MeshReaderError( "XMLVTK", "failed to parse the file as an XML document." );
+         throw MeshReaderError( "XMLVTK", "failed to parse the file " + fileName + " as an XML document." );
 
       // verify root element
       const XMLElement* elem = dom.FirstChildElement();
       verifyElement( elem, "VTKFile" );
       if( elem->NextSibling() )
-         throw MeshReaderError( "XMLVTK", "<VTKFile> is not the only element in the file" );
+         throw MeshReaderError( "XMLVTK", "<VTKFile> is not the only element in the file " + fileName );
 
       // verify byte order
       const std::string systemByteOrder = (isLittleEndian()) ? "LittleEndian" : "BigEndian";
diff --git a/src/TNL/Meshes/Readers/getMeshReader.h b/src/TNL/Meshes/Readers/getMeshReader.h
index 2c2c18a8e3da03a923a62be80629aec81ce6d246..41976dcfd3a65584665423d83a60f37e45ff9221 100644
--- a/src/TNL/Meshes/Readers/getMeshReader.h
+++ b/src/TNL/Meshes/Readers/getMeshReader.h
@@ -12,18 +12,21 @@
 
 #pragma once
 
+#include <memory>
 #include <experimental/filesystem>
 
 #include <TNL/Meshes/Readers/NetgenReader.h>
 #include <TNL/Meshes/Readers/VTKReader.h>
 #include <TNL/Meshes/Readers/VTUReader.h>
+#include <TNL/Meshes/Readers/VTIReader.h>
 #include <TNL/Meshes/Readers/PVTUReader.h>
+#include <TNL/Meshes/Readers/PVTIReader.h>
 
 namespace TNL {
 namespace Meshes {
 namespace Readers {
 
-std::shared_ptr< Readers::MeshReader >
+inline std::shared_ptr< MeshReader >
 getMeshReader( const std::string& fileName,
                const std::string& fileFormat )
 {
@@ -42,14 +45,18 @@ getMeshReader( const std::string& fileName,
       return std::make_shared< Readers::VTKReader >( fileName );
    else if( format == "vtu" )
       return std::make_shared< Readers::VTUReader >( fileName );
+   else if( format == "vti" )
+      return std::make_shared< Readers::VTIReader >( fileName );
    else if( format == "pvtu" )
       return std::make_shared< Readers::PVTUReader >( fileName );
+   else if( format == "pvti" )
+      return std::make_shared< Readers::PVTIReader >( fileName );
 
    if( fileFormat == "auto" )
       std::cerr << "File '" << fileName << "' has unsupported format (based on the file extension): " << format << ".";
    else
       std::cerr << "Unsupported fileFormat parameter: " << fileFormat << ".";
-   std::cerr << " Supported formats are 'vtk', 'vtu', 'pvtu' and 'ng'." << std::endl;
+   std::cerr << " Supported formats are 'ng', 'vtk', 'vtu', 'vti', 'pvtu' and 'pvti'." << std::endl;
    return nullptr;
 }
 
diff --git a/src/TNL/Meshes/Traits.h b/src/TNL/Meshes/Traits.h
new file mode 100644
index 0000000000000000000000000000000000000000..484ed2e52b77c6bbbe6000f3116632b3c504dde4
--- /dev/null
+++ b/src/TNL/Meshes/Traits.h
@@ -0,0 +1,48 @@
+/***************************************************************************
+                          Traits.h  -  description
+                             -------------------
+    begin                : Jun 4, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+#pragma once
+
+#include <type_traits>
+
+#include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
+
+namespace TNL {
+namespace Meshes {
+
+template< typename T >
+class isGrid
+: public std::false_type
+{};
+
+template< int Dimension,
+          typename Real,
+          typename Device,
+          typename Index >
+class isGrid< Grid< Dimension, Real, Device, Index > >
+: public std::true_type
+{};
+
+template< typename T >
+class isDistributedGrid
+: public std::false_type
+{};
+
+template< int Dimension,
+          typename Real,
+          typename Device,
+          typename Index >
+class isDistributedGrid< DistributedMeshes::DistributedMesh< Grid< Dimension, Real, Device, Index > > >
+: public std::true_type
+{};
+
+} // namespace Meshes
+} // namespace TNL
diff --git a/src/TNL/Meshes/TypeResolver/GridTypeResolver.hpp b/src/TNL/Meshes/TypeResolver/GridTypeResolver.hpp
index 69fe4e03fd4fc8a0874aa59f4d4f165eb1e6d4db..0c284ca21757eeccd1efa605bf7df47173bab6b3 100644
--- a/src/TNL/Meshes/TypeResolver/GridTypeResolver.hpp
+++ b/src/TNL/Meshes/TypeResolver/GridTypeResolver.hpp
@@ -170,7 +170,7 @@ resolveTerminate( Reader& reader, Functor&& functor )
 {
    std::cerr << "The mesh type " << TNL::getType< GridType >() << " is disabled in the build configuration." << std::endl;
    return false;
-};
+}
 
 template< typename ConfigTag,
           typename Device >
@@ -183,7 +183,7 @@ GridTypeResolver< ConfigTag, Device >::detail< Reader, Functor >::
 resolveTerminate( Reader& reader, Functor&& functor )
 {
    return std::forward<Functor>(functor)( reader, GridType{} );
-};
+}
 
 } // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.h b/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.h
index a62424ef3946982fcfd61e65e8badf227e985145..726b93e5d5f9a9a461e96b09cfbd5381451af707 100644
--- a/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.h
+++ b/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.h
@@ -33,47 +33,12 @@ resolveAndLoadDistributedMesh( Functor&& functor,
                                const std::string& fileName,
                                const std::string& fileFormat = "auto" );
 
-template< typename MeshConfig,
-          typename Device >
+template< typename Mesh >
 bool
-loadDistributedMesh( Mesh< MeshConfig, Device >& mesh,
-                     DistributedMeshes::DistributedMesh< Mesh< MeshConfig, Device > >& distributedMesh,
+loadDistributedMesh( DistributedMeshes::DistributedMesh< Mesh >& distributedMesh,
                      const std::string& fileName,
                      const std::string& fileFormat = "auto" );
 
-template< typename Problem,
-          typename MeshConfig,
-          typename Device >
-bool
-decomposeMesh( const Config::ParameterContainer& parameters,
-               const std::string& prefix,
-               Mesh< MeshConfig, Device >& mesh,
-               DistributedMeshes::DistributedMesh< Mesh< MeshConfig, Device > >& distributedMesh,
-               Problem& problem );
-
-// overloads for grids
-template< int Dimension,
-          typename Real,
-          typename Device,
-          typename Index >
-bool
-loadDistributedMesh( Grid< Dimension, Real, Device, Index >& mesh,
-                     DistributedMeshes::DistributedMesh< Grid< Dimension, Real, Device, Index > > &distributedMesh,
-                     const std::string& fileName,
-                     const std::string& fileFormat = "auto" );
-
-template< typename Problem,
-          int Dimension,
-          typename Real,
-          typename Device,
-          typename Index >
-bool
-decomposeMesh( const Config::ParameterContainer& parameters,
-               const std::string& prefix,
-               Grid< Dimension, Real, Device, Index >& mesh,
-               DistributedMeshes::DistributedMesh< Grid< Dimension, Real, Device, Index > > &distributedMesh,
-               Problem& problem );
-
 } // namespace Meshes
 } // namespace TNL
 
diff --git a/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.hpp b/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.hpp
index 1cd1ec76e162195b9e340aac12e0ad8022741593..e6d19a9bbdf02c14a6a926fa0f6214648be0a2b3 100644
--- a/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.hpp
+++ b/src/TNL/Meshes/TypeResolver/resolveDistributedMeshType.hpp
@@ -13,8 +13,7 @@
 #include <experimental/filesystem>
 
 #include <TNL/Meshes/TypeResolver/resolveDistributedMeshType.h>
-#include <TNL/Meshes/TypeResolver/MeshTypeResolver.h>
-#include <TNL/Meshes/Readers/PVTUReader.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
 
 namespace TNL {
 namespace Meshes {
@@ -36,37 +35,7 @@ resolveDistributedMeshType( Functor&& functor,
       return std::forward<Functor>(functor)( reader, DistributedMesh{ std::move(localMesh) } );
    };
 
-   namespace fs = std::experimental::filesystem;
-   std::string format = fileFormat;
-   if( format == "auto" ) {
-      format = fs::path(fileName).extension();
-      if( format.length() > 0 )
-         // remove dot from the extension
-         format = format.substr(1);
-   }
-
-   if( format == "pvtu" ) {
-      // FIXME: The XML VTK files don't store the local index type.
-      // The reader has some defaults, but they might be disabled by the BuildConfigTags - in
-      // this case we should use the first enabled type.
-      Readers::PVTUReader reader( fileName );
-      reader.detectMesh();
-      if( reader.getMeshType() == "Meshes::DistributedMesh" ) {
-         return MeshTypeResolver< ConfigTag, Device >::run( static_cast<Readers::MeshReader&>(reader), wrapper );
-      }
-      else {
-         std::cerr << "The mesh type " << reader.getMeshType() << " is not supported in the VTK reader." << std::endl;
-         return false;
-      }
-   }
-   else {
-      if( fileFormat == "auto" )
-         std::cerr << "File '" << fileName << "' has unsupported format (based on the file extension): " << format << ".";
-      else
-         std::cerr << "Unsupported fileFormat parameter: " << fileFormat << ".";
-      std::cerr << " Supported formats are 'pvtu'." << std::endl;
-      return false;
-   }
+   return resolveMeshType< ConfigTag, Device >( wrapper, fileName, fileFormat );
 }
 
 template< typename ConfigTag,
@@ -82,7 +51,12 @@ resolveAndLoadDistributedMesh( Functor&& functor,
       using MeshType = std::decay_t< decltype(mesh) >;
       std::cout << "Loading a mesh from the file " << fileName << " ..." << std::endl;
       try {
-         dynamic_cast<Readers::PVTUReader&>(reader).loadMesh( mesh );
+         if( reader.getMeshType() == "Meshes::DistributedMesh" )
+            dynamic_cast<Readers::PVTUReader&>(reader).loadMesh( mesh );
+         else if( reader.getMeshType() == "Meshes::DistributedGrid" )
+            dynamic_cast<Readers::PVTIReader&>(reader).loadMesh( mesh );
+         else
+            throw std::runtime_error( "Unknown type of a distributed mesh: " + reader.getMeshType() );
       }
       catch( const Meshes::Readers::MeshReaderError& e ) {
          std::cerr << "Failed to load the mesh from the file " << fileName << ". The error is:\n" << e.what() << std::endl;
@@ -93,17 +67,12 @@ resolveAndLoadDistributedMesh( Functor&& functor,
    return resolveDistributedMeshType< ConfigTag, Device >( wrapper, fileName, fileFormat );
 }
 
-template< typename MeshConfig,
-          typename Device >
+template< typename Mesh >
 bool
-loadDistributedMesh( Mesh< MeshConfig, Device >& mesh,
-                     DistributedMeshes::DistributedMesh< Mesh< MeshConfig, Device > >& distributedMesh,
+loadDistributedMesh( DistributedMeshes::DistributedMesh< Mesh >& distributedMesh,
                      const std::string& fileName,
                      const std::string& fileFormat )
 {
-   // TODO: simplify interface, pass only the distributed mesh
-   TNL_ASSERT_EQ( &mesh, &distributedMesh.getLocalMesh(), "mesh is not local mesh of the distributed mesh" );
-
    namespace fs = std::experimental::filesystem;
    std::string format = fileFormat;
    if( format == "auto" ) {
@@ -118,87 +87,20 @@ loadDistributedMesh( Mesh< MeshConfig, Device >& mesh,
       reader.loadMesh( distributedMesh );
       return true;
    }
+   else if( format == "pvti" ) {
+      Readers::PVTIReader reader( fileName );
+      reader.loadMesh( distributedMesh );
+      return true;
+   }
    else {
       if( fileFormat == "auto" )
          std::cerr << "File '" << fileName << "' has unsupported format (based on the file extension): " << format << ".";
       else
          std::cerr << "Unsupported fileFormat parameter: " << fileFormat << ".";
-      std::cerr << " Supported formats are 'pvtu'." << std::endl;
+      std::cerr << " Supported formats are 'pvtu' and 'pvti'." << std::endl;
       return false;
    }
 }
 
-template< typename Problem,
-          typename MeshConfig,
-          typename Device >
-bool
-decomposeMesh( const Config::ParameterContainer& parameters,
-               const std::string& prefix,
-               Mesh< MeshConfig, Device >& mesh,
-               DistributedMeshes::DistributedMesh< Mesh< MeshConfig, Device > >& distributedMesh,
-               Problem& problem )
-{
-   std::cerr << "Distributed Mesh is not supported yet, only Distributed Grid is supported.";
-   return false;
-}
-
-// overloads for grids
-template< int Dimension,
-          typename Real,
-          typename Device,
-          typename Index >
-bool
-loadDistributedMesh( Grid< Dimension, Real, Device, Index >& mesh,
-                     DistributedMeshes::DistributedMesh< Grid< Dimension, Real, Device, Index > > &distributedMesh,
-                     const std::string& fileName,
-                     const std::string& fileFormat )
-{
-   std::cout << "Loading a global mesh from the file " << fileName << "...";
-   Grid< Dimension, Real, Device, Index > globalGrid;
-   try
-   {
-      globalGrid.load( fileName );
-   }
-   catch(...)
-   {
-      std::cerr << std::endl;
-      std::cerr << "I am not able to load the global mesh from the file " << fileName << "." << std::endl;
-      return false;
-   }
-   std::cout << " [ OK ] " << std::endl;
-
-   typename Meshes::DistributedMeshes::DistributedMesh<Grid< Dimension, Real, Device, Index >>::SubdomainOverlapsType overlap;
-   distributedMesh.setGlobalGrid( globalGrid );
-   distributedMesh.setupGrid(mesh);
-   return true;
-}
-
-template< typename Problem,
-          int Dimension,
-          typename Real,
-          typename Device,
-          typename Index >
-bool
-decomposeMesh( const Config::ParameterContainer& parameters,
-               const std::string& prefix,
-               Grid< Dimension, Real, Device, Index >& mesh,
-               DistributedMeshes::DistributedMesh< Grid< Dimension, Real, Device, Index > > &distributedMesh,
-               Problem& problem )
-{
-   using GridType = Grid< Dimension, Real, Device, Index >;
-   using DistributedGridType = DistributedMeshes::DistributedMesh< GridType >;
-   using SubdomainOverlapsType = typename DistributedGridType::SubdomainOverlapsType;
-
-   SubdomainOverlapsType lower( 0 ), upper( 0 );
-   distributedMesh.setOverlaps( lower, upper );
-   distributedMesh.setupGrid( mesh );
-
-   problem.getSubdomainOverlaps( parameters, prefix, mesh, lower, upper  );
-   distributedMesh.setOverlaps( lower, upper );
-   distributedMesh.setupGrid( mesh );
-
-   return true;
-}
-
 } // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/TypeResolver/resolveMeshType.h b/src/TNL/Meshes/TypeResolver/resolveMeshType.h
index 6386a511e1e77511a724e829c6daa3629d8fff52..2e8df25d8b5ba03c047dbc2f4e3e9e2f31e82d07 100644
--- a/src/TNL/Meshes/TypeResolver/resolveMeshType.h
+++ b/src/TNL/Meshes/TypeResolver/resolveMeshType.h
@@ -73,10 +73,9 @@ resolveAndLoadMesh( Functor&& functor,
  * should be avoided. Use \ref resolveAndLoadMesh instead to reuse the mesh
  * reader instance created in \ref resolveMeshType.
  */
-template< typename MeshConfig,
-          typename Device >
+template< typename Mesh >
 bool
-loadMesh( Mesh< MeshConfig, Device >& mesh,
+loadMesh( Mesh& mesh,
           const std::string& fileName,
           const std::string& fileFormat = "auto" );
 
@@ -86,15 +85,6 @@ loadMesh( Mesh< MeshConfig, Devices::Cuda >& mesh,
           const std::string& fileName,
           const std::string& fileFormat = "auto" );
 
-template< int Dimension,
-          typename Real,
-          typename Device,
-          typename Index >
-bool
-loadMesh( Grid< Dimension, Real, Device, Index >& grid,
-          const std::string& fileName,
-          const std::string& fileFormat = "auto" );
-
 } // namespace Meshes
 } // namespace TNL
 
diff --git a/src/TNL/Meshes/TypeResolver/resolveMeshType.hpp b/src/TNL/Meshes/TypeResolver/resolveMeshType.hpp
index 397e469dde018e705fb430c905fa01a74fb4bcd3..0f457a75d8422e0d1fc7d8f10000db49713e9ab0 100644
--- a/src/TNL/Meshes/TypeResolver/resolveMeshType.hpp
+++ b/src/TNL/Meshes/TypeResolver/resolveMeshType.hpp
@@ -15,10 +15,7 @@
 #include <TNL/Meshes/TypeResolver/resolveMeshType.h>
 #include <TNL/Meshes/TypeResolver/GridTypeResolver.h>
 #include <TNL/Meshes/TypeResolver/MeshTypeResolver.h>
-#include <TNL/Meshes/Readers/TNLReader.h>
-#include <TNL/Meshes/Readers/NetgenReader.h>
-#include <TNL/Meshes/Readers/VTKReader.h>
-#include <TNL/Meshes/Readers/VTUReader.h>
+#include <TNL/Meshes/Readers/getMeshReader.h>
 
 namespace TNL {
 namespace Meshes {
@@ -33,74 +30,18 @@ resolveMeshType( Functor&& functor,
 {
    std::cout << "Detecting mesh from file " << fileName << " ..." << std::endl;
 
-   namespace fs = std::experimental::filesystem;
-   std::string format = fileFormat;
-   if( format == "auto" ) {
-      format = fs::path(fileName).extension();
-      if( format.length() > 0 )
-         // remove dot from the extension
-         format = format.substr(1);
-   }
+   std::shared_ptr< Readers::MeshReader > reader = Readers::getMeshReader( fileName, fileFormat );
+   if( reader == nullptr )
+      return false;
 
-   // TODO: when TNLReader is gone, use the MeshReader type instead of a template parameter in the mesh type resolver (and remove static_casts in this function)
-   if( format == "tnl" ) {
-      Readers::TNLReader reader( fileName );
-      if( ! reader.detectMesh() )
-         return false;
-      if( reader.getMeshType() == "Meshes::Grid" )
-         return GridTypeResolver< ConfigTag, Device >::run( reader, functor );
-      else if( reader.getMeshType() == "Meshes::Mesh" )
-         return MeshTypeResolver< ConfigTag, Device >::run( reader, functor );
-      else {
-         std::cerr << "The mesh type " << reader.getMeshType() << " is not supported in the TNL reader." << std::endl;
-         return false;
-      }
-   }
-   else if( format == "ng" ) {
-      // FIXME: The Netgen files don't store the real, global index and local index types.
-      // The reader has some defaults, but they might be disabled by the BuildConfigTags - in
-      // this case we should use the first enabled type.
-      Readers::NetgenReader reader( fileName );
-      reader.detectMesh();
-      if( reader.getMeshType() == "Meshes::Mesh" )
-         return MeshTypeResolver< ConfigTag, Device >::run( static_cast<Readers::MeshReader&>(reader), functor );
-      else {
-         std::cerr << "The mesh type " << reader.getMeshType() << " is not supported in the Netgen reader." << std::endl;
-         return false;
-      }
-   }
-   else if( format == "vtk" ) {
-      // FIXME: The VTK files don't store the global and local index types.
-      // The reader has some defaults, but they might be disabled by the BuildConfigTags - in
-      // this case we should use the first enabled type.
-      Readers::VTKReader reader( fileName );
-      reader.detectMesh();
-      if( reader.getMeshType() == "Meshes::Mesh" )
-         return MeshTypeResolver< ConfigTag, Device >::run( static_cast<Readers::MeshReader&>(reader), functor );
-      else {
-         std::cerr << "The mesh type " << reader.getMeshType() << " is not supported in the VTK reader." << std::endl;
-         return false;
-      }
-   }
-   else if( format == "vtu" ) {
-      // FIXME: The XML VTK files don't store the local index type.
-      // The reader has some defaults, but they might be disabled by the BuildConfigTags - in
-      // this case we should use the first enabled type.
-      Readers::VTUReader reader( fileName );
-      reader.detectMesh();
-      if( reader.getMeshType() == "Meshes::Mesh" )
-         return MeshTypeResolver< ConfigTag, Device >::run( static_cast<Readers::MeshReader&>(reader), functor );
-      else {
-         std::cerr << "The mesh type " << reader.getMeshType() << " is not supported in the VTK reader." << std::endl;
-         return false;
-      }
-   }
+   reader->detectMesh();
+
+   if( reader->getMeshType() == "Meshes::Grid" || reader->getMeshType() == "Meshes::DistributedGrid" )
+      return GridTypeResolver< ConfigTag, Device >::run( *reader, functor );
+   else if( reader->getMeshType() == "Meshes::Mesh" || reader->getMeshType() == "Meshes::DistributedMesh" )
+      return MeshTypeResolver< ConfigTag, Device >::run( *reader, functor );
    else {
-      if( fileFormat == "auto" )
-         std::cerr << "File '" << fileName << "' has unsupported format (based on the file extension): " << format << ".";
-      else
-         std::cerr << "Unsupported fileFormat parameter: " << fileFormat << ".";
-      std::cerr << " Supported formats are 'tnl', 'vtk', 'vtu' and 'ng'." << std::endl;
+      std::cerr << "The mesh type " << reader->getMeshType() << " is not supported." << std::endl;
       return false;
    }
 }
@@ -129,47 +70,20 @@ resolveAndLoadMesh( Functor&& functor,
    return resolveMeshType< ConfigTag, Device >( wrapper, fileName, fileFormat );
 }
 
-template< typename MeshConfig,
-          typename Device >
+template< typename Mesh >
 bool
-loadMesh( Mesh< MeshConfig, Device >& mesh,
+loadMesh( Mesh& mesh,
           const std::string& fileName,
           const std::string& fileFormat )
 {
    std::cout << "Loading a mesh from the file " << fileName << " ..." << std::endl;
 
-   namespace fs = std::experimental::filesystem;
-   std::string format = fileFormat;
-   if( format == "auto" ) {
-      format = fs::path(fileName).extension();
-      if( format.length() > 0 )
-         // remove dot from the extension
-         format = format.substr(1);
-   }
+   std::shared_ptr< Readers::MeshReader > reader = Readers::getMeshReader( fileName, fileFormat );
+   if( reader == nullptr )
+      return false;
 
    try {
-      if( format == "tnl" )
-         mesh.load( fileName );
-      else if( format == "ng" ) {
-         Readers::NetgenReader reader( fileName );
-         reader.loadMesh( mesh );
-      }
-      else if( format == "vtk" ) {
-         Readers::VTKReader reader( fileName );
-         reader.loadMesh( mesh );
-      }
-      else if( format == "vtu" ) {
-         Readers::VTUReader reader( fileName );
-         reader.loadMesh( mesh );
-      }
-      else {
-         if( fileFormat == "auto" )
-            std::cerr << "File '" << fileName << "' has unsupported format (based on the file extension): " << format << ".";
-         else
-            std::cerr << "Unsupported fileFormat parameter: " << fileFormat << ".";
-         std::cerr << " Supported formats are 'tnl', 'vtk', 'vtu' and 'ng'." << std::endl;
-         return false;
-      }
+      reader->loadMesh( mesh );
    }
    catch( const Meshes::Readers::MeshReaderError& e ) {
       std::cerr << "Failed to load the mesh from the file " << fileName << ". The error is:\n" << e.what() << std::endl;
@@ -192,26 +106,5 @@ loadMesh( Mesh< MeshConfig, Devices::Cuda >& mesh,
    return true;
 }
 
-// overload for grids
-template< int Dimension,
-          typename Real,
-          typename Device,
-          typename Index >
-bool
-loadMesh( Grid< Dimension, Real, Device, Index >& grid,
-          const std::string& fileName,
-          const std::string& fileFormat )
-{
-   std::cout << "Loading a grid from the file " << fileName << "..." << std::endl;
-   try {
-      grid.load( fileName );
-      return true;
-   }
-   catch(...) {
-      std::cerr << "I am not able to load the grid from the file " << fileName << "." << std::endl;
-      return false;
-   }
-}
-
 } // namespace Meshes
 } // namespace TNL
diff --git a/src/TNL/Meshes/Writers/NetgenWriter.h b/src/TNL/Meshes/Writers/NetgenWriter.h
index 860034dcda28b1f56565a2f6908b57563526e354..c247c0ff48a31ef300e4c467423fc0833894649e 100644
--- a/src/TNL/Meshes/Writers/NetgenWriter.h
+++ b/src/TNL/Meshes/Writers/NetgenWriter.h
@@ -59,7 +59,8 @@ public:
          for( int cellVertexIdx = 0;
               cellVertexIdx < meshDimension + 1;
               cellVertexIdx++ )
-            str << " " << cell.template getSubentityIndex< 0 >( cellVertexIdx );
+            // note: Netgen has 1-based indices
+            str << " " << cell.template getSubentityIndex< 0 >( cellVertexIdx ) + 1;
          str << "\n";
       }
    }
diff --git a/src/TNL/Meshes/Writers/PVTIWriter.h b/src/TNL/Meshes/Writers/PVTIWriter.h
new file mode 100644
index 0000000000000000000000000000000000000000..ce2fe60572dcd84fe86deef3f09d9873d629d10b
--- /dev/null
+++ b/src/TNL/Meshes/Writers/PVTIWriter.h
@@ -0,0 +1,125 @@
+/***************************************************************************
+                          PVTIWriter.h  -  description
+                             -------------------
+    begin                : Jun 25, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#pragma once
+
+#include <TNL/Meshes/Writers/VTIWriter.h>
+#include <TNL/Meshes/DistributedMeshes/DistributedGrid.h>
+
+namespace TNL {
+namespace Meshes {
+namespace Writers {
+
+// NOTE: Grid should be the local grid type, not DistributedMesh<Grid<...>>
+template< typename Grid >
+class PVTIWriter
+{
+   static_assert( Grid::getMeshDimension() <= 3, "The VTK format supports only 1D, 2D and 3D meshes." );
+
+//   using HeaderType = std::uint64_t;
+   // LOL, VTK does not support signed header types (but the GridTypeResolver maps unsigned types to signed, so we are good)
+   using HeaderType = std::make_unsigned_t< typename Grid::GlobalIndexType >;
+public:
+   using MeshRealType = typename Grid::RealType;
+   using IndexType = typename Grid::GlobalIndexType;
+
+   PVTIWriter() = delete;
+
+   PVTIWriter( std::ostream& str, VTK::FileFormat format = VTK::FileFormat::zlib_compressed )
+   : str(str.rdbuf()), format(format)
+   {}
+
+   // If desired, cycle and time of the simulation can put into the file. This follows the instructions at
+   // http://www.visitusers.org/index.php?title=Time_and_Cycle_in_VTK_files
+   void writeMetadata( std::int32_t cycle = -1, double time = -1 );
+
+   void writeImageData( const DistributedMeshes::DistributedMesh< Grid >& distributedMesh );
+
+   void writeImageData( const Grid& globalGrid,
+                        const unsigned GhostLevel = 0,
+                        const unsigned MinCommonVertices = 0 );
+
+   // Only for compatibility with VTUWriter - calls writeImageData, the EntityDimension is unused
+   template< int EntityDimension = Grid::getMeshDimension() >
+   void writeEntities( const DistributedMeshes::DistributedMesh< Grid >& distributedMesh );
+
+   // Only for compatibility with VTUWriter - calls writeImageData, the EntityDimension is unused
+   template< int EntityDimension = Grid::getMeshDimension() >
+   void writeEntities( const Grid& grid,
+                       const unsigned GhostLevel = 0,
+                       const unsigned MinCommonVertices = 0 );
+
+   template< typename ValueType >
+   void writePPointData( const String& name,
+                         const int numberOfComponents = 1 );
+
+   template< typename ValueType >
+   void writePCellData( const String& name,
+                        const int numberOfComponents = 1 );
+
+   template< typename ValueType >
+   void writePDataArray( const String& name,
+                         const int numberOfComponents = 1 );
+
+   // add a single piece and return its source path
+   // (useful for sequential writing, e.g. from tnl-decompose-grid)
+   std::string addPiece( const String& mainFileName,
+                         const unsigned subdomainIndex,
+                         const typename Grid::CoordinatesType& globalBegin,
+                         const typename Grid::CoordinatesType& globalEnd );
+
+   // add all pieces and return the source path for the current rank
+   // (useful for parallel writing)
+   std::string addPiece( const String& mainFileName,
+                         const DistributedMeshes::DistributedMesh< Grid >& distributedMesh );
+
+   ~PVTIWriter();
+
+protected:
+   void writeHeader();
+
+   void writeFooter();
+
+   std::ostream str;
+
+   VTK::FileFormat format;
+
+   // indicator if the <VTKFile> tag is open
+   bool vtkfileOpen = false;
+
+   // auxiliary holder for metadata (writeMetadata should be callable before
+   // writeEntities to match the VTU format, but the <ImageData> element can be
+   // opened only from writeEntities)
+   std::stringstream metadata;
+
+   // indicator if the <PImageData> tag is open
+   bool pImageDataOpen = false;
+
+   // indicators if a <PCellData> tag is open or closed
+   bool pCellDataOpen = false;
+   bool pCellDataClosed = false;
+
+   // indicators if a <PPointData> tag is open or closed
+   bool pPointDataOpen = false;
+   bool pPointDataClosed = false;
+
+   void openPCellData();
+   void closePCellData();
+   void openPPointData();
+   void closePPointData();
+};
+
+} // namespace Writers
+} // namespace Meshes
+} // namespace TNL
+
+#include <TNL/Meshes/Writers/PVTIWriter.hpp>
diff --git a/src/TNL/Meshes/Writers/PVTIWriter.hpp b/src/TNL/Meshes/Writers/PVTIWriter.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9fa1293fe745081cd4559ccf1000f08eed012bf1
--- /dev/null
+++ b/src/TNL/Meshes/Writers/PVTIWriter.hpp
@@ -0,0 +1,327 @@
+/***************************************************************************
+                          PVTIWriter.hpp  -  description
+                             -------------------
+    begin                : Jun 25, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#pragma once
+
+#include <experimental/filesystem>
+
+#include <TNL/Meshes/Writers/PVTIWriter.h>
+
+namespace TNL {
+namespace Meshes {
+namespace Writers {
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::writeMetadata( int cycle, double time )
+{
+   if( ! vtkfileOpen )
+      writeHeader();
+   if( pImageDataOpen )
+      throw std::logic_error("The <PImageData> tag is already open, but writeMetadata should be called before writeImageData.");
+
+   if( cycle >= 0 || time >= 0 )
+      metadata << "<FieldData>\n";
+
+   if( cycle >= 0 ) {
+      metadata << "<DataArray type=\"Int32\" Name=\"CYCLE\" NumberOfTuples=\"1\" format=\"ascii\">"
+          << cycle << "</DataArray>\n";
+   }
+   if( time >= 0 ) {
+      metadata.precision( std::numeric_limits< double >::digits10 );
+      metadata << "<DataArray type=\"Float64\" Name=\"TIME\" NumberOfTuples=\"1\" format=\"ascii\">"
+          << time << "</DataArray>\n";
+   }
+
+   if( cycle >= 0 || time >= 0 )
+      metadata << "</FieldData>\n";
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::writeImageData( const DistributedMeshes::DistributedMesh< Grid >& distributedGrid )
+{
+   writeImageData( distributedGrid.getGlobalGrid(), distributedGrid.getGhostLevels() ); // TODO: ..., Grid::Config::dualGraphMinCommonVertices );
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::writeImageData( const Grid& globalGrid,
+                                    const unsigned GhostLevel,
+                                    const unsigned MinCommonVertices )
+{
+   if( ! vtkfileOpen )
+      writeHeader();
+   if( pImageDataOpen )
+      throw std::logic_error("The <PImageData> tag is already open.");
+
+   std::stringstream extent, origin, spacing;
+
+   auto dims = globalGrid.getDimensions();
+   for( IndexType j = 0; j < dims.getSize(); j++ )
+      extent << "0 " << dims[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = dims.getSize(); j < 3; j++ )
+      extent << "0 0 ";
+
+   auto o = globalGrid.getOrigin();
+   for( IndexType j = 0; j < o.getSize(); j++ )
+      origin << std::scientific << o[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = o.getSize(); j < 3; j++ )
+      origin << 0 << " ";
+
+   auto h = globalGrid.getSpaceSteps();
+   for( IndexType j = 0; j < h.getSize(); j++ )
+      spacing << std::scientific << h[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = h.getSize(); j < 3; j++ )
+      spacing << 0 << " ";
+
+   str << "<PImageData"
+       << " WholeExtent=\"" << extent.str() << "\""
+       << " Origin=\"" << origin.str() << "\""
+       << " Spacing=\"" << spacing.str() << "\""
+       << " GhostLevel=\"" << GhostLevel << "\"";
+   if( MinCommonVertices > 0 )
+      str << " MinCommonVertices=\"" << MinCommonVertices << "\"";
+   str << ">\n";
+   pImageDataOpen = true;
+
+   // write metadata if present
+   if( ! metadata.str().empty() ) {
+      str << metadata.str();
+      metadata.str() = "";
+   }
+}
+
+template< typename Grid >
+   template< int EntityDimension >
+void
+PVTIWriter< Grid >::writeEntities( const DistributedMeshes::DistributedMesh< Grid >& distributedMesh )
+{
+   writeImageData( distributedMesh );
+}
+
+template< typename Grid >
+   template< int EntityDimension >
+void
+PVTIWriter< Grid >::writeEntities( const Grid& grid,
+                                   const unsigned GhostLevel,
+                                   const unsigned MinCommonVertices )
+{
+   writeImageData( grid, GhostLevel, MinCommonVertices );
+}
+
+template< typename Grid >
+   template< typename ValueType >
+void
+PVTIWriter< Grid >::writePPointData( const String& name,
+                                     const int numberOfComponents )
+{
+   if( ! vtkfileOpen )
+      throw std::logic_error("The VTKFile has not been opened yet - call writeEntities first.");
+   openPPointData();
+   writePDataArray< ValueType >( name, numberOfComponents );
+}
+
+template< typename Grid >
+   template< typename ValueType >
+void
+PVTIWriter< Grid >::writePCellData( const String& name,
+                                    const int numberOfComponents )
+{
+   if( ! vtkfileOpen )
+      throw std::logic_error("The VTKFile has not been opened yet - call writeEntities first.");
+   openPCellData();
+   writePDataArray< ValueType >( name, numberOfComponents );
+}
+
+template< typename Grid >
+   template< typename ValueType >
+void
+PVTIWriter< Grid >::writePDataArray( const String& name,
+                                     const int numberOfComponents )
+{
+   if( numberOfComponents != 0 && numberOfComponents != 1 && numberOfComponents != 3 )
+      throw std::logic_error("Unsupported numberOfComponents parameter: " + std::to_string(numberOfComponents));
+
+   str << "<PDataArray type=\"" << VTK::getTypeName( ValueType{} ) << "\" ";
+   str << "Name=\"" << name << "\" ";
+   str << "NumberOfComponents=\"" << numberOfComponents << "\"/>\n";
+}
+
+template< typename Grid >
+std::string
+PVTIWriter< Grid >::addPiece( const String& mainFileName,
+                              const unsigned subdomainIndex,
+                              const typename Grid::CoordinatesType& globalBegin,
+                              const typename Grid::CoordinatesType& globalEnd )
+{
+   if( ! mainFileName.endsWith( ".pvti" ) )
+      throw std::logic_error("The mainFileName parameter must be the name of the "
+                             ".pvti file (i.e., it must have the .pvti suffix).");
+
+   // close PCellData and PPointData sections
+   closePCellData();
+   closePPointData();
+
+   // prepare the extent
+   std::stringstream extent;
+   for( IndexType j = 0; j < Grid::getMeshDimension(); j++ )
+      extent << globalBegin[ j ] <<  " " << globalEnd[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = Grid::getMeshDimension(); j < 3; j++ )
+      extent << "0 0 ";
+
+   namespace fs = std::experimental::filesystem;
+
+   // get the basename of the main file (filename without extension)
+   const fs::path mainPath = mainFileName.getString();
+   const fs::path basename = mainPath.stem();
+
+   // create subdirectory for subdomains
+   const fs::path subdirectory = mainPath.parent_path() / basename;
+   fs::create_directory( subdirectory );
+
+   // write <Piece> tag
+   const std::string subfile = "subdomain." + std::to_string(subdomainIndex) + ".vti";
+   const std::string source = basename / subfile;
+   str << "<Piece Extent=\"" << extent.str() << "\" Source=\"" << source << "\"/>\n";
+
+   // return subfile path
+   return subdirectory / subfile;
+}
+
+template< typename Grid >
+std::string
+PVTIWriter< Grid >::addPiece( const String& mainFileName,
+                              const DistributedMeshes::DistributedMesh< Grid >& distributedMesh )
+{
+   const MPI_Comm group = distributedMesh.getCommunicationGroup();
+   const typename Grid::CoordinatesType& globalBegin = distributedMesh.getGlobalBegin() - distributedMesh.getLowerOverlap();
+   const typename Grid::CoordinatesType& globalEnd = globalBegin + distributedMesh.getLocalSize() + distributedMesh.getUpperOverlap();
+
+   // exchange globalBegin and globalEnd among the ranks
+   const int nproc = MPI::GetSize( group );
+   typename Grid::CoordinatesType beginsForScatter[ nproc ];
+   typename Grid::CoordinatesType endsForScatter[ nproc ];
+   for( int i = 0; i < nproc; i++ ) {
+      beginsForScatter[ i ] = globalBegin;
+      endsForScatter[ i ] = globalEnd;
+   }
+   typename Grid::CoordinatesType globalBegins[ nproc ];
+   typename Grid::CoordinatesType globalEnds[ nproc ];
+   // NOTE: exchanging general data types does not work with MPI
+   //MPI::Alltoall( beginsForScatter, 1, globalBegins, 1, group );
+   //MPI::Alltoall( endsForScatter, 1, globalEnds, 1, group );
+   MPI::Alltoall( (char*) beginsForScatter, sizeof(typename Grid::CoordinatesType), (char*) globalBegins, sizeof(typename Grid::CoordinatesType), group );
+   MPI::Alltoall( (char*) endsForScatter, sizeof(typename Grid::CoordinatesType), (char*) globalEnds, sizeof(typename Grid::CoordinatesType), group );
+
+   // add pieces for all ranks, return the source for the current rank
+   std::string source;
+   for( int i = 0; i < MPI::GetSize( group ); i++ ) {
+      const std::string s = addPiece( mainFileName, i, globalBegins[ i ], globalEnds[ i ] );
+      if( i == MPI::GetRank( group ) )
+         source = s;
+   }
+   return source;
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::writeHeader()
+{
+   str << "<?xml version=\"1.0\"?>\n";
+   str << "<VTKFile type=\"PImageData\" version=\"1.0\"";
+   if( isLittleEndian() )
+      str << " byte_order=\"LittleEndian\"";
+   else
+      str << " byte_order=\"BigEndian\"";
+   str << " header_type=\"" << VTK::getTypeName( HeaderType{} ) << "\"";
+#ifdef HAVE_ZLIB
+   if( format == VTK::FileFormat::zlib_compressed )
+      str << " compressor=\"vtkZLibDataCompressor\"";
+#endif
+   str << ">\n";
+
+   vtkfileOpen = true;
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::writeFooter()
+{
+   closePCellData();
+   closePPointData();
+   str << "</PImageData>\n";
+   str << "</VTKFile>\n";
+}
+
+template< typename Grid >
+PVTIWriter< Grid >::~PVTIWriter()
+{
+   if( vtkfileOpen )
+      writeFooter();
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::openPCellData()
+{
+   if( pCellDataClosed )
+      throw std::logic_error("The <PCellData> tag has already been closed.");
+   closePPointData();
+   if( ! pCellDataOpen ) {
+      str << "<PCellData>\n";
+      pCellDataOpen = true;
+   }
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::closePCellData()
+{
+   if( pCellDataOpen ) {
+      str << "</PCellData>\n";
+      pCellDataClosed = true;
+      pCellDataOpen = false;
+   }
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::openPPointData()
+{
+   if( pPointDataClosed )
+      throw std::logic_error("The <PPointData> tag has already been closed.");
+   closePCellData();
+   if( ! pPointDataOpen ) {
+      str << "<PPointData>\n";
+      pPointDataOpen = true;
+   }
+}
+
+template< typename Grid >
+void
+PVTIWriter< Grid >::closePPointData()
+{
+   if( pPointDataOpen ) {
+      str << "</PPointData>\n";
+      pPointDataClosed = true;
+      pPointDataOpen = false;
+   }
+}
+
+} // namespace Writers
+} // namespace Meshes
+} // namespace TNL
diff --git a/src/TNL/Meshes/Writers/VTIWriter.h b/src/TNL/Meshes/Writers/VTIWriter.h
new file mode 100644
index 0000000000000000000000000000000000000000..55bba8611de41b73320c8601b28cfaf740eca76e
--- /dev/null
+++ b/src/TNL/Meshes/Writers/VTIWriter.h
@@ -0,0 +1,124 @@
+/***************************************************************************
+                          VTIWriter.h  -  description
+                             -------------------
+    begin                : Jun 3, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#pragma once
+
+#include <type_traits>
+
+#include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/VTKTraits.h>
+
+namespace TNL {
+namespace Meshes {
+namespace Writers {
+
+template< typename Mesh >
+class VTIWriter
+{
+   static_assert( Mesh::getMeshDimension() <= 3, "The VTK format supports only 1D, 2D and 3D meshes." );
+
+//   using HeaderType = std::uint64_t;
+   // LOL, VTK does not support signed header types (but the GridTypeResolver maps unsigned types to signed, so we are good)
+   using HeaderType = std::make_unsigned_t< typename Mesh::GlobalIndexType >;
+public:
+   using MeshRealType = typename Mesh::RealType;
+   using IndexType = typename Mesh::GlobalIndexType;
+
+   VTIWriter() = delete;
+
+   VTIWriter( std::ostream& str, VTK::FileFormat format = VTK::FileFormat::zlib_compressed )
+   : str(str.rdbuf()), format(format)
+   {}
+
+   // If desired, cycle and time of the simulation can put into the file. This follows the instructions at
+   // http://www.visitusers.org/index.php?title=Time_and_Cycle_in_VTK_files
+   void writeMetadata( std::int32_t cycle = -1, double time = -1 );
+
+   // low-level writing method (used also when writing a subdomain for a PVTI dataset)
+   void writeImageData( const typename Mesh::PointType& origin,
+                        const typename Mesh::CoordinatesType& begin,
+                        const typename Mesh::CoordinatesType& end,
+                        const typename Mesh::PointType& spaceSteps );
+
+   void writeImageData( const Mesh& mesh );
+
+   // Only for compatibility with VTUWriter - calls writeImageData, the EntityDimension is unused
+   template< int EntityDimension = Mesh::getMeshDimension() >
+   void writeEntities( const Mesh& mesh );
+
+   template< typename Array >
+   void writePointData( const Array& array,
+                        const String& name,
+                        const int numberOfComponents = 1 );
+
+   template< typename Array >
+   void writeCellData( const Array& array,
+                       const String& name,
+                       const int numberOfComponents = 1 );
+
+   template< typename Array >
+   void writeDataArray( const Array& array,
+                        const String& name,
+                        const int numberOfComponents = 1 );
+
+   ~VTIWriter();
+
+protected:
+   void writeHeader();
+
+   void writeFooter();
+
+   std::ostream str;
+
+   VTK::FileFormat format;
+
+   // number of points written to the file
+   IndexType pointsCount = 0;
+
+   // number of cells (in the VTK sense) written to the file
+   IndexType cellsCount = 0;
+
+   // indicator if the <VTKFile> tag is open
+   bool vtkfileOpen = false;
+
+   // auxiliary holder for metadata (writeMetadata should be callable before
+   // writeEntities to match the VTU format, but the <ImageData> element can be
+   // opened only from writeEntities)
+   std::stringstream metadata;
+
+   // indicator if the <ImageData> tag is open
+   bool imageDataOpen = false;
+
+   // indicator if a <Piece> tag is open
+   bool pieceOpen = false;
+
+   // indicators if a <CellData> tag is open or closed
+   bool cellDataOpen = false;
+   bool cellDataClosed = false;
+
+   // indicators if a <PointData> tag is open or closed
+   bool pointDataOpen = false;
+   bool pointDataClosed = false;
+
+   void openCellData();
+   void closeCellData();
+   void openPointData();
+   void closePointData();
+
+   void closePiece();
+};
+
+} // namespace Writers
+} // namespace Meshes
+} // namespace TNL
+
+#include <TNL/Meshes/Writers/VTIWriter.hpp>
diff --git a/src/TNL/Meshes/Writers/VTIWriter.hpp b/src/TNL/Meshes/Writers/VTIWriter.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..72824720558dea8f14e279f5f9d1b023b54fe4ed
--- /dev/null
+++ b/src/TNL/Meshes/Writers/VTIWriter.hpp
@@ -0,0 +1,308 @@
+/***************************************************************************
+                          VTIWriter.hpp  -  description
+                             -------------------
+    begin                : Jun 3, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#pragma once
+
+#include <limits>
+
+#include <TNL/Meshes/Writers/VTIWriter.h>
+#include <TNL/Endianness.h>
+#include <TNL/base64.h>
+#include <stdexcept>
+#ifdef HAVE_ZLIB
+   #include <TNL/zlib_compression.h>
+#endif
+
+namespace TNL {
+namespace Meshes {
+namespace Writers {
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::writeMetadata( int cycle, double time )
+{
+   if( ! vtkfileOpen )
+      writeHeader();
+   if( imageDataOpen )
+      throw std::logic_error("The <ImageData> tag is already open, but writeMetadata should be called before writeImageData.");
+
+   if( cycle >= 0 || time >= 0 )
+      metadata << "<FieldData>\n";
+
+   if( cycle >= 0 ) {
+      metadata << "<DataArray type=\"Int32\" Name=\"CYCLE\" NumberOfTuples=\"1\" format=\"ascii\">"
+               << cycle << "</DataArray>\n";
+   }
+   if( time >= 0 ) {
+      metadata.precision( std::numeric_limits< double >::digits10 );
+      metadata << "<DataArray type=\"Float64\" Name=\"TIME\" NumberOfTuples=\"1\" format=\"ascii\">"
+               << time << "</DataArray>\n";
+   }
+
+   if( cycle >= 0 || time >= 0 )
+      metadata << "</FieldData>\n";
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::writeImageData( const typename Mesh::PointType& gridOrigin,
+                                   const typename Mesh::CoordinatesType& begin,
+                                   const typename Mesh::CoordinatesType& end,
+                                   const typename Mesh::PointType& spaceSteps )
+{
+   if( ! vtkfileOpen )
+      writeHeader();
+   if( imageDataOpen )
+      throw std::logic_error("The <ImageData> tag is already open.");
+
+   std::stringstream extent, origin, spacing;
+
+   for( IndexType j = 0; j < Mesh::getMeshDimension(); j++ )
+      extent << begin[ j ] <<  " " << end[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = Mesh::getMeshDimension(); j < 3; j++ )
+      extent << "0 0 ";
+
+   for( IndexType j = 0; j < Mesh::getMeshDimension(); j++ )
+      origin << std::scientific << gridOrigin[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = Mesh::getMeshDimension(); j < 3; j++ )
+      origin << 0 << " ";
+
+   for( IndexType j = 0; j < Mesh::getMeshDimension(); j++ )
+      spacing << std::scientific << spaceSteps[ j ] << " ";
+   // VTK knows only 3D grids
+   for( IndexType j = Mesh::getMeshDimension(); j < 3; j++ )
+      spacing << 0 << " ";
+
+   str << "<ImageData WholeExtent=\"" << extent.str() << "\" Origin=\"" << origin.str() << "\" Spacing=\"" << spacing.str() << "\">\n";
+   imageDataOpen = true;
+
+   str << "<Piece Extent=\"" << extent.str() << "\">\n";
+   pieceOpen = true;
+
+   // write metadata if present
+   if( ! metadata.str().empty() ) {
+      str << metadata.str();
+      metadata.str() = "";
+   }
+
+   // sets points and cells counts
+   pointsCount = TNL::product( end - begin + 1 );
+   cellsCount = TNL::product( end - begin );
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::writeImageData( const Mesh& mesh )
+{
+   writeImageData( mesh.getOrigin(), 0, mesh.getDimensions(), mesh.getSpaceSteps() );
+}
+
+template< typename Mesh >
+   template< int EntityDimension >
+void
+VTIWriter< Mesh >::writeEntities( const Mesh& mesh )
+{
+   writeImageData( mesh );
+}
+
+template< typename Mesh >
+   template< typename Array >
+void
+VTIWriter< Mesh >::writePointData( const Array& array,
+                                   const String& name,
+                                   const int numberOfComponents )
+{
+   if( ! pieceOpen )
+      throw std::logic_error("The <Piece> tag has not been opened yet - call writeEntities first.");
+   if( array.getSize() / numberOfComponents != pointsCount )
+      throw std::length_error("Mismatched array size for <PointData> section: " + std::to_string(array.getSize())
+                              + " (there are " + std::to_string(pointsCount) + " points in the file)");
+   openPointData();
+   writeDataArray( array, name, numberOfComponents );
+}
+
+template< typename Mesh >
+   template< typename Array >
+void
+VTIWriter< Mesh >::writeCellData( const Array& array,
+                                  const String& name,
+                                  const int numberOfComponents )
+{
+   if( ! pieceOpen )
+      throw std::logic_error("The <Piece> tag has not been opened yet - call writeEntities first.");
+   if( array.getSize() / numberOfComponents != cellsCount )
+      throw std::length_error("Mismatched array size for <CellData> section: " + std::to_string(array.getSize())
+                              + " (there are " + std::to_string(cellsCount) + " cells in the file)");
+   openCellData();
+   writeDataArray( array, name, numberOfComponents );
+}
+
+template< typename Mesh >
+   template< typename Array >
+void
+VTIWriter< Mesh >::writeDataArray( const Array& array,
+                                   const String& name,
+                                   const int numberOfComponents )
+{
+   // use a host buffer if direct access to the array elements is not possible
+   if( std::is_same< typename Array::DeviceType, Devices::Cuda >::value )
+   {
+      using HostArray = typename Array::template Self< std::remove_const_t< typename Array::ValueType >, Devices::Host, typename Array::IndexType >;
+      HostArray hostBuffer;
+      hostBuffer = array;
+      writeDataArray( hostBuffer, name, numberOfComponents );
+      return;
+   }
+
+   if( numberOfComponents != 0 && numberOfComponents != 1 && numberOfComponents != 3 )
+      throw std::logic_error("Unsupported numberOfComponents parameter: " + std::to_string(numberOfComponents));
+
+   // write DataArray header
+   str << "<DataArray type=\"" << VTK::getTypeName( array[0] ) << "\"";
+   str << " Name=\"" << name << "\"";
+   if( numberOfComponents > 0 )
+      str << " NumberOfComponents=\"" << numberOfComponents << "\"";
+   str << " format=\"" << ((format == VTK::FileFormat::ascii) ? "ascii" : "binary") << "\">\n";
+
+   switch( format )
+   {
+      case VTK::FileFormat::ascii:
+         str.precision( std::numeric_limits< typename Array::ValueType >::digits10 );
+         for( IndexType i = 0; i < array.getSize(); i++ )
+            // If Array::ValueType is uint8_t, it might be a typedef for unsigned char, which
+            // would be normally printed as char rather than a number. Hence, we use the trick
+            // with unary operator+, see https://stackoverflow.com/a/28414758
+            str << +array[i] << " ";
+         str << "\n";
+         break;
+      case VTK::FileFormat::zlib_compressed:
+#ifdef HAVE_ZLIB
+         write_compressed_block< HeaderType >( array.getData(), array.getSize(), str );
+         str << "\n";
+         break;
+#endif
+         // fall through to binary if HAVE_ZLIB is not defined
+      case VTK::FileFormat::binary:
+         base64::write_encoded_block< HeaderType >( array.getData(), array.getSize(), str );
+         str << "\n";
+         break;
+   }
+
+   // write DataArray footer
+   str << "</DataArray>\n";
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::writeHeader()
+{
+   str << "<?xml version=\"1.0\"?>\n";
+   str << "<VTKFile type=\"ImageData\" version=\"1.0\"";
+   if( isLittleEndian() )
+      str << " byte_order=\"LittleEndian\"";
+   else
+      str << " byte_order=\"BigEndian\"";
+   str << " header_type=\"" << VTK::getTypeName( HeaderType{} ) << "\"";
+#ifdef HAVE_ZLIB
+   if( format == VTK::FileFormat::zlib_compressed )
+      str << " compressor=\"vtkZLibDataCompressor\"";
+#endif
+   str << ">\n";
+
+   vtkfileOpen = true;
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::writeFooter()
+{
+   closePiece();
+   str << "</ImageData>\n";
+   str << "</VTKFile>\n";
+}
+
+template< typename Mesh >
+VTIWriter< Mesh >::~VTIWriter()
+{
+   if( vtkfileOpen )
+      writeFooter();
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::openCellData()
+{
+   if( cellDataClosed )
+      throw std::logic_error("The <CellData> tag has already been closed in the current <Piece> section.");
+   closePointData();
+   if( ! cellDataOpen ) {
+      str << "<CellData>\n";
+      cellDataOpen = true;
+   }
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::closeCellData()
+{
+   if( cellDataOpen ) {
+      str << "</CellData>\n";
+      cellDataClosed = true;
+      cellDataOpen = false;
+   }
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::openPointData()
+{
+   if( pointDataClosed )
+      throw std::logic_error("The <PointData> tag has already been closed in the current <Piece> section.");
+   closeCellData();
+   if( ! pointDataOpen ) {
+      str << "<PointData>\n";
+      pointDataOpen = true;
+   }
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::closePointData()
+{
+   if( pointDataOpen ) {
+      str << "</PointData>\n";
+      pointDataClosed = true;
+      pointDataOpen = false;
+   }
+}
+
+template< typename Mesh >
+void
+VTIWriter< Mesh >::closePiece()
+{
+   if( pieceOpen ) {
+      closeCellData();
+      closePointData();
+      str << "</Piece>\n";
+
+      // reset indicators - new <Piece> can be started
+      pieceOpen = false;
+      cellDataOpen = cellDataClosed = false;
+      pointDataOpen = pointDataClosed = false;
+   }
+}
+
+} // namespace Writers
+} // namespace Meshes
+} // namespace TNL
diff --git a/src/TNL/Meshes/Writers/VTUWriter.hpp b/src/TNL/Meshes/Writers/VTUWriter.hpp
index 960cc4638683fe596dbffd7c042be9983087738d..058c8427176d00f0b9c67638f8df93d31b3a1e4c 100644
--- a/src/TNL/Meshes/Writers/VTUWriter.hpp
+++ b/src/TNL/Meshes/Writers/VTUWriter.hpp
@@ -479,7 +479,8 @@ VTUWriter< Mesh >::writeDataArray( const Array& array,
       throw std::logic_error("Unsupported numberOfComponents parameter: " + std::to_string(numberOfComponents));
 
    // write DataArray header
-   str << "<DataArray type=\"" << VTK::getTypeName( array[0] ) << "\"";
+   using ValueType = decltype(array[0]);
+   str << "<DataArray type=\"" << VTK::getTypeName( ValueType{} ) << "\"";
    str << " Name=\"" << name << "\"";
    if( numberOfComponents > 0 )
       str << " NumberOfComponents=\"" << numberOfComponents << "\"";
diff --git a/src/TNL/Problems/HeatEquationProblem.h b/src/TNL/Problems/HeatEquationProblem.h
index 342abe1ba2f2ac3ab5d5ccf4be2e18a49462994a..0c8cb10260a5b252b7d8dc29f8706782b3b774aa 100644
--- a/src/TNL/Problems/HeatEquationProblem.h
+++ b/src/TNL/Problems/HeatEquationProblem.h
@@ -24,7 +24,6 @@
 #include <TNL/Solvers/PDE/LinearSystemAssembler.h>
 #include <TNL/Solvers/PDE/BackwardTimeDiscretisation.h>
 
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
 
 namespace TNL {
@@ -66,7 +65,7 @@ class HeatEquationProblem : public PDEProblem< Mesh,
 
       void writeProlog( Logger& logger,
                         const Config::ParameterContainer& parameters ) const;
- 
+
       bool writeEpilog( Logger& logger );
 
 
@@ -91,7 +90,7 @@ class HeatEquationProblem : public PDEProblem< Mesh,
                               const RealType& tau,
                               DofVectorPointer& _u,
                               DofVectorPointer& _fu );
-      
+
       void applyBoundaryConditions( const RealType& time,
                                     DofVectorPointer& dofs );
 
@@ -128,8 +127,6 @@ class HeatEquationProblem : public PDEProblem< Mesh,
                                            Solvers::PDE::BackwardTimeDiscretisation,
                                            DofVectorType > systemAssembler;
 
-     Meshes::DistributedMeshes::DistrGridIOTypes distributedIOType;
-
      bool catchExceptions = true;
 };
 
diff --git a/src/TNL/Problems/HeatEquationProblem_impl.h b/src/TNL/Problems/HeatEquationProblem_impl.h
index 27003a6b60a59a6758321ceb5393a993451dec2d..097161b8b43ca5e112d2f6e90f4af424eb9fce03 100644
--- a/src/TNL/Problems/HeatEquationProblem_impl.h
+++ b/src/TNL/Problems/HeatEquationProblem_impl.h
@@ -82,12 +82,6 @@ setup( const Config::ParameterContainer& parameters,
       return false;
    }
 
-   String param = parameters.getParameter< String >( "distributed-grid-io-type" );
-   if( param == "MpiIO" )
-        distributedIOType = Meshes::DistributedMeshes::MpiIO;
-   if( param == "LocalCopy" )
-        distributedIOType = Meshes::DistributedMeshes::LocalCopy;
-
    this->explicitUpdater.setDifferentialOperator( this->differentialOperatorPointer );
    this->explicitUpdater.setBoundaryConditions( this->boundaryConditionPointer );
    this->explicitUpdater.setRightHandSide( this->rightHandSidePointer );
@@ -139,31 +133,23 @@ setInitialCondition( const Config::ParameterContainer& parameters,
    this->bindDofs( dofs );
    const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
    if(CommunicatorType::isDistributed())
-    {
-        std::cout<<"Nodes Distribution: " << uPointer->getMesh().getDistributedMesh()->printProcessDistr() << std::endl;
-        if(distributedIOType==Meshes::DistributedMeshes::MpiIO)
-            Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::MpiIO> ::load(initialConditionFile, *uPointer );
-        if(distributedIOType==Meshes::DistributedMeshes::LocalCopy)
-            Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::LocalCopy> ::load(initialConditionFile, *uPointer );
-        synchronizer.setDistributedGrid( uPointer->getMesh().getDistributedMesh() );
-        synchronizer.synchronize( *uPointer );
-    }
-    else
-    {
-      if( this->catchExceptions )
+   {
+      std::cout<<"Nodes Distribution: " << this->distributedMeshPointer->printProcessDistr() << std::endl;
+      if( ! Functions::readDistributedMeshFunction( *this->distributedMeshPointer, *this->uPointer, "u", initialConditionFile ) )
+      {
+         std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl;
+         return false;
+      }
+      synchronizer.setDistributedGrid( &this->distributedMeshPointer.getData() );
+      synchronizer.synchronize( *uPointer );
+   }
+   else
+   {
+      if( ! Functions::readMeshFunction( *this->uPointer, "u", initialConditionFile ) )
       {
-         try
-         {
-            this->uPointer->boundLoad( initialConditionFile );
-         }
-         catch( std::ios_base::failure& e )
-         {
-            std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl;
-            std::cerr << e.what() << std::endl;
-            return false;
-         }
+         std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl;
+         return false;
       }
-      else this->uPointer->boundLoad( initialConditionFile );
    }
    return true;
 }
@@ -210,19 +196,17 @@ makeSnapshot( const RealType& time,
 
    FileName fileName;
    fileName.setFileNameBase( "u-" );
-   fileName.setExtension( "tnl" );
    fileName.setIndex( step );
 
    if(CommunicatorType::isDistributed())
    {
-      if(distributedIOType==Meshes::DistributedMeshes::MpiIO)
-        Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::MpiIO> ::save(fileName.getFileName(), *uPointer );
-      if(distributedIOType==Meshes::DistributedMeshes::LocalCopy)
-        Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::LocalCopy> ::save(fileName.getFileName(), *uPointer );
+      fileName.setExtension( "pvti" );
+      Functions::writeDistributedMeshFunction( *this->distributedMeshPointer, *this->uPointer, "u", fileName.getFileName() );
    }
    else
    {
-      this->uPointer->save( fileName.getFileName() );
+      fileName.setExtension( "vti" );
+      this->uPointer->write( "u", fileName.getFileName() );
    }
    return true;
 }
diff --git a/src/TNL/Problems/MeanCurvatureFlowProblem_impl.h b/src/TNL/Problems/MeanCurvatureFlowProblem_impl.h
index 8ed3c75bd56386ad5d0cfb2fa89d2aa611d11fa5..d71dc065db0093a1a6f95f6f8c8e097a7191437c 100644
--- a/src/TNL/Problems/MeanCurvatureFlowProblem_impl.h
+++ b/src/TNL/Problems/MeanCurvatureFlowProblem_impl.h
@@ -159,8 +159,8 @@ makeSnapshot( const RealType& time,
    this->bindDofs( mesh, dofs );
    //cout << "dofs = " << dofs << std::endl;
    String fileName;
-   FileNameBaseNumberEnding( "u-", step, 5, ".tnl", fileName );
-   if( ! this->solution.save( fileName ) )
+   FileNameBaseNumberEnding( "u-", step, 5, ".vti", fileName );
+   if( ! this->solution.write( "u", fileName ) )
       return false;
    return true;
 }
@@ -188,7 +188,7 @@ getExplicitUpdate( const RealType& time,
     */
 
 //   this->differentialOperator.computeFirstGradient(mesh,time,u);
- 
+
    //cout << "u = " << u << std::endl;
    //this->bindDofs( mesh, u );
    MeshFunctionType u( mesh, inDofs );
@@ -198,9 +198,9 @@ getExplicitUpdate( const RealType& time,
    explicitUpdater.setDifferentialOperator( this->differentialOperatorPointer );
    explicitUpdater.setBoundaryConditions( this->boundaryConditionPointer );
    explicitUpdater.setRightHandSide( this->rightHandSidePointer );
-   
+
    explicitUpdater.template update< typename Mesh::Cell >( time, tau, mesh, u, fu );
- 
+
    /*cout << "u = " << u << std::endl;
   std::cout << "fu = " << fu << std::endl;
    u.save( "u.tnl" );
diff --git a/src/TNL/Problems/PDEProblem.h b/src/TNL/Problems/PDEProblem.h
index ee8edce4265453be3884180d31306a0c29fb90d9..96c2db251fbc325cdefa681ebb3f965c5b5ff4e7 100644
--- a/src/TNL/Problems/PDEProblem.h
+++ b/src/TNL/Problems/PDEProblem.h
@@ -15,7 +15,7 @@
 #include <TNL/Pointers/SharedPointer.h>
 #include <TNL/Matrices/SparseMatrix.h>
 #include <TNL/Algorithms/Segments/SlicedEllpack.h>
-#include <TNL/Solvers/PDE/TimeDependentPDESolver.h>
+#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 
 namespace TNL {
 namespace Problems {
@@ -37,6 +37,7 @@ class PDEProblem : public Problem< Real, Device, Index >
       using MeshType = Mesh;
       using MeshPointer = Pointers::SharedPointer< MeshType, DeviceType >;
       using DistributedMeshType = Meshes::DistributedMeshes::DistributedMesh< MeshType >;
+      using DistributedMeshPointer = Pointers::SharedPointer< DistributedMeshType, DeviceType >;
       using SubdomainOverlapsType = typename DistributedMeshType::SubdomainOverlapsType;
       using DofVectorType = Containers::Vector< RealType, DeviceType, IndexType>;
       using DofVectorPointer = Pointers::SharedPointer< DofVectorType, DeviceType >;
@@ -53,7 +54,7 @@ class PDEProblem : public Problem< Real, Device, Index >
       using CommonDataPointer = Pointers::SharedPointer< CommonDataType, DeviceType >;
 
       static constexpr bool isTimeDependent() { return true; };
-      
+
       /****
        * This means that the time stepper will be set from the command line arguments.
        */
@@ -63,24 +64,30 @@ class PDEProblem : public Problem< Real, Device, Index >
 
       void writeProlog( Logger& logger,
                         const Config::ParameterContainer& parameters ) const;
- 
+
       bool writeEpilog( Logger& logger ) const;
-      
-      void setMesh( MeshPointer& meshPointer);
-      
+
+      void setMesh( MeshPointer& meshPointer );
+
+      void setMesh( DistributedMeshPointer& distributedMeshPointer );
+
       const MeshPointer& getMesh() const;
-      
+
       MeshPointer& getMesh();
 
+      const DistributedMeshPointer& getDistributedMesh() const;
+
+      DistributedMeshPointer& getDistributedMesh();
+
       void setCommonData( CommonDataPointer& commonData );
-      
+
       const CommonDataPointer& getCommonData() const;
-      
+
       CommonDataPointer& getCommonData();
 
       // Width of the subdomain overlaps in case when all of them are the same
       virtual IndexType subdomainOverlapSize();
-      
+
       // Returns default subdomain overlaps i.e. no overlaps on the boundaries, only
       // in the domain interior.
       void getSubdomainOverlaps( const Config::ParameterContainer& parameters,
@@ -92,7 +99,7 @@ class PDEProblem : public Problem< Real, Device, Index >
       bool preIterate( const RealType& time,
                        const RealType& tau,
                        DofVectorPointer& dofs );
- 
+
       void applyBoundaryConditions( const RealType& time,
                                        DofVectorPointer& dofs );
 
@@ -106,9 +113,11 @@ class PDEProblem : public Problem< Real, Device, Index >
                         DofVectorPointer& dofs );
 
       Solvers::SolverMonitor* getSolverMonitor();
-      
+
       MeshPointer meshPointer;
-      
+
+      DistributedMeshPointer distributedMeshPointer;
+
       CommonDataPointer commonDataPointer;
 };
 
diff --git a/src/TNL/Problems/PDEProblem_impl.h b/src/TNL/Problems/PDEProblem_impl.h
index f42f18b165887c4ad006bad75e5ac0bdc3beea98..0eaf4df06f533f325c77154e5242631e1f794d4d 100644
--- a/src/TNL/Problems/PDEProblem_impl.h
+++ b/src/TNL/Problems/PDEProblem_impl.h
@@ -92,6 +92,21 @@ setMesh( MeshPointer& meshPointer)
    this->meshPointer = meshPointer;
 }
 
+template< typename Mesh,
+          typename Communicator,
+          typename Real,
+          typename Device,
+          typename Index >
+void
+PDEProblem< Mesh, Communicator, Real, Device, Index >::
+setMesh( DistributedMeshPointer& distributedMeshPointer)
+{
+   this->distributedMeshPointer = distributedMeshPointer;
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *meshPointer = distributedMeshPointer->getLocalMesh();
+}
+
 template< typename Mesh,
           typename Communicator,
           typename Real,
@@ -114,6 +129,28 @@ PDEProblem< Mesh, Communicator, Real, Device, Index >::getMesh()
    return this->meshPointer;
 }
 
+template< typename Mesh,
+          typename Communicator,
+          typename Real,
+          typename Device,
+          typename Index >
+const typename PDEProblem< Mesh, Communicator, Real, Device, Index >::DistributedMeshPointer&
+PDEProblem< Mesh, Communicator, Real, Device, Index >::getDistributedMesh() const
+{
+   return this->distributedMeshPointer;
+}
+
+template< typename Mesh,
+          typename Communicator,
+          typename Real,
+          typename Device,
+          typename Index >
+typename PDEProblem< Mesh, Communicator, Real, Device, Index >::DistributedMeshPointer&
+PDEProblem< Mesh, Communicator, Real, Device, Index >::getDistributedMesh()
+{
+   return this->distributedMeshPointer;
+}
+
 template< typename Mesh,
           typename Communicator,
           typename Real,
diff --git a/src/TNL/Solvers/PDE/ExplicitTimeStepper.h b/src/TNL/Solvers/PDE/ExplicitTimeStepper.h
index d4f6992b37e27cccecf38a193be8435ea2d9fe96..d6fd8a0533118709f89a157d16055969524d92f2 100644
--- a/src/TNL/Solvers/PDE/ExplicitTimeStepper.h
+++ b/src/TNL/Solvers/PDE/ExplicitTimeStepper.h
@@ -19,7 +19,7 @@
 
 namespace TNL {
 namespace Solvers {
-namespace PDE {   
+namespace PDE {
 
 template< typename Problem,
           template < typename OdeProblem, typename SolverMonitor > class OdeSolver >
@@ -32,7 +32,6 @@ class ExplicitTimeStepper
       using DeviceType = typename Problem::DeviceType;
       using IndexType = typename Problem::IndexType;
       using MeshType = typename Problem::MeshType;
-      using MeshPointer = Pointers::SharedPointer< MeshType >;
       using DofVectorType = typename ProblemType::DofVectorType;
       using DofVectorPointer = Pointers::SharedPointer< DofVectorType, DeviceType >;
       using SolverMonitorType = IterativeSolverMonitor< RealType, IndexType >;
@@ -50,7 +49,7 @@ class ExplicitTimeStepper
       bool setup( const Config::ParameterContainer& parameters,
                  const String& prefix = "" );
 
-      bool init( const MeshPointer& meshPointer );
+      bool init( const MeshType& mesh );
 
       void setSolver( OdeSolverType& odeSolver );
 
@@ -88,8 +87,6 @@ class ExplicitTimeStepper
 
       RealType timeStep;
 
-      const MeshPointer* mesh;
-
       Timer preIterateTimer, explicitUpdaterTimer, mainTimer, postIterateTimer;
 
       long long int allIterations;
@@ -100,4 +97,3 @@ class ExplicitTimeStepper
 } // namespace TNL
 
 #include <TNL/Solvers/PDE/ExplicitTimeStepper_impl.h>
-
diff --git a/src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h b/src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h
index fa2d1f8066ed22ebc2626e93ff88deb1e6790177..9428485f493b3aa26cbef792f74756b579095007 100644
--- a/src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h
+++ b/src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h
@@ -49,7 +49,7 @@ template< typename Problem,
           template < typename OdeProblem, typename SolverMonitor > class OdeSolver >
 bool
 ExplicitTimeStepper< Problem, OdeSolver >::
-init( const MeshPointer& meshPointer )
+init( const MeshType& mesh )
 {
    this->explicitUpdaterTimer.reset();
    this->mainTimer.reset();
diff --git a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h
index da1612ce2df256c1129fbdb7ba1d1a39575b4deb..ce99ccca6bc8af83125d51fb42a6e7f0a90a228a 100644
--- a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h
+++ b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h
@@ -32,7 +32,6 @@ class SemiImplicitTimeStepper
    typedef typename Problem::DeviceType DeviceType;
    typedef typename Problem::IndexType IndexType;
    typedef typename Problem::MeshType MeshType;
-   typedef typename Problem::MeshPointer MeshPointer;
    typedef typename ProblemType::DofVectorType DofVectorType;
    typedef typename ProblemType::MatrixType MatrixType;
    typedef Pointers::SharedPointer< MatrixType, DeviceType > MatrixPointer;
@@ -50,7 +49,7 @@ class SemiImplicitTimeStepper
    bool setup( const Config::ParameterContainer& parameters,
               const String& prefix = "" );
 
-   bool init( const MeshPointer& meshPointer );
+   bool init( const MeshType& mesh );
 
    void setProblem( ProblemType& problem );
 
@@ -65,7 +64,7 @@ class SemiImplicitTimeStepper
    bool solve( const RealType& time,
                const RealType& stopTime,
                DofVectorPointer& dofVectorPointer );
- 
+
    bool writeEpilog( Logger& logger ) const;
 
    protected:
diff --git a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h
index 3e8d106b272cf66bf2ed867d0a0943d0b47d8944..5e60d874ac13aba81635276473ae06f566577bb5 100644
--- a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h
+++ b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h
@@ -55,7 +55,7 @@ setup( const Config::ParameterContainer& parameters,
 template< typename Problem >
 bool
 SemiImplicitTimeStepper< Problem >::
-init( const MeshPointer& mesh )
+init( const MeshType& mesh )
 {
    if( ! this->problem->setupLinearSystem( this->matrix ) ) {
       std::cerr << "Failed to set up the linear system." << std::endl;
diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
index 58f4c5cc501592ce041ba4bfcb79ba84759e4389..51b1868408efe0c57a47134e791cabe46ed7cfdb 100644
--- a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
+++ b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
@@ -27,7 +27,7 @@ namespace PDE {
 template< typename Problem,
           typename TimeStepper >
 class TimeDependentPDESolver
-   : public PDESolver< typename Problem::RealType, 
+   : public PDESolver< typename Problem::RealType,
                        typename Problem::IndexType >,
      public MeshDependentTimeSteps< typename Problem::MeshType,
                                     typename TimeStepper::RealType >
@@ -46,7 +46,7 @@ class TimeDependentPDESolver
       typedef Pointers::SharedPointer< MeshType, DeviceType > MeshPointer;
       typedef Pointers::SharedPointer< DofVectorType, DeviceType > DofVectorPointer;
       typedef IterativeSolverMonitor< typename Problem::RealType, typename Problem::IndexType > SolverMonitorType;
-      
+
       static_assert( ProblemType::isTimeDependent(), "The problem is not time dependent." );
 
       TimeDependentPDESolver();
@@ -55,7 +55,7 @@ class TimeDependentPDESolver
                                const String& prefix = "" );
 
       bool setup( const Config::ParameterContainer& parameters,
-                 const String& prefix = "" );
+                  const String& prefix = "" );
 
       bool writeProlog( Logger& logger,
                         const Config::ParameterContainer& parameters );
@@ -86,7 +86,7 @@ class TimeDependentPDESolver
 
       MeshPointer meshPointer;
 
-      Meshes::DistributedMeshes::DistributedMesh<MeshType> distributedMesh;
+      Pointers::SharedPointer< Meshes::DistributedMeshes::DistributedMesh<MeshType> > distributedMeshPointer;
 
       DofVectorPointer dofsPointer;
 
diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
index 63ba71c8f94719cd73293bdab46a311e4cdf962d..9b853034860942d00117f661e6c4cf34cc5ddf11 100644
--- a/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
+++ b/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
@@ -39,7 +39,7 @@ configSetup( Config::ConfigDescription& config,
              const String& prefix )
 {
    BaseType::configSetup( config, prefix );
-   config.addEntry< String >( prefix + "initial-condition", "File name with the initial condition.", "init.tnl" );
+   config.addEntry< String >( prefix + "initial-condition", "File name with the initial condition.", "init.vti" );
    config.addRequiredEntry< double >( prefix + "final-time", "Stop time of the time dependent problem." );
    config.addEntry< double >( prefix + "initial-time", "Initial time of the time dependent problem.", 0 );
    config.addRequiredEntry< double >( prefix + "snapshot-period", "Time period for writing the problem status.");
@@ -61,20 +61,17 @@ setup( const Config::ParameterContainer& parameters,
    //
    const String& meshFile = parameters.getParameter< String >( "mesh" );
    const String& meshFileFormat = parameters.getParameter< String >( "mesh-format" );
-   this->distributedMesh.setup( parameters, prefix );
    if( Problem::CommunicatorType::isDistributed() ) {
-      if( ! Meshes::loadDistributedMesh( *this->meshPointer, distributedMesh, meshFile, meshFileFormat ) )
-         return false;
-      if( ! Meshes::decomposeMesh< Problem >( parameters, prefix, *this->meshPointer, distributedMesh, *problem ) )
+      if( ! Meshes::loadDistributedMesh( *distributedMeshPointer, meshFile, meshFileFormat ) )
          return false;
+      problem->setMesh( distributedMeshPointer );
    }
    else {
-      if( ! Meshes::loadMesh( *this->meshPointer, meshFile, meshFileFormat ) )
+      if( ! Meshes::loadMesh( *meshPointer, meshFile, meshFileFormat ) )
          return false;
+      problem->setMesh( meshPointer );
    }
 
-   problem->setMesh( this->meshPointer );
-
    /****
     * Set-up common data
     */
@@ -141,10 +138,16 @@ writeProlog( Logger& logger,
    logger.writeHeader( problem->getPrologHeader() );
    problem->writeProlog( logger, parameters );
    logger.writeSeparator();
-   meshPointer->writeProlog( logger );
+   if( Problem::CommunicatorType::isDistributed() )
+      distributedMeshPointer->writeProlog( logger );
+   else
+      meshPointer->writeProlog( logger );
    logger.writeSeparator();
    logger.writeParameter< String >( "Time discretisation:", "time-discretisation", parameters );
-   logger.writeParameter< double >( "Initial time step:", this->getRefinedTimeStep( this->meshPointer.getData(), this->timeStep ) );
+   if( Problem::CommunicatorType::isDistributed() )
+      logger.writeParameter< double >( "Initial time step:", this->getRefinedTimeStep( distributedMeshPointer->getLocalMesh(), this->timeStep ) );
+   else
+      logger.writeParameter< double >( "Initial time step:", this->getRefinedTimeStep( *meshPointer, this->timeStep ) );
    logger.writeParameter< double >( "Initial time:", "initial-time", parameters );
    logger.writeParameter< double >( "Final time:", "final-time", parameters );
    logger.writeParameter< double >( "Snapshot period:", "snapshot-period", parameters );
@@ -300,8 +303,14 @@ solve()
     * Initialize the time stepper
     */
    this->timeStepper.setProblem( * ( this->problem ) );
-   this->timeStepper.init( this->meshPointer );
-   this->timeStepper.setTimeStep( this->getRefinedTimeStep( this->meshPointer.getData(), this->timeStep ) );
+   if( Problem::CommunicatorType::isDistributed() ) {
+      this->timeStepper.init( distributedMeshPointer->getLocalMesh() );
+      this->timeStepper.setTimeStep( this->getRefinedTimeStep( distributedMeshPointer->getLocalMesh(), this->timeStep ) );
+   }
+   else {
+      this->timeStepper.init( *meshPointer );
+      this->timeStepper.setTimeStep( this->getRefinedTimeStep( *meshPointer, this->timeStep ) );
+   }
    while( step < allSteps )
    {
       RealType tau = min( this->snapshotPeriod,
diff --git a/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h
index 189584e79a8ed639ea07ecd3539bc7f69b440e46..15a5e7ba1b77bc2c0b6ca4bbfcdf77a406b384bc 100644
--- a/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h
+++ b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h
@@ -71,7 +71,7 @@ class TimeIndependentPDESolver : public PDESolver< typename Problem::RealType,
 
       MeshPointer meshPointer;
 
-      Meshes::DistributedMeshes::DistributedMesh<MeshType> distributedMesh;
+      Pointers::SharedPointer< Meshes::DistributedMeshes::DistributedMesh<MeshType> > distributedMeshPointer;
 
       CommonDataPointer commonDataPointer;
 
diff --git a/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h b/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h
index b6e6c10c89f6bf2427b15247702e491f63a404dc..bd1ccf02b5589589db33253711e71cc2a796d223 100644
--- a/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h
+++ b/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h
@@ -52,20 +52,17 @@ setup( const Config::ParameterContainer& parameters,
    //
    const String& meshFile = parameters.getParameter< String >( "mesh" );
    const String& meshFileFormat = parameters.getParameter< String >( "mesh-format" );
-   this->distributedMesh.setup( parameters, prefix );
    if( Problem::CommunicatorType::isDistributed() ) {
-      if( ! Meshes::loadDistributedMesh( *this->meshPointer, distributedMesh, meshFile, meshFileFormat ) )
-         return false;
-      if( ! Meshes::decomposeMesh< Problem >( parameters, prefix, *this->meshPointer, distributedMesh, *problem ) )
+      if( ! Meshes::loadDistributedMesh( *distributedMeshPointer, meshFile, meshFileFormat ) )
          return false;
+      problem->setMesh( distributedMeshPointer );
    }
    else {
-      if( ! Meshes::loadMesh( *this->meshPointer, meshFile, meshFileFormat ) )
+      if( ! Meshes::loadMesh( *meshPointer, meshFile, meshFileFormat ) )
          return false;
+      problem->setMesh( meshPointer );
    }
 
-   problem->setMesh( this->meshPointer );
-
    /****
     * Set-up common data
     */
@@ -115,7 +112,10 @@ writeProlog( Logger& logger,
    logger.writeHeader( problem->getPrologHeader() );
    problem->writeProlog( logger, parameters );
    logger.writeSeparator();
-   meshPointer->writeProlog( logger );
+   if( Problem::CommunicatorType::isDistributed() )
+      distributedMeshPointer->writeProlog( logger );
+   else
+      meshPointer->writeProlog( logger );
    logger.writeSeparator();
    const String& solverName = parameters. getParameter< String >( "discrete-solver" );
    logger.writeParameter< String >( "Discrete solver:", "discrete-solver", parameters );
diff --git a/src/TNL/Solvers/SolverConfig_impl.h b/src/TNL/Solvers/SolverConfig_impl.h
index d7e64b2fb0b9e1cd9b69032ae03d718d261929e2..aa8f6181aa428984495a6b126d58fee936723f3a 100644
--- a/src/TNL/Solvers/SolverConfig_impl.h
+++ b/src/TNL/Solvers/SolverConfig_impl.h
@@ -75,14 +75,9 @@ bool SolverConfig< ConfigTag, ProblemConfig >::configSetup( Config::ConfigDescri
     * Mesh file parameter
     */
    config.addDelimiter( " === Space discretisation parameters ==== " );
-   config.addEntry< String >( "mesh", "A file which contains the numerical mesh. You may create it with tools like tnl-grid-setup or tnl-mesh-convert.", "mesh.tnl" );
+   config.addEntry< String >( "mesh", "A file which contains the numerical mesh. You may create it with tools like tnl-grid-setup or tnl-mesh-convert.", "mesh.vti" );
    config.addEntry< String >( "mesh-format", "Mesh file format.", "auto" );
 
-   /****
-    * Domain decomposition
-    */
-   Meshes::DistributedMeshes::DistributedMesh< Meshes::Grid< 3 > >::configSetup( config );
-
    /****
     * Time discretisation
     */
diff --git a/src/Tools/CMakeLists.txt b/src/Tools/CMakeLists.txt
index 66eb6ce7607e0b4522298de148edf797b51a53f6..17fe51d67e5d6f1bc98a65f2e699d7ea7bb689d3 100644
--- a/src/Tools/CMakeLists.txt
+++ b/src/Tools/CMakeLists.txt
@@ -1,5 +1,6 @@
 add_subdirectory(tnl-quickstart)
 
+ADD_EXECUTABLE(tnl-decompose-grid tnl-decompose-grid.cpp )
 ADD_EXECUTABLE(tnl-grid-setup tnl-grid-setup.cpp )
 ADD_EXECUTABLE(tnl-grid-to-mesh tnl-grid-to-mesh.cpp )
 ADD_EXECUTABLE(tnl-mesh-converter tnl-mesh-converter.cpp )
@@ -10,9 +11,7 @@ else()
    ADD_EXECUTABLE(tnl-test-distributed-mesh tnl-test-distributed-mesh.cpp )
 endif()
 ADD_EXECUTABLE(tnl-init tnl-init.cpp )
-ADD_EXECUTABLE(tnl-view tnl-view.cpp )
 ADD_EXECUTABLE(tnl-diff tnl-diff.cpp )
-ADD_EXECUTABLE(tnl-lattice-init tnl-lattice-init.cpp )
 
 ADD_EXECUTABLE(tnl-image-converter tnl-image-converter.cpp )
 if( PNG_FOUND )
@@ -29,7 +28,7 @@ endif()
 
 find_package( ZLIB )
 if( ZLIB_FOUND )
-   foreach( target IN ITEMS tnl-view tnl-grid-to-mesh tnl-mesh-converter tnl-game-of-life tnl-test-distributed-mesh )
+   foreach( target IN ITEMS tnl-init tnl-diff tnl-decompose-grid tnl-grid-to-mesh tnl-mesh-converter tnl-game-of-life tnl-test-distributed-mesh )
       target_compile_definitions(${target} PUBLIC "-DHAVE_ZLIB")
       target_include_directories(${target} PUBLIC ${ZLIB_INCLUDE_DIRS})
       target_link_libraries(${target} ${ZLIB_LIBRARIES})
@@ -38,7 +37,7 @@ endif()
 
 find_package( tinyxml2 QUIET )
 if( tinyxml2_FOUND )
-   foreach( target IN ITEMS tnl-mesh-converter tnl-game-of-life tnl-test-distributed-mesh )
+   foreach( target IN ITEMS tnl-init tnl-diff tnl-decompose-grid tnl-grid-to-mesh tnl-mesh-converter tnl-game-of-life tnl-test-distributed-mesh )
       target_compile_definitions(${target} PUBLIC "-DHAVE_TINYXML2")
       target_link_libraries(${target} tinyxml2::tinyxml2)
    endforeach()
@@ -69,8 +68,8 @@ IF( BUILD_CUDA )
 ENDIF()
 
 INSTALL( TARGETS tnl-init
-                 tnl-view
                  tnl-diff
+                 tnl-decompose-grid
                  tnl-grid-setup
                  tnl-grid-to-mesh
                  tnl-mesh-converter
@@ -78,7 +77,6 @@ INSTALL( TARGETS tnl-init
                  tnl-test-distributed-mesh
                  tnl-dicom-reader
                  tnl-image-converter
-                 tnl-lattice-init
          DESTINATION bin )
 
 INSTALL( FILES tnl-err2eoc
diff --git a/src/Tools/tnl-decompose-grid.cpp b/src/Tools/tnl-decompose-grid.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b57558cc5b74f6bcf6097467c51ad6810129d216
--- /dev/null
+++ b/src/Tools/tnl-decompose-grid.cpp
@@ -0,0 +1,168 @@
+/***************************************************************************
+                          tnl-decompose-grid.cpp  -  description
+                             -------------------
+    begin                : Jun 24, 2021
+    copyright            : (C) 2021 by Tomas Oberhuber et al.
+    email                : tomas.oberhuber@fjfi.cvut.cz
+ ***************************************************************************/
+
+/* See Copyright Notice in tnl/Copyright */
+
+// Implemented by: Jakub Klinkovský
+
+#include <TNL/Config/parseCommandLine.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
+#include <TNL/Meshes/Writers/PVTIWriter.h>
+
+using namespace TNL;
+
+struct DecomposeGridConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+/****
+ * Turn on all grids.
+ */
+template<> struct GridRealTag< DecomposeGridConfigTag, float > { enum { enabled = true }; };
+template<> struct GridRealTag< DecomposeGridConfigTag, double > { enum { enabled = true }; };
+template<> struct GridRealTag< DecomposeGridConfigTag, long double > { enum { enabled = true }; };
+
+template<> struct GridIndexTag< DecomposeGridConfigTag, int > { enum { enabled = true }; };
+template<> struct GridIndexTag< DecomposeGridConfigTag, long int > { enum { enabled = true }; };
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
+
+
+void configSetup( Config::ConfigDescription& config )
+{
+   config.addDelimiter( "General settings:" );
+   config.addRequiredEntry< String >( "input-file", "Input file with the grid." );
+   config.addEntry< String >( "input-file-format", "Input grid file format.", "auto" );
+   config.addRequiredEntry< String >( "output-file", "Output mesh file (PVTI format)." );
+   config.addEntry< unsigned >( "subdomains-x", "Number of grid subdomains along the x-axis.", 1 );
+   config.addEntry< unsigned >( "subdomains-y", "Number of grid subdomains along the y-axis.", 1 );
+   config.addEntry< unsigned >( "subdomains-z", "Number of grid subdomains along the z-axis.", 1 );
+   config.addEntry< unsigned >( "ghost-levels", "Number of ghost levels by which the subdomains overlap.", 0 );
+// TODO: implement this in the distributed grid (it should configure communication over faces/edges/vertices in the grid synchronizer)
+//   config.addEntry< unsigned >( "min-common-vertices",
+//                                "Specifies the number of common nodes that two elements must have in order to put an "
+//                                "edge between them in the dual graph. By default it is equal to the mesh dimension." );
+}
+
+template< typename CoordinatesType >
+CoordinatesType getRankCoordinates( typename CoordinatesType::ValueType rank,
+                                    CoordinatesType decomposition )
+{
+   CoordinatesType coordinates;
+   using Index = typename CoordinatesType::ValueType;
+   Index size = TNL::product( decomposition );
+   for( int i = decomposition.getSize() - 1; i >= 0; i-- )
+   {
+      size = size / decomposition[ i ];
+      coordinates[ i ] = rank / size;
+      rank = rank % size;
+   }
+   return coordinates;
+}
+
+template< typename GridType >
+void run( const GridType& globalGrid, const Config::ParameterContainer& parameters )
+{
+   using CoordinatesType = typename GridType::CoordinatesType;
+
+   // prepare the grid decomposition
+   CoordinatesType decomposition;
+   decomposition[ 0 ] = parameters.getParameter< unsigned >( "subdomains-x" );
+   if( decomposition.getSize() > 1 )
+      decomposition[ 1 ] = parameters.getParameter< unsigned >( "subdomains-y" );
+   if( decomposition.getSize() > 2 )
+      decomposition[ 2 ] = parameters.getParameter< unsigned >( "subdomains-z" );
+
+   // prepare the ghost levels
+   const unsigned ghost_levels = parameters.getParameter< unsigned >( "ghost-levels" );
+
+   // write a .pvti file
+   using PVTI = Meshes::Writers::PVTIWriter< GridType >;
+   const std::string pvtiFileName = parameters.template getParameter< String >( "output-file" );
+   std::ofstream file( pvtiFileName );
+   PVTI pvti( file );
+   pvti.writeImageData( globalGrid, ghost_levels ); // TODO: ..., ncommon );
+   // TODO
+//   if( ghost_levels > 0 ) {
+//      // the PointData and CellData from the individual files should be added here
+//      pvtu.template writePPointData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//      pvtu.template writePCellData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//   }
+
+   std::cout << "Writing subdomains..." << std::endl;
+   const unsigned nproc = TNL::product( decomposition );
+   for( unsigned p = 0; p < nproc; p++ ) {
+      // cartesian coordinates of the p-th rank in the decomposition
+      const CoordinatesType rank_coordinates = getRankCoordinates( p, decomposition );
+      std::cout << p << "-th rank_coordinates: " << rank_coordinates << std::endl;
+
+      // prepare local grid attributes
+      CoordinatesType globalBegin;
+      CoordinatesType localSize;
+      for( int i = 0; i < GridType::getMeshDimension(); i++ ) {
+         const auto numberOfLarger = globalGrid.getDimensions()[ i ] % decomposition[ i ];
+         localSize[ i ] = globalGrid.getDimensions()[ i ] / decomposition[ i ];
+         if( numberOfLarger > rank_coordinates[ i ] )
+            ++localSize[ i ];
+
+         if( numberOfLarger > rank_coordinates[ i ] )
+             globalBegin[ i ] = rank_coordinates[ i ] * localSize[ i ];
+         else
+             globalBegin[ i ] = numberOfLarger * (localSize[ i ] + 1) + (rank_coordinates[ i ] - numberOfLarger) * localSize[ i ];
+      }
+
+      const std::string outputFileName = pvti.addPiece( pvtiFileName, p, globalBegin, globalBegin + localSize );
+      std::cout << outputFileName << std::endl;
+
+      // write the subdomain
+      using Writer = Meshes::Writers::VTIWriter< GridType >;
+      std::ofstream file( outputFileName );
+      Writer writer( file );
+      writer.writeImageData( globalGrid.getOrigin(),
+                             globalBegin,
+                             globalBegin + localSize,
+                             globalGrid.getSpaceSteps() );
+      // TODO
+//      if( ghost_levels > 0 ) {
+//         writer.writePointData( pointGhosts, Meshes::VTK::ghostArrayName() );
+//         writer.writeCellData( cellGhosts, Meshes::VTK::ghostArrayName() );
+//      }
+   }
+}
+
+int main( int argc, char* argv[] )
+{
+   Config::ParameterContainer parameters;
+   Config::ConfigDescription conf_desc;
+
+   configSetup( conf_desc );
+
+   if( ! parseCommandLine( argc, argv, conf_desc, parameters ) )
+      return EXIT_FAILURE;
+
+   const String inputFileName = parameters.getParameter< String >( "input-file" );
+   const String inputFileFormat = parameters.getParameter< String >( "input-file-format" );
+   const String outputFile = parameters.template getParameter< String >( "output-file" );
+   if( ! outputFile.endsWith( ".pvti" ) ) {
+      std::cerr << "Error: the output file must have a '.pvti' extension." << std::endl;
+      return EXIT_FAILURE;
+   }
+
+   auto wrapper = [&] ( const auto& reader, auto&& grid )
+   {
+      using GridType = std::decay_t< decltype(grid) >;
+      run( std::forward<GridType>(grid), parameters );
+      return true;
+   };
+   return ! Meshes::resolveAndLoadMesh< DecomposeGridConfigTag, Devices::Host >( wrapper, inputFileName, inputFileFormat );
+}
diff --git a/src/Tools/tnl-dicom-reader.cpp b/src/Tools/tnl-dicom-reader.cpp
index 52eb7f7786d1847eb7be452b21497210d94de2d7..bf016189b68c9d8a95ddc8d21cefc62772797d7f 100644
--- a/src/Tools/tnl-dicom-reader.cpp
+++ b/src/Tools/tnl-dicom-reader.cpp
@@ -9,8 +9,11 @@
 /* See Copyright Notice in tnl/Copyright */
 
 #include <TNL/Config/parseCommandLine.h>
+#include <TNL/Containers/Vector.h>
 #include <TNL/Images/DicomSeries.h>
 #include <TNL/FileName.h>
+#include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
 
 using namespace TNL;
 
@@ -19,7 +22,7 @@ void setupConfig( Config::ConfigDescription& config )
    config.addDelimiter( "General parameters" );
    config.addList         < String >( "dicom-files",   "Input DICOM files." );
    config.addList         < String >( "dicom-series",   "Input DICOM series." );
-   config.addEntry        < String >( "mesh-file",     "Mesh file.", "mesh.tnl" );
+   config.addEntry        < String >( "mesh-file",     "Mesh file.", "mesh.vti" );
    config.addEntry        < bool >     ( "one-mesh-file", "Generate only one mesh file. All the images dimensions must be the same.", true );
    config.addEntry        < int >      ( "roi-top",       "Top (smaller number) line of the region of interest.", -1 );
    config.addEntry        < int >      ( "roi-bottom",    "Bottom (larger number) line of the region of interest.", -1 );
@@ -60,7 +63,10 @@ bool processDicomSeries( const Config::ParameterContainer& parameters )
          roi.setGrid( grid, verbose );
          vector.setSize( grid.template getEntitiesCount< typename GridType::Cell >() );
          std::cout << "Writing grid to file " << meshFile << std::endl;
-         grid.save( meshFile );
+         using Writer = Meshes::Writers::VTIWriter< GridType >;
+         std::ofstream file( meshFile );
+         Writer writer( file );
+         writer.writeImageData( grid );
       }
       std::cout << "The series consists of " << dicomSeries.getImagesCount() << " images." << std::endl;
       for( int imageIdx = 0; imageIdx < dicomSeries.getImagesCount(); imageIdx++ )
diff --git a/src/Tools/tnl-diff.cpp b/src/Tools/tnl-diff.cpp
index b55013c9ebdc166d439583b3c0e7eed9c7808251..c946dc80b5481314b8fa7a2d304d83c2ecc1500b 100644
--- a/src/Tools/tnl-diff.cpp
+++ b/src/Tools/tnl-diff.cpp
@@ -11,13 +11,38 @@
 #include "tnl-diff.h"
 #include <TNL/Config/parseCommandLine.h>
 #include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+
+struct TNLDiffBuildConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+/****
+ * Turn off support for float and long double.
+ */
+//template<> struct GridRealTag< TNLDiffBuildConfigTag, float > { enum { enabled = false }; };
+template<> struct GridRealTag< TNLDiffBuildConfigTag, long double > { enum { enabled = false }; };
+
+/****
+ * Turn off support for short int and long int indexing.
+ */
+template<> struct GridIndexTag< TNLDiffBuildConfigTag, short int >{ enum { enabled = false }; };
+template<> struct GridIndexTag< TNLDiffBuildConfigTag, long int >{ enum { enabled = false }; };
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
 
 void setupConfig( Config::ConfigDescription& config )
 {
-   config.addEntry< String >( "mesh", "Input mesh file.", "mesh.tnl" );
-   config.addRequiredList< String >( "input-files", "The first set of the input files." );
+   config.addEntry< String >( "mesh", "Input mesh file.", "mesh.vti" );
+   config.addEntry< String >( "mesh-format", "Mesh file format.", "auto" );
+   config.addRequiredList< String >( "input-files", "Input files containing the mesh functions to be compared." );
+   config.addEntry< String >( "mesh-function-name", "Name of the mesh function in the input files.", "f" );
    config.addEntry< String >( "output-file", "File for the output data.", "tnl-diff.log" );
-   config.addEntry< String >( "mode", "Mode 'couples' compares two subsequent files. Mode 'sequence' compares the input files against the first one. 'halves' compares the files from the and the second half of the intput files.", "couples" );
+   config.addEntry< String >( "mode", "Mode 'couples' compares two subsequent files. Mode 'sequence' compares the input files against the first one. 'halves' compares the files from the first and the second half of the intput files.", "couples" );
       config.addEntryEnum< String >( "couples" );
       config.addEntryEnum< String >( "sequence" );
       config.addEntryEnum< String >( "halves" );
@@ -39,29 +64,12 @@ int main( int argc, char* argv[] )
    if( ! parseCommandLine( argc, argv, conf_desc, parameters ) )
       return EXIT_FAILURE;
 
-   String meshFile = parameters.getParameter< String >( "mesh" );
-   const String meshType = getObjectType( meshFile );
-   std::cout << meshType << " detected in " << meshFile << " file." << std::endl;
-   const std::vector< String > parsedMeshType = parseObjectType( meshType );
-   if( ! parsedMeshType.size() )
-   {
-      std::cerr << "Unable to parse the mesh type " << meshType << "." << std::endl;
-      return EXIT_FAILURE;
-   }
-   if( parsedMeshType[ 0 ] == "Meshes::Grid" ||
-       parsedMeshType[ 0 ] == "tnlGrid" )        // TODO: remove deprecated type name
+   const String meshFile = parameters.getParameter< String >( "mesh" );
+   const String meshFileFormat = parameters.getParameter< String >( "mesh-format" );
+   auto wrapper = [&] ( const auto& reader, auto&& mesh )
    {
-      const int dimensions = atoi( parsedMeshType[ 1 ].getString() );
-      if( dimensions == 1 )
-         if( ! resolveGridRealType< 1 >( parsedMeshType, parameters ) )
-            return EXIT_FAILURE;
-      if( dimensions == 2 )
-         if( ! resolveGridRealType< 2 >( parsedMeshType, parameters ) )
-            return EXIT_FAILURE;
-      if( dimensions == 3 )
-         if( ! resolveGridRealType< 3 >( parsedMeshType, parameters ) )
-            return EXIT_FAILURE;
-      return EXIT_SUCCESS;
-   }
-   return EXIT_FAILURE;
+      using MeshType = std::decay_t< decltype(mesh) >;
+      return processFiles< MeshType >( parameters );
+   };
+   return ! TNL::Meshes::resolveMeshType< TNLDiffBuildConfigTag, Devices::Host >( wrapper, meshFile, meshFileFormat );
 }
diff --git a/src/Tools/tnl-diff.h b/src/Tools/tnl-diff.h
index 81a0620de91e188e9d1fff4ab62deb2059f43b87..f5ce069b14135209c02ae0c0c8598d7c60403a10 100644
--- a/src/Tools/tnl-diff.h
+++ b/src/Tools/tnl-diff.h
@@ -8,14 +8,14 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#ifndef TNL_DIFF_H_
-#define TNL_DIFF_H_
+#pragma once
 
 #include <iomanip>
 #include <TNL/Config/ParameterContainer.h>
 #include <TNL/FileName.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Containers/StaticVector.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
 #include <TNL/Functions/MeshFunction.h>
 #include <TNL/Exceptions/NotImplementedError.h>
 
@@ -74,7 +74,7 @@ class ExactMatchTest< MeshFunction, Meshes::Grid< 1, Real, Device, Index >, 1 >
                outputFile << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates()
                           << " " << f1.getValue( entity ) << " != " << f2.getValue( entity ) <<std::endl;
                if( verbose )
-                  std::cout << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates() 
+                  std::cout << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates()
                           << " " << f1.getValue( entity ) << " != " << f2.getValue( entity ) <<std::endl;
             }
          }
@@ -166,10 +166,10 @@ class ExactMatchTest< MeshFunction, Meshes::Grid< 3, Real, Device, Index >, 3 >
                   entity.refresh();
                   if( f1.getValue( entity ) != f2.getValue( entity ) )
                   {
-                     outputFile << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates() 
+                     outputFile << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates()
                                 << " " << f1.getValue( entity ) << " != " << f2.getValue( entity ) <<std::endl;
                      if( verbose )
-                        std::cout << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates() 
+                        std::cout << f1Name << " and " << f2Name << " differs at " << entity.getCoordinates()
                                 << " " << f1.getValue( entity ) << " != " << f2.getValue( entity ) <<std::endl;
                   }
                }
@@ -183,6 +183,7 @@ bool computeDifferenceOfMeshFunctions( const MeshPointer& meshPointer, const Con
 {
    bool verbose = parameters. getParameter< bool >( "verbose" );
    std::vector< String > inputFiles = parameters. getParameter< std::vector< String > >( "input-files" );
+   const String meshFunctionName = parameters.getParameter< String >( "mesh-function-name" );
    String mode = parameters. getParameter< String >( "mode" );
    String outputFileName = parameters. getParameter< String >( "output-file" );
    double snapshotPeriod = parameters. getParameter< double >( "snapshot-period" );
@@ -210,7 +211,7 @@ bool computeDifferenceOfMeshFunctions( const MeshPointer& meshPointer, const Con
    }
    if( verbose )
       std::cout << std::endl;
-   
+
    typedef typename MeshPointer::ObjectType Mesh;
    using MeshFunctionType = Functions::MeshFunction< Mesh, Mesh::getMeshDimension(), Real >;
    MeshFunctionType v1( meshPointer ), v2( meshPointer ), diff( meshPointer );
@@ -230,8 +231,8 @@ bool computeDifferenceOfMeshFunctions( const MeshPointer& meshPointer, const Con
            std::cout << "Processing files " << inputFiles[ i ] << " and " << inputFiles[ i + 1 ] << "...           \r" << std::flush;
          try
          {
-            v1.load( inputFiles[ i ] );
-            v2.load( inputFiles[ i + 1 ] );
+            Functions::readMeshFunction( v1, meshFunctionName, inputFiles[ i ], "auto" );
+            Functions::readMeshFunction( v2, meshFunctionName, inputFiles[ i + 1 ], "auto" );
          }
          catch(...)
          {
@@ -251,12 +252,12 @@ bool computeDifferenceOfMeshFunctions( const MeshPointer& meshPointer, const Con
          {
             if( verbose )
               std::cout << "Reading the file " << inputFiles[ 0 ] << "...               \r" << std::flush;
-            v1.load( inputFiles[ 0 ] );
+            Functions::readMeshFunction( v1, meshFunctionName, inputFiles[ 0 ], "auto" );
             file1 = inputFiles[ 0 ];
          }
          if( verbose )
            std::cout << "Processing the files " << inputFiles[ 0 ] << " and " << inputFiles[ i ] << "...             \r" << std::flush;
-         v2.load( inputFiles[ i ] );
+         Functions::readMeshFunction( v2, meshFunctionName, inputFiles[ i ], "auto" );
          if( ! exactMatch )
             outputFile << std::setw( 6 ) << ( i - 1 ) * snapshotPeriod << " ";
          file2 = inputFiles[ i ];
@@ -268,8 +269,8 @@ bool computeDifferenceOfMeshFunctions( const MeshPointer& meshPointer, const Con
             i = half;
          if( verbose )
            std::cout << "Processing files " << inputFiles[ i - half ] << " and " << inputFiles[ i ] << "...                 \r" << std::flush;
-         v1.load( inputFiles[ i - half ] );
-         v2.load( inputFiles[ i ] );
+         Functions::readMeshFunction( v1, meshFunctionName, inputFiles[ i - half ], "auto" );
+         Functions::readMeshFunction( v2, meshFunctionName, inputFiles[ i ], "auto" );
          //if( snapshotPeriod != 0.0 )
          if( ! exactMatch )
             outputFile << std::setw( 6 ) << ( i - half ) * snapshotPeriod << " ";
@@ -305,11 +306,11 @@ bool computeDifferenceOfMeshFunctions( const MeshPointer& meshPointer, const Con
 
          if( writeDifference )
          {
-            String differenceFileName = removeFileNameExtension( inputFiles[ i ] ) + ".diff.tnl";
+            String differenceFileName = removeFileNameExtension( inputFiles[ i ] ) + ".diff.vti";
             //diff.setLike( v1 );
             diff = v1;
             diff -= v2;
-            diff.save( differenceFileName );
+            diff.write( "diff", differenceFileName );
          }
       }
    }
@@ -558,29 +559,16 @@ bool setValueType( const MeshPointer& meshPointer,
 template< typename Mesh >
 bool processFiles( const Config::ParameterContainer& parameters )
 {
-   int verbose = parameters. getParameter< bool >( "verbose");
-   std::vector< String > inputFiles = parameters. getParameter< std::vector< String > >( "input-files" );
-
-   /****
-    * Reading the mesh
-    */
-   String meshFile = parameters. getParameter< String >( "mesh" );
-   
-   typedef Pointers::SharedPointer<  Mesh > MeshPointer;
+   int verbose = parameters.getParameter< int >( "verbose");
+   const String meshFile = parameters.getParameter< String >( "mesh" );
+   const String meshFileFormat = parameters.getParameter< String >( "mesh-format" );
 
+   typedef Pointers::SharedPointer< Mesh > MeshPointer;
    MeshPointer meshPointer;
-   if( meshFile != "" )
-   {
-      try
-      {
-         meshPointer->load( meshFile );
-      }
-      catch(...)
-      {
-         std::cerr << "I am not able to load mesh from the file " << meshFile << "." << std::endl;
-         return false;
-      }
-   }
+   if( ! Meshes::loadMesh( *meshPointer, meshFile, meshFileFormat ) )
+      return false;
+
+   std::vector< String > inputFiles = parameters.getParameter< std::vector< String > >( "input-files" );
 
    String objectType;
    try
@@ -604,31 +592,3 @@ bool processFiles( const Config::ParameterContainer& parameters )
    setValueType< MeshPointer >( meshPointer, inputFiles[ 0 ], parsedObjectType, parameters );
    return true;
 }
-
-template< int Dim, typename Real >
-bool resolveGridIndexType( const std::vector< String >& parsedMeshType,
-                           const Config::ParameterContainer& parameters )
-{
-   if( parsedMeshType[ 4 ] == "int" )
-      return processFiles< Meshes::Grid< Dim, Real, Devices::Host, int > >( parameters );
-   if( parsedMeshType[ 4 ] == "long int" )
-      return processFiles< Meshes::Grid< Dim, Real, Devices::Host, long int > >( parameters );
-   std::cerr << "Unknown index type " << parsedMeshType[ 4 ] << "." <<  std::endl;
-   return false;
-}
-
-template< int Dim >
-bool resolveGridRealType( const std::vector< String >& parsedMeshType,
-                          const Config::ParameterContainer& parameters )
-{
-   if( parsedMeshType[ 2 ] == "float" )
-      return resolveGridIndexType< Dim, float >( parsedMeshType, parameters );
-   if( parsedMeshType[ 2 ] == "double" )
-      return resolveGridIndexType< Dim, double >( parsedMeshType, parameters );
-//   if( parsedMeshType[ 2 ] == "long double" )
-//      return resolveGridIndexType< Dim, long double >( parsedMeshType, parameters );
-   std::cerr << "Unknown real type " << parsedMeshType[ 2 ] << "." <<  std::endl;
-   return false;
-}
-
-#endif /* TNL_DIFF_H_ */
diff --git a/src/Tools/tnl-grid-setup.cpp b/src/Tools/tnl-grid-setup.cpp
index 115f02065920e50507acef551b68128d5be90dd4..45a7fca17ecd347b7fff6f28cdd018037bbb48b9 100644
--- a/src/Tools/tnl-grid-setup.cpp
+++ b/src/Tools/tnl-grid-setup.cpp
@@ -14,11 +14,10 @@
 void configSetup( Config::ConfigDescription& config )
 {
    config.addDelimiter( "General parameters" );
-   config.addEntry        < String >( "output-file",   "Output file.", "mesh.tnl" );
+   config.addEntry        < String >( "output-file",   "Output file.", "mesh.vti" );
    config.addEntry        < int >   ( "verbose",       "Set the verbosity of the program.", 1 );
 
    config.addDelimiter              ( "Grid parameters" );
-   config.addEntry        < String >( "grid-name",     "The grid name.", "tnl-grid" );
    config.addRequiredEntry< int >   ( "dimension",     "The grid dimension." );
       config.addEntryEnum< int >( 1 );
       config.addEntryEnum< int >( 2 );
diff --git a/src/Tools/tnl-grid-setup.h b/src/Tools/tnl-grid-setup.h
index 867cfdb73bdb75f6ba073724b0ebd2db3769f6b4..ca9177fe2cfabbaf014fd5ef270c0ade18b1d8dd 100644
--- a/src/Tools/tnl-grid-setup.h
+++ b/src/Tools/tnl-grid-setup.h
@@ -8,18 +8,17 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#ifndef TNL_GRID_SETUP_H_
-#define TNL_GRID_SETUP_H_
+#pragma once
 
 #include <TNL/Config/ParameterContainer.h>
 #include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
 
 using namespace TNL;
 
 template< typename RealType, typename IndexType >
 bool setupGrid( const Config::ParameterContainer& parameters )
 {
-   const String gridName = parameters.getParameter< String >( "grid-name" );
    const String outputFile = parameters.getParameter< String >( "output-file" );
    const int dimension = parameters.getParameter< int >( "dimension" );
    if( dimension == 1 )
@@ -39,16 +38,11 @@ bool setupGrid( const Config::ParameterContainer& parameters )
       grid.setDomain( PointType( originX ), PointType( proportionsX ) );
       grid.setDimensions( CoordinatesType( sizeX ) );
       std::cout << "Setting dimensions to  ... " << sizeX << std::endl;
-      std::cout << "Writing the grid to the file " << outputFile << " .... ";      
-      try
-      {
-         grid.save( outputFile );
-      }
-      catch(...)
-      {
-         std::cerr << "[ FAILED ] " << std::endl;
-         return false;
-      }
+      std::cout << "Writing the grid to the file " << outputFile << std::endl;
+
+      std::ofstream file( outputFile );
+      Meshes::Writers::VTIWriter< GridType > writer( file );
+      writer.writeImageData( grid );
    }
    if( dimension == 2 )
    {
@@ -74,23 +68,17 @@ bool setupGrid( const Config::ParameterContainer& parameters )
          {
             double h = min( grid.getSpaceSteps().x(), grid.getSpaceSteps().y() );
             grid.setSpaceSteps( PointType( h, h ) );
-            std::cout << "Adjusting grid space steps to " << grid.getSpaceSteps() 
+            std::cout << "Adjusting grid space steps to " << grid.getSpaceSteps()
                       << " and grid proportions to " << grid.getProportions() << "."  << std::endl;
 
          }
       }
       std::cout << "Setting dimensions to  ... " << grid.getDimensions() << std::endl;
-      std::cout << "Writing the grid to the file " << outputFile << " .... ";
+      std::cout << "Writing the grid to the file " << outputFile << std::endl;
 
-      try
-      {
-         grid.save( outputFile );
-      }
-      catch(...)
-      {
-         std::cerr << "[ FAILED ] " << std::endl;
-         return false;
-      }
+      std::ofstream file( outputFile );
+      Meshes::Writers::VTIWriter< GridType > writer( file );
+      writer.writeImageData( grid );
    }
    if( dimension == 3 )
    {
@@ -121,22 +109,16 @@ bool setupGrid( const Config::ParameterContainer& parameters )
          {
             double h = min( grid.getSpaceSteps().x(), min( grid.getSpaceSteps().y(), grid.getSpaceSteps().z() ) );
             grid.setSpaceSteps( PointType( h, h, h ) );
-            std::cout << "Adjusting grid space steps to " << grid.getSpaceSteps() 
+            std::cout << "Adjusting grid space steps to " << grid.getSpaceSteps()
                       << " and grid proportions to " << grid.getProportions() << "." << std::endl;
          }
       }
       std::cout << "Setting dimensions to  ... " << grid.getDimensions() << std::endl;
-      std::cout << "Writing the grid to the file " << outputFile << " .... ";      
+      std::cout << "Writing the grid to the file " << outputFile << std::endl;
 
-      try
-      {
-         grid.save( outputFile );
-      }
-      catch(...)
-      {
-         std::cerr << "[ FAILED ] " << std::endl;
-         return false;
-      }
+      std::ofstream file( outputFile );
+      Meshes::Writers::VTIWriter< GridType > writer( file );
+      writer.writeImageData( grid );
    }
    std::cout << "[ OK ] " << std::endl;
    return true;
@@ -155,7 +137,7 @@ bool resolveIndexType( const Config::ParameterContainer& parameters )
    return false;
 }
 
-bool resolveRealType( const Config::ParameterContainer& parameters )
+inline bool resolveRealType( const Config::ParameterContainer& parameters )
 {
    String realType = parameters.getParameter< String >( "real-type" );
    std::cout << "Setting real type to   ... " << realType << std::endl;
@@ -168,5 +150,3 @@ bool resolveRealType( const Config::ParameterContainer& parameters )
    std::cerr << "The real type '" << realType << "' is not supported." << std::endl;
    return false;
 }
-
-#endif /* TNL_GRID_SETUP_H_ */
diff --git a/src/Tools/tnl-grid-to-mesh.cpp b/src/Tools/tnl-grid-to-mesh.cpp
index fc0bb42484a4cedf2dfb4609b4cc82d6141f8732..e2d255eb06376a4e397569b24bfbb84810d78152 100644
--- a/src/Tools/tnl-grid-to-mesh.cpp
+++ b/src/Tools/tnl-grid-to-mesh.cpp
@@ -178,13 +178,11 @@ struct MeshCreator< Meshes::Grid< 3, Real, Device, Index > >
 };
 
 template< typename Grid >
-bool convertGrid( Grid& grid, const String& fileName, const String& outputFileName, const String& outputFormat )
+bool convertGrid( Grid& grid, const String& outputFileName, const String& outputFormat )
 {
    using MeshCreator = MeshCreator< Grid >;
    using Mesh = typename MeshCreator::MeshType;
 
-   grid.load( fileName );
-
    Mesh mesh;
    if( ! MeshCreator::run( grid, mesh ) ) {
       std::cerr << "Unable to build mesh from grid." << std::endl;
@@ -241,7 +239,7 @@ main( int argc, char* argv[] )
 
    auto wrapper = [&] ( const auto& reader, auto&& grid )
    {
-      return convertGrid( grid, inputFileName, outputFileName, outputFileFormat );
+      return convertGrid( grid, outputFileName, outputFileFormat );
    };
-   return ! Meshes::resolveMeshType< GridToMeshConfigTag, Devices::Host >( wrapper, inputFileName );
+   return ! Meshes::resolveAndLoadMesh< GridToMeshConfigTag, Devices::Host >( wrapper, inputFileName );
 }
diff --git a/src/Tools/tnl-image-converter.cpp b/src/Tools/tnl-image-converter.cpp
index d1ef8fa92b4dfceac9a8d8426c66b823020cc87e..b707b70c0f2c81fe1edf2c62b51ed99b6091316f 100644
--- a/src/Tools/tnl-image-converter.cpp
+++ b/src/Tools/tnl-image-converter.cpp
@@ -23,62 +23,48 @@ using namespace TNL;
 void configSetup( Config::ConfigDescription& config )
 {
    config.addDelimiter( "General parameters" );
-   config.addList < String >( "input-images",  "Input images for conversion to .tnl files." );
-   config.addList < String >( "input-files",   "Input .tnl files for conversion to images." );
-   config.addEntry        < String >( "image-format",  "Output images file format.", "pgm" );
-   config.addEntry        < String >( "mesh-file",     "Mesh file.", "mesh.tnl" );
-   config.addEntry        < String >( "real-type",     "Output mesh function real type.", "double" );
-      config.addEntryEnum < String >( "float" );
-      config.addEntryEnum < String >( "double" );
-      config.addEntryEnum < String >( "long-double" );   
-   config.addEntry        < bool >     ( "one-mesh-file", "Generate only one mesh file. All the images dimensions must be the same.", true );
-   config.addEntry        < int >      ( "roi-top",       "Top (smaller number) line of the region of interest.", -1 );
-   config.addEntry        < int >      ( "roi-bottom",    "Bottom (larger number) line of the region of interest.", -1 );
-   config.addEntry        < int >      ( "roi-left",      "Left (smaller number) column of the region of interest.", -1 );
-   config.addEntry        < int >      ( "roi-right",     "Right (larger number) column of the region of interest.", -1 );
-   config.addEntry        < bool >      ( "verbose",       "Set the verbosity of the program.", true );
+   config.addList< String >( "input-images", "Input images for conversion to VTI files." );
+   config.addList< String >( "input-files", "Input VTI files for conversion to images." );
+   config.addEntry< String >( "image-format", "Output images file format.", "pgm" );
+   config.addEntry< String >( "mesh-function-name", "Name of the mesh function in the VTI files.", "image" );
+   config.addEntry< String >( "real-type", "Output mesh function real type.", "double" );
+      config.addEntryEnum< String >( "float" );
+      config.addEntryEnum< String >( "double" );
+      config.addEntryEnum< String >( "long-double" );
+   config.addEntry< int >( "roi-top",    "Top (smaller number) line of the region of interest.", -1 );
+   config.addEntry< int >( "roi-bottom", "Bottom (larger number) line of the region of interest.", -1 );
+   config.addEntry< int >( "roi-left",   "Left (smaller number) column of the region of interest.", -1 );
+   config.addEntry< int >( "roi-right",  "Right (larger number) column of the region of interest.", -1 );
 }
 
 template< typename Real >
 bool processImages( const Config::ParameterContainer& parameters )
 {
-    const std::vector< String >& inputImages = parameters.getParameter< std::vector< String > >( "input-images" );
-    String meshFile = parameters.getParameter< String >( "mesh-file" );
-    bool verbose = parameters.getParameter< bool >( "verbose" );
- 
-    using GridType = Meshes::Grid< 2, Real, Devices::Host, int >;
-    using GridPointer = Pointers::SharedPointer< GridType >;
-    using MeshFunctionType = Functions::MeshFunction< GridType >;
-    GridPointer grid;
-    MeshFunctionType meshFunction;
+   const std::vector< std::string > inputImages = parameters.getParameter< std::vector< std::string > >( "input-images" );
+   const std::string meshFunctionName = parameters.getParameter< std::string >( "mesh-function-name" );
 
-    Images::RegionOfInterest< int > roi;
-    for( int i = 0; i < (int) inputImages.size(); i++ )
-    {
-      const String& fileName = inputImages[ i ];
+   using GridType = Meshes::Grid< 2, Real, Devices::Host, int >;
+   using GridPointer = Pointers::SharedPointer< GridType >;
+   using MeshFunctionType = Functions::MeshFunction< GridType >;
+   GridPointer grid;
+   MeshFunctionType meshFunction;
+
+   Images::RegionOfInterest< int > roi;
+   for( auto fileName : inputImages )
+   {
+      const String outputFileName = removeFileNameExtension( fileName ) + ".vti";
       std::cout << "Processing image file " << fileName << "... ";
       Images::PGMImage< int > pgmImage;
       if( pgmImage.openForRead( fileName ) )
       {
          std::cout << "PGM format detected ...";
-         if( i == 0 )
-         {
-            if( ! roi.setup( parameters, &pgmImage ) )
-               return false;
-            roi.setGrid( *grid, verbose );
-            //vector.setSize( grid->template getEntitiesCount< typename GridType::Cell >() );
-            std::cout << "Writing grid to file " << meshFile << std::endl;
-            grid->save( meshFile );
-         }
-         else
-            if( ! roi.check( &pgmImage ) )
-               return false;
+         if( ! roi.check( &pgmImage ) )
+            return false;
          meshFunction.setMesh( grid );
          if( ! pgmImage.read( roi, meshFunction ) )
             return false;
-         String outputFileName = removeFileNameExtension( fileName ) + ".tnl";
          std::cout << "Writing image data to " << outputFileName << std::endl;
-         meshFunction.save( outputFileName );
+         meshFunction.write( meshFunctionName, outputFileName );
          pgmImage.close();
          continue;
       }
@@ -86,50 +72,28 @@ bool processImages( const Config::ParameterContainer& parameters )
       if( pngImage.openForRead( fileName ) )
       {
          std::cout << "PNG format detected ...";
-         if( i == 0 )
-         {
-            if( ! roi.setup( parameters, &pngImage ) )
-               return false;
-            roi.setGrid( *grid, verbose );
-            //vector.setSize( grid->template getEntitiesCount< typename GridType::Cell >() );
-            std::cout << "Writing grid to file " << meshFile << std::endl;
-            grid->save( meshFile );
-         }
-         else
-            if( ! roi.check( &pgmImage ) )
-               return false;
+         if( ! roi.check( &pngImage ) )
+            return false;
          meshFunction.setMesh( grid );
          if( ! pngImage.read( roi, meshFunction ) )
             return false;
-         String outputFileName = removeFileNameExtension( fileName ) + ".tnl";
          std::cout << "Writing image data to " << outputFileName << std::endl;
-         meshFunction.save( outputFileName );
-         pgmImage.close();
+         meshFunction.write( meshFunctionName, outputFileName );
+         pngImage.close();
          continue;
       }
       Images::JPEGImage< int > jpegImage;
       if( jpegImage.openForRead( fileName ) )
       {
          std::cout << "JPEG format detected ...";
-         if( i == 0 )
-         {
-            if( ! roi.setup( parameters, &jpegImage ) )
-               return false;
-            roi.setGrid( *grid, verbose );
-            //vector.setSize( grid->template getEntitiesCount< typename GridType::Cell >() );
-            std::cout << "Writing grid to file " << meshFile << std::endl;
-            grid->save( meshFile );
-         }
-         else
-            if( ! roi.check( &jpegImage ) )
-               return false;
+         if( ! roi.check( &jpegImage ) )
+            return false;
          meshFunction.setMesh( grid );
          if( ! jpegImage.read( roi, meshFunction ) )
             return false;
-         String outputFileName = removeFileNameExtension( fileName ) + ".tnl";
          std::cout << "Writing image data to " << outputFileName << std::endl;
-         meshFunction.save( outputFileName );
-         pgmImage.close();
+         meshFunction.write( meshFunctionName, outputFileName );
+         jpegImage.close();
          continue;
       }
    }
@@ -138,63 +102,50 @@ bool processImages( const Config::ParameterContainer& parameters )
 
 bool processFiles( const Config::ParameterContainer& parameters )
 {
-   const std::vector< String >& inputFiles = parameters.getParameter< std::vector< String > >( "input-files" );
-   const String& imageFormat = parameters.getParameter< String >( "image-format" );
-   String meshFile = parameters.getParameter< String >( "mesh-file" );
- 
-   Meshes::Grid< 2, double, Devices::Host, int > grid;
-   try
-   {
-      grid.load( meshFile );
-   }
-   catch(...)
-   {
-      std::cerr << "I am not able to load the mesh file " << meshFile << "." << std::endl;
-      return false;
-   }
-   Containers::Vector< double, Devices::Host, int > vector;
-   for( int i = 0; i < (int) inputFiles.size(); i++ )
+   const std::vector< std::string > inputFiles = parameters.getParameter< std::vector< std::string > >( "input-files" );
+   const std::string imageFormat = parameters.getParameter< std::string >( "image-format" );
+   const std::string meshFunctionName = parameters.getParameter< std::string >( "mesh-function-name" );
+
+   for( auto fileName : inputFiles )
    {
-      const String& fileName = inputFiles[ i ];
       std::cout << "Processing file " << fileName << "... ";
-      try
-      {
-         File( fileName, std::ios_base::in ) >> vector;
-      }
-      catch(...)
-      {
-         std::cerr << "I am not able to load data from a file " << fileName << "." << std::endl;
+      using Real = double;
+      using GridType = Meshes::Grid< 2, Real, Devices::Host, int >;
+      using GridPointer = Pointers::SharedPointer< GridType >;
+      using MeshFunctionType = Functions::MeshFunction< GridType >;
+      GridPointer grid;
+      MeshFunctionType meshFunction;
+      if( ! Functions::readMeshFunction( meshFunction, meshFunctionName, fileName ) )
          return false;
-      }
+
       if( imageFormat == "pgm" || imageFormat == "pgm-binary" || imageFormat == "pgm-ascii" )
       {
          Images::PGMImage< int > image;
-         String outputFileName = removeFileNameExtension( fileName ) + ".pgm";
-	 if ( imageFormat == "pgm" || imageFormat == "pgm-binary")
-         	image.openForWrite( outputFileName, grid, true );
-	 if ( imageFormat == "pgm-ascii" )
-         	image.openForWrite( outputFileName, grid, false );
-         image.write( grid, vector );
+         const String outputFileName = removeFileNameExtension( fileName ) + ".pgm";
+         if ( imageFormat == "pgm" || imageFormat == "pgm-binary")
+            image.openForWrite( outputFileName, *grid, true );
+         if ( imageFormat == "pgm-ascii" )
+            image.openForWrite( outputFileName, *grid, false );
+         image.write( *grid, meshFunction.getData() );
          image.close();
          continue;
       }
       if( imageFormat == "png" )
       {
          Images::PNGImage< int > image;
-         String outputFileName = removeFileNameExtension( fileName ) + ".png";
-         image.openForWrite( outputFileName, grid );
-         image.write( grid, vector );
+         const String outputFileName = removeFileNameExtension( fileName ) + ".png";
+         image.openForWrite( outputFileName, *grid );
+         image.write( *grid, meshFunction.getData() );
          image.close();
       }
       if( imageFormat == "jpg" )
       {
          Images::JPEGImage< int > image;
-         String outputFileName = removeFileNameExtension( fileName ) + ".jpg";
-         image.openForWrite( outputFileName, grid );
-         image.write( grid, vector );
+         const String outputFileName = removeFileNameExtension( fileName ) + ".jpg";
+         image.openForWrite( outputFileName, *grid );
+         image.write( *grid, meshFunction.getData() );
          image.close();
       }
-
    }
    return true;
 }
@@ -220,8 +171,6 @@ int main( int argc, char* argv[] )
          return EXIT_FAILURE;
       if( realType == "double" &&  ! processImages< double >( parameters ) )
          return EXIT_FAILURE;
-      if( realType == "long double" &&  ! processImages< long double >( parameters ) )
-         return EXIT_FAILURE;
    }
    if( parameters.checkParameter( "input-files" ) && ! processFiles( parameters ) )
       return EXIT_FAILURE;
diff --git a/src/Tools/tnl-init.cpp b/src/Tools/tnl-init.cpp
index a1b3a8ff33c259562bb23d779553d23b11368a1a..b1f2626d9c880587fb9db952f7aa25daf027ed09 100644
--- a/src/Tools/tnl-init.cpp
+++ b/src/Tools/tnl-init.cpp
@@ -13,18 +13,40 @@
 #include <TNL/File.h>
 #include <TNL/Config/parseCommandLine.h>
 #include <TNL/Functions/TestFunction.h>
-#include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
 
 #include <TNL/MPI/ScopedInitializer.h>
 #include <TNL/MPI/Config.h>
 
-
 using namespace TNL;
 
+struct TnlInitConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+// Configure real types
+template<> struct GridRealTag< TnlInitConfigTag, float > { enum { enabled = true }; };
+template<> struct GridRealTag< TnlInitConfigTag, double > { enum { enabled = true }; };
+template<> struct GridRealTag< TnlInitConfigTag, long double > { enum { enabled = false }; };
+
+// Configure index types
+template<> struct GridIndexTag< TnlInitConfigTag, short int >{ enum { enabled = false }; };
+template<> struct GridIndexTag< TnlInitConfigTag, int >{ enum { enabled = true }; };
+template<> struct GridIndexTag< TnlInitConfigTag, long int >{ enum { enabled = true }; };
+
+// Unstructured meshes are disabled, only grids can be on input.
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
+
 void setupConfig( Config::ConfigDescription& config )
 {
-   config.addDelimiter                            ( "General settings:" );
-   config.addEntry< String >( "mesh", "Mesh file. If none is given, a regular rectangular mesh is assumed.", "mesh.tnl" );
+   config.addDelimiter( "General settings:" );
+   config.addEntry< String >( "mesh", "Input mesh file.", "mesh.vti" );
+   config.addEntry< String >( "mesh-function-name", "Name of the mesh function in the VTI files.", "f" );
    config.addEntry< String >( "real-type", "Precision of the function evaluation.", "mesh-real-type" );
       config.addEntryEnum< String >( "mesh-real-type" );
       config.addEntryEnum< String >( "float" );
@@ -41,12 +63,10 @@ void setupConfig( Config::ConfigDescription& config )
    config.addEntry< bool >( "check-output-file", "If the output file already exists, do not recreate it.", false );
    config.addEntry< String >( "help", "Write help." );
 
-   config.addDelimiter                            ( "Functions parameters:" );
+   config.addDelimiter( "Functions parameters:" );
    Functions::TestFunction< 1 >::configSetup( config );
 }
 
-
-
 int main( int argc, char* argv[] )
 {
    Config::ParameterContainer parameters;
@@ -60,26 +80,13 @@ int main( int argc, char* argv[] )
    if( ! parseCommandLine( argc, argv, configDescription, parameters ) )
       return EXIT_FAILURE;
 
-   String meshFile = parameters. getParameter< String >( "mesh" );
-   String meshType;
-   try
-   {
-      meshType = getObjectType( meshFile );
-   }
-   catch(...)
-   {
-      std::cerr << "I am not able to detect the mesh type from the file " << meshFile << "." << std::endl;
-      return EXIT_FAILURE;
-   }
-   std::cout << meshType << " detected in " << meshFile << " file." << std::endl;
-   std::vector< String > parsedMeshType = parseObjectType( meshType );
-   if( ! parsedMeshType.size() )
-   {
-      std::cerr << "Unable to parse the mesh type " << meshType << "." << std::endl;
-      return EXIT_FAILURE;
-   }
-   if( ! resolveMeshType( parsedMeshType, parameters ) )
-      return EXIT_FAILURE;
+   const String meshFileName = parameters.getParameter< String >( "mesh" );
+   const String meshFileFormat = "auto";
 
-   return EXIT_SUCCESS;
+   auto wrapper = [&] ( auto& reader, auto&& mesh ) -> bool
+   {
+      using MeshType = std::decay_t< decltype(mesh) >;
+      return resolveRealType< MeshType >( parameters );
+   };
+   return ! Meshes::resolveMeshType< TnlInitConfigTag, Devices::Host >( wrapper, meshFileName, meshFileFormat );
 }
diff --git a/src/Tools/tnl-init.h b/src/Tools/tnl-init.h
index e78db1153b9bb52001bba79c182f1401f54307b8..1d8281c00973123688c0ef4961992b15a95b6e34 100644
--- a/src/Tools/tnl-init.h
+++ b/src/Tools/tnl-init.h
@@ -13,15 +13,16 @@
 #include <TNL/MPI/Wrappers.h>
 #include <TNL/Config/ParameterContainer.h>
 #include <TNL/Meshes/Grid.h>
+#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
+#include <TNL/Meshes/Readers/VTIReader.h>
+#include <TNL/Meshes/Readers/PVTIReader.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
+#include <TNL/Meshes/Writers/PVTIWriter.h>
 #include <TNL/Functions/TestFunction.h>
 #include <TNL/Operators/FiniteDifferences.h>
 #include <TNL/FileName.h>
 #include <TNL/Functions/MeshFunction.h>
 
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
-#include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
-
 using namespace TNL;
 
 template< typename MeshType,
@@ -35,28 +36,21 @@ bool renderFunction( const Config::ParameterContainer& parameters )
    using DistributedGridType = Meshes::DistributedMeshes::DistributedMesh<MeshType>;
    DistributedGridType distributedMesh;
    Pointers::SharedPointer< MeshType > meshPointer;
-   MeshType globalMesh;
 
-   if(TNL::MPI::GetSize() > 1)
-   {
-       //suppose global mesh loaded from single file
-       String meshFile = parameters.getParameter< String >( "mesh" );
-       std::cout << "+ -> Loading mesh from " << meshFile << " ... " << std::endl;
-       globalMesh.load( meshFile );
+   const String meshFile = parameters.getParameter< String >( "mesh" );
+   std::cout << "+ -> Loading mesh from " << meshFile << " ... " << std::endl;
 
-       // TODO: This should work with no overlaps
-       distributedMesh.setGlobalGrid(globalMesh);
-       typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-       SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedMesh, lowerOverlap, upperOverlap, 1 );
-       distributedMesh.setOverlaps( lowerOverlap, upperOverlap );
-       distributedMesh.setupGrid(*meshPointer);
-    }
-    else
-    {
-       String meshFile = parameters.getParameter< String >( "mesh" );
-       std::cout << "+ -> Loading mesh from " << meshFile << " ... " << std::endl;
-       meshPointer->load( meshFile );
-    }
+   if( TNL::MPI::GetSize() > 1 )
+   {
+      Meshes::Readers::PVTIReader reader( meshFile );
+      reader.loadMesh( distributedMesh );
+      *meshPointer = distributedMesh.getLocalMesh();
+   }
+   else
+   {
+      Meshes::Readers::VTIReader reader( meshFile );
+      reader.loadMesh( *meshPointer );
+   }
 
    typedef Functions::TestFunction< MeshType::getMeshDimension(), RealType > FunctionType;
    typedef Pointers::SharedPointer<  FunctionType, typename MeshType::DeviceType > FunctionPointer;
@@ -81,7 +75,6 @@ bool renderFunction( const Config::ParameterContainer& parameters )
 
    while( step <= steps )
    {
-
       if( numericalDifferentiation )
       {
         std::cout << "+ -> Computing the finite differences ... " << std::endl;
@@ -107,22 +100,28 @@ bool renderFunction( const Config::ParameterContainer& parameters )
          outputFileName.setExtension( extension.getString() );
          outputFileName.setIndex( step );
          outputFile = outputFileName.getFileName();
-        std::cout << "+ -> Writing the function at the time " << time << " to " << outputFile << " ... " << std::endl;
+         std::cout << "+ -> Writing the function at the time " << time << " to " << outputFile << " ... " << std::endl;
       }
       else
-        std::cout << "+ -> Writing the function to " << outputFile << " ... " << std::endl;
+         std::cout << "+ -> Writing the function to " << outputFile << " ... " << std::endl;
+
+      const std::string meshFunctionName = parameters.getParameter< std::string >( "mesh-function-name" );
 
-      if(TNL::MPI::GetSize() > 1)
+      if( TNL::MPI::GetSize() > 1 )
       {
-         if( ! Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType> ::save(outputFile, *meshFunction ) )
-            return false;
+         // TODO: write metadata: step and time
+         Functions::writeDistributedMeshFunction( distributedMesh, *meshFunction, meshFunctionName, outputFile );
       }
       else
-        meshFunction->save( outputFile);
+      {
+         // TODO: write metadata: step and time
+         meshFunction->write( meshFunctionName, outputFile, "auto" );
+      }
 
       time += tau;
       step ++;
    }
+
    return true;
 }
 
@@ -228,64 +227,3 @@ bool resolveRealType( const Config::ParameterContainer& parameters )
 //      return resolveDerivatives< MeshType, long double >( parameters );
    return false;
 }
-
-
-template< int Dimension, typename RealType, typename IndexType >
-bool resolveMesh( const std::vector< String >& parsedMeshType,
-                  const Config::ParameterContainer& parameters )
-{
-   std::cout << "+ -> Setting mesh type to " << parsedMeshType[ 0 ] << " ... " << std::endl;
-   if( parsedMeshType[ 0 ] == "Meshes::Grid" )
-   {
-      typedef Meshes::Grid< Dimension, RealType, Devices::Host, IndexType > MeshType;
-      return resolveRealType< MeshType >( parameters );
-   }
-   std::cerr << "Unknown mesh type." << std::endl;
-   return false;
-}
-
-template< int Dimension, typename RealType >
-bool resolveIndexType( const std::vector< String >& parsedMeshType,
-                       const Config::ParameterContainer& parameters )
-{
-   std::cout << "+ -> Setting index type to " << parsedMeshType[ 4 ] << " ... " << std::endl;
-
-   if( parsedMeshType[ 4 ] == "int" )
-      return resolveMesh< Dimension, RealType, int >( parsedMeshType, parameters );
-   if( parsedMeshType[ 4 ] == "long int" )
-      return resolveMesh< Dimension, RealType, long int >( parsedMeshType, parameters );
-
-   return false;
-}
-
-template< int Dimension >
-bool resolveRealType( const std::vector< String >& parsedMeshType,
-                      const Config::ParameterContainer& parameters )
-{
-   std::cout << "+ -> Setting real type to " << parsedMeshType[ 2 ] << " ... " << std::endl;
-
-   if( parsedMeshType[ 2 ] == "float" )
-      return resolveIndexType< Dimension, float >( parsedMeshType, parameters );
-   if( parsedMeshType[ 2 ] == "double" )
-      return resolveIndexType< Dimension, double >( parsedMeshType, parameters );
-//   if( parsedMeshType[ 2 ] == "long double" )
-//      return resolveIndexType< Dimension, long double >( parsedMeshType, parameters );
-
-   return false;
-}
-
-bool resolveMeshType( const std::vector< String >& parsedMeshType,
-                      const Config::ParameterContainer& parameters )
-{
-   std::cout << "+ -> Setting dimensions to " << parsedMeshType[ 1 ] << " ... " << std::endl;
-   int dimensions = atoi( parsedMeshType[ 1 ].getString() );
-
-   if( dimensions == 1 )
-      return resolveRealType< 1 >( parsedMeshType, parameters );
-   if( dimensions == 2 )
-      return resolveRealType< 2 >( parsedMeshType, parameters );
-   if( dimensions == 3 )
-      return resolveRealType< 3 >( parsedMeshType, parameters );
-
-   return false;
-}
diff --git a/src/Tools/tnl-lattice-init.cpp b/src/Tools/tnl-lattice-init.cpp
deleted file mode 100644
index a4aa1ba0cfdeb05dd97f168d62f0069edd9159a9..0000000000000000000000000000000000000000
--- a/src/Tools/tnl-lattice-init.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/***************************************************************************
-                          tnl-lattice-init.cpp  -  description
-                             -------------------
-    begin                : Jun 13, 2018
-    copyright            : (C) 2018 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#include "tnl-lattice-init.h"
-
-#include <TNL/Config/parseCommandLine.h>
-
-
-using namespace TNL;
-
-void setupConfig( Config::ConfigDescription& config )
-{
-   config.addDelimiter                            ( "General settings:" );
-   config.addEntry< String >( "mesh", "Mesh file of the 3D lattice.", "mesh.tnl" );
-   config.addEntry< String >( "real-type", "Precision of the function evaluation.", "mesh-real-type" );
-      config.addEntryEnum< String >( "mesh-real-type" );
-      config.addEntryEnum< String >( "float" );
-      config.addEntryEnum< String >( "double" );
-//      config.addEntryEnum< String >( "long-double" );
-   config.addEntry< String >( "profile-mesh", "Mesh file of the 2D mesh function with geometry profile", "profile-mesh.tnl" );
-   config.addEntry< String >( "profile-file", "The profile mesh function file.", "profile.tnl" );
-   config.addEntry< String >( "output-file", "Output 3D mesh function file.", "init.tnl" );
-   config.addEntry< String >( "input-file", "Input 3D mesh function file to be modified." );
-   config.addEntry< String >( "operation", "Operation to be done with the profile.", "extrude" );
-      config.addEntryEnum< String >( "extrude" );
-   config.addEntry< String >( "profile-orientation", "Axis the profile is orthogonal to.", "z" );
-      config.addEntryEnum< String >( "x" );
-      config.addEntryEnum< String >( "y" );
-      config.addEntryEnum< String >( "z" );
-   config.addEntry< double >( "profile-shift-x", "Shift of the profile along x axis", 0.0 );
-   config.addEntry< double >( "profile-shift-y", "Shift of the profile along y axis", 0.0 );
-   config.addEntry< double >( "profile-shift-z", "Shift of the profile along z axis", 0.0 );
-   config.addEntry< double >( "profile-scale-x", "Scaling of the profile along x axis", 1.0 );
-   config.addEntry< double >( "profile-scale-y", "Scaling of the profile along y axis", 1.0 );      
-   config.addEntry< double >( "profile-scale-z", "Scaling of the profile along z axis", 1.0 );
-   config.addEntry< double >( "profile-rotation", "Profile rotation around its center.", 0.0 );
-   config.addEntry< double >( "extrude-start", "Position where the extrude operation starts.", 0.0 );
-   config.addEntry< double >( "extrude-stop", "Position where the extrude operation stops.", 1.0 );
-}
-
-
-
-int main( int argc, char* argv[] )
-{
-
-   Config::ParameterContainer parameters;
-   Config::ConfigDescription configDescription;
-
-   setupConfig( configDescription );
-   
-   if( ! Config::parseCommandLine( argc, argv, configDescription, parameters ) )
-      return EXIT_FAILURE;
-   
-   if( ! resolveProfileMeshType( parameters ) )
-      return EXIT_FAILURE;
-
-   return EXIT_SUCCESS;   
-}
diff --git a/src/Tools/tnl-lattice-init.h b/src/Tools/tnl-lattice-init.h
deleted file mode 100644
index 71a09636c5c5bec19c10e71ce5869bd2a790f9a2..0000000000000000000000000000000000000000
--- a/src/Tools/tnl-lattice-init.h
+++ /dev/null
@@ -1,391 +0,0 @@
-/***************************************************************************
-                          tnl-lattice-init.cpp  -  description
-                             -------------------
-    begin                : Jun 13, 2018
-    copyright            : (C) 2018 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#pragma once
-
-#include <TNL/Object.h>
-#include <TNL/Config/ParameterContainer.h>
-#include <TNL/Meshes/Grid.h>
-#include <TNL/Meshes/GridEntity.h>
-#include <TNL/Functions/MeshFunction.h>
-
-using namespace TNL;
-
-template< typename MeshFunction, typename ProfileMeshFunction >
-bool performExtrude( const Config::ParameterContainer& parameters,
-                     MeshFunction& f,
-                     const ProfileMeshFunction& profile )
-{
-   using MeshPointer = Pointers::SharedPointer< typename MeshFunction::MeshType >;
-   using ProfileMeshPointer = Pointers::SharedPointer< typename ProfileMeshFunction::MeshType >;
-   using ProfileMeshType = typename ProfileMeshFunction::MeshType;
-   using MeshType = typename MeshFunction::MeshType;
-   using RealType = typename MeshFunction::RealType;
-   using IndexType = typename MeshType::IndexType;
-   using CellType = typename MeshType::Cell;
-   using PointType = typename MeshType::PointType;
-   using ProfilePointType = typename ProfileMeshType::PointType;
-   using ProfileCellType = typename ProfileMeshType::Cell;
-   String profileOrientation = parameters.getParameter< String >( "profile-orientation" );
-   if( profileOrientation != "x" && 
-       profileOrientation != "y" &&
-       profileOrientation != "z" )
-   {
-      std::cerr << "Wrong profile orientation " << profileOrientation << "." << std::endl;
-      return false;
-   }
-   double profileShiftX = parameters.getParameter< double >( "profile-shift-x" );
-   double profileShiftY = parameters.getParameter< double >( "profile-shift-y" );
-   double profileShiftZ = parameters.getParameter< double >( "profile-shift-z" );
-   double profileScaleX = parameters.getParameter< double >( "profile-scale-x" );
-   double profileScaleY = parameters.getParameter< double >( "profile-scale-y" );
-   double profileScaleZ = parameters.getParameter< double >( "profile-scale-z" );   
-   double profileRotation = parameters.getParameter< double >( "profile-rotation" );   
-   double extrudeStart = parameters.getParameter< double >( "extrude-start" );
-   double extrudeStop = parameters.getParameter< double >( "extrude-stop" );
-   const MeshType mesh = f.getMesh();
-   ProfileMeshType profileMesh = profile.getMesh();
-   CellType cell( mesh );
-   IndexType& i = cell.getCoordinates().x();
-   IndexType& j = cell.getCoordinates().y();
-   IndexType& k = cell.getCoordinates().z();
-   ProfilePointType profileCenter( profileMesh.getOrigin() + 0.5 * profileMesh.getProportions() );
-   const RealType rotationSin = sin( M_PI * profileRotation / 180.0 );
-   const RealType rotationCos = cos( M_PI * profileRotation / 180.0 );
-   for( i = 0; i < mesh.getDimensions().x(); i++ )
-      for( j = 0; j < mesh.getDimensions().y(); j++ )
-         for( k = 0; k < mesh.getDimensions().z(); k++ )
-         {
-            cell.refresh();
-            PointType p = cell.getCenter();
-            p.x() /= profileScaleX;
-            p.y() /= profileScaleY;
-            p.z() /= profileScaleZ;
-            p.x() -= profileShiftX;
-            p.y() -= profileShiftY;
-            p.z() -= profileShiftZ;
-            if( profileOrientation == "x" )
-            {
-               if( p.z() < profileMesh.getOrigin().x() ||
-                   p.z() > profileMesh.getOrigin().x() + profileMesh.getProportions().x() ||
-                   p.y() < profileMesh.getOrigin().y() ||
-                   p.y() > profileMesh.getOrigin().y() + profileMesh.getProportions().y() )
-                  continue;
-               if( p.x() < extrudeStart || p.x() > extrudeStop )
-                  f( cell ) = 0.0;
-               else
-               {
-                  ProfileCellType profileCell( profileMesh );
-                  ProfilePointType aux1( ( p.z() - profileMesh.getOrigin().x() ),
-                                 ( p.y() - profileMesh.getOrigin().y() ) );
-                  aux1 -= profileCenter;
-                  ProfilePointType aux2( rotationCos * aux1.x() - rotationSin * aux1.y(),
-                                  rotationSin * aux1.x() + rotationCos * aux1.y() );
-                  aux1 = profileCenter + aux2;
-                  if( aux1.x() >= 0 && aux1.y() >= 0 &&
-                      aux1.x() <= profileMesh.getProportions().x() &&
-                      aux1.y() <= profileMesh.getProportions().y() )
-                  {
-                     profileCell.getCoordinates().x() = aux1.x() / profileMesh.getSpaceSteps().x();
-                     profileCell.getCoordinates().y() = aux1.y() / profileMesh.getSpaceSteps().y();
-                     profileCell.refresh();
-                     RealType aux = profile( profileCell );
-                     if( aux ) f( cell ) = aux;
-                  }
-               }
-            }
-            if( profileOrientation == "y" )
-            {
-               if( p.x() < profileMesh.getOrigin().x() ||
-                   p.x() > profileMesh.getOrigin().x() + profileMesh.getProportions().x() ||
-                   p.z() < profileMesh.getOrigin().y() ||
-                   p.z() > profileMesh.getOrigin().y() + profileMesh.getProportions().y() )
-                  continue;
-               if( p.y() < extrudeStart || p.y() > extrudeStop )
-                  f( cell ) = 0.0;
-               else
-               {
-                  ProfileCellType profileCell( profileMesh );
-                  ProfilePointType aux1( ( p.x() - profileMesh.getOrigin().x() ),
-                                 ( p.z() - profileMesh.getOrigin().y() ) );
-                  aux1 -= profileCenter;
-                  ProfilePointType aux2( rotationCos * aux1.x() - rotationSin * aux1.y(),
-                                  rotationSin * aux1.x() + rotationCos * aux1.y() );
-                  aux1 = profileCenter + aux2;
-                  if( aux1.x() >= 0 && aux1.y() >= 0 &&
-                      aux1.x() <= profileMesh.getProportions().x() &&
-                      aux1.y() <= profileMesh.getProportions().y() )
-                  {
-                     profileCell.getCoordinates().x() = aux1.x() / profileMesh.getSpaceSteps().x();
-                     profileCell.getCoordinates().y() = aux1.y() / profileMesh.getSpaceSteps().y();
-                     profileCell.refresh();
-                     RealType aux = profile( profileCell );
-                     if( aux ) f( cell ) = aux;
-                  }
-               }
-            }            
-            if( profileOrientation == "z" )
-            {
-               if( p.x() < profileMesh.getOrigin().x() ||
-                   p.x() > profileMesh.getOrigin().x() + profileMesh.getProportions().x() ||
-                   p.y() < profileMesh.getOrigin().y() ||
-                   p.y() > profileMesh.getOrigin().y() + profileMesh.getProportions().y() )
-                  continue;
-               if( p.z() < extrudeStart || p.z() > extrudeStop )
-                  f( cell ) = 0.0;
-               else
-               {
-                  ProfileCellType profileCell( profileMesh );
-                  ProfilePointType aux1( ( p.x() - profileMesh.getOrigin().x() ),
-                                 ( p.y() - profileMesh.getOrigin().y() ) );
-                  aux1 -= profileCenter;
-                  ProfilePointType aux2( rotationCos * aux1.x() - rotationSin * aux1.y(),
-                                  rotationSin * aux1.x() + rotationCos * aux1.y() );
-                  aux1 = profileCenter + aux2;
-                  if( aux1.x() >= 0 && aux1.y() >= 0 &&
-                      aux1.x() <= profileMesh.getProportions().x() &&
-                      aux1.y() <= profileMesh.getProportions().y() )
-                  {
-                     profileCell.getCoordinates().x() = aux1.x() / profileMesh.getSpaceSteps().x();
-                     profileCell.getCoordinates().y() = aux1.y() / profileMesh.getSpaceSteps().y();
-                     profileCell.refresh();
-                     RealType aux = profile( profileCell );
-                     if( aux ) f( cell ) = aux;
-                  }
-               }
-            }
-         }
-   String outputFile = parameters.getParameter< String >( "output-file" );
-   f.save( outputFile );
-   return true;
-}
-
-
-template< typename Real, typename Mesh, typename ProfileMeshFunction >
-bool
-readProfileMeshFunction( const Config::ParameterContainer& parameters )
-{
-   String profileMeshFile = parameters.getParameter< String >( "profile-mesh" );
-   using ProfileMeshPointer = Pointers::SharedPointer< typename ProfileMeshFunction::MeshType >;
-   ProfileMeshPointer profileMesh;
-   try
-   {
-      profileMesh->load( profileMeshFile );
-   }
-   catch(...)
-   {
-      std::cerr << "Unable to load the profile mesh file." << profileMeshFile << "." << std::endl;
-      return false;
-   }
-   String profileFile = parameters.getParameter< String >( "profile-file" );
-   ProfileMeshFunction profileMeshFunction( profileMesh );
-   try
-   {
-      profileMeshFunction.load( profileFile );
-   }
-   catch(...)
-   {
-      std::cerr << "Unable to load profile mesh function from the file " << profileFile << "." << std::endl;
-      return false;
-   }
-   String meshFile = parameters.getParameter< String >( "mesh" );
-   using MeshPointer = Pointers::SharedPointer< Mesh >;
-   MeshPointer mesh;
-   try
-   {
-      mesh->load( meshFile );
-   }
-   catch(...)
-   {
-      std::cerr << "Unable to load 3D mesh from the file " << meshFile << "." << std::endl;
-      return false;
-   }
-   using MeshFunction = Functions::MeshFunction< Mesh, 3, Real >;
-   MeshFunction meshFunction( mesh );
-   if( parameters.checkParameter( "input-file" ) )
-   {
-      const String& inputFile = parameters.getParameter< String >( "input-file" ); 
-      try
-      {
-         meshFunction.load( inputFile );
-      }
-      catch(...)
-      {
-         std::cerr << "Unable to load " << inputFile << "." << std::endl;
-         return false;
-      }
-   }
-   else meshFunction.getData().setValue( 0.0 );
-   if( parameters.getParameter< String >( "operation" ) == "extrude" )
-      performExtrude( parameters, meshFunction, profileMeshFunction );
-   return true;
-}
-
-template< typename ProfileMesh, typename Real, typename Mesh >
-bool resolveProfileReal( const Config::ParameterContainer& parameters )
-{
-   String profileFile = parameters. getParameter< String >( "profile-file" );
-   const String meshFunctionType = getObjectType( profileFile );
-   //std::cout << meshFunctionType << " detected in " << profileFile << " file." << std::endl;
-   const std::vector< String > parsedMeshFunctionType = parseObjectType( meshFunctionType );
-   if( ! parsedMeshFunctionType.size() )
-   {
-      std::cerr << "Unable to parse the mesh function type " << meshFunctionType << "." << std::endl;
-      return EXIT_FAILURE;
-   }
-   //std::cout << parsedMeshFunctionType << std::endl;
-   if( parsedMeshFunctionType[ 0 ] != "Functions::MeshFunction" )
-   {
-      std::cerr << "MeshFunction is required in profile file " << profileFile << "." << std::endl;
-      return false;
-   }
-   if( parsedMeshFunctionType[ 1 ] != getType< ProfileMesh >() )
-   {
-      std::cerr << "The mesh function in the profile file must be defined on " << getType< ProfileMesh >()
-                << " but it is defined on " << parsedMeshFunctionType[ 1 ] << "." << std::endl;
-      return false;
-   }
-   if( parsedMeshFunctionType[ 2 ] != "2" )
-   {
-      std::cerr << "The mesh function must be defined on cells but it is defined on mesh entities with " << parsedMeshFunctionType[ 2 ] << " dimensions." << std::endl;
-      return false;
-   }
-   if( parsedMeshFunctionType[ 3 ] == "float" )
-      return readProfileMeshFunction< Real, Mesh, Functions::MeshFunction< ProfileMesh, 2, float > >( parameters );
-   if( parsedMeshFunctionType[ 3 ] == "double" )
-      return readProfileMeshFunction< Real, Mesh, Functions::MeshFunction< ProfileMesh, 2, double > >( parameters );
-   std::cerr << "Unknown real type " << parsedMeshFunctionType[ 3 ] << " of mesh function in the file " << profileFile << "." << std::endl;
-   return false;
-}
-
-template< typename ProfileMesh, typename Real, typename MeshReal >
-bool resolveMeshIndexType( const std::vector< String >& parsedMeshType,
-                           const Config::ParameterContainer& parameters )
-{
-   if( parsedMeshType[ 4 ] == "int" )
-      return resolveProfileReal< ProfileMesh, Real, Meshes::Grid< 3, MeshReal, Devices::Host, int > >( parameters );
-
-   if( parsedMeshType[ 4 ] == "long int" )
-      return resolveProfileReal< ProfileMesh, Real, Meshes::Grid< 3, MeshReal, Devices::Host, long int > >( parameters );  
-
-   std::cerr << "Unknown index type " << parsedMeshType[ 4 ] << "." << std::endl;
-   return false;
-}
-
-template< typename ProfileMesh, typename Real >
-bool resolveMesh( const Config::ParameterContainer& parameters )
-{
-   String meshFile = parameters.getParameter< String >( "mesh" );
-   const String meshType = getObjectType( meshFile );
-   std::cout << meshType << " detected in " << meshFile << " file." << std::endl;
-   const std::vector< String > parsedMeshType = parseObjectType( meshType );
-   if( ! parsedMeshType.size() )
-   {
-      std::cerr << "Unable to parse the mesh type " << meshType << "." << std::endl;
-      return EXIT_FAILURE;
-   }
-
-   int dimensions = atoi( parsedMeshType[ 1 ].getString() );
-   if( dimensions != 3 )
-   {
-      std::cerr << "The main mesh '" << meshFile << "' must be a 3D grid." << std::endl;
-      return false;
-   }
-
-   std::cout << "+ -> Setting real type to " << parsedMeshType[ 2 ] << " ... " << std::endl;
-
-   if( parsedMeshType[ 2 ] == "float" )
-      return resolveMeshIndexType< ProfileMesh, Real, float >( parsedMeshType, parameters );
-   if( parsedMeshType[ 2 ] == "double" )
-      return resolveMeshIndexType< ProfileMesh, Real, double >( parsedMeshType, parameters );
-//   if( parsedMeshType[ 2 ] == "long double" )
-//      return resolveMeshIndexType< ProfileMesh, Real, long double >( parsedMeshType, parameters );
-
-   return false;
-}
-
-template< typename ProfileMesh >
-bool resolveRealType( const Config::ParameterContainer& parameters )
-{
-   String realType = parameters.getParameter< String >( "real-type" );
-   if( realType == "mesh-real-type" )
-      return resolveMesh< ProfileMesh, typename ProfileMesh::RealType >( parameters );
-   if( realType == "float" )
-      return resolveMesh< ProfileMesh, float >( parameters );
-   if( realType == "double" )
-      return resolveMesh< ProfileMesh, double >( parameters );
-//   if( realType == "long-double" )
-//      return resolveMesh< ProfileMesh, long double >( parameters );
-   return false;
-}
-
-template< typename RealType, typename IndexType >
-bool resolveProfileMesh( const std::vector< String >& parsedMeshType,
-                  const Config::ParameterContainer& parameters )
-{
-  std::cout << "+ -> Setting mesh type to " << parsedMeshType[ 0 ] << " ... " << std::endl;
-   if( parsedMeshType[ 0 ] == "Meshes::Grid" )
-   {
-      typedef Meshes::Grid< 2, RealType, Devices::Host, IndexType > MeshType;
-      return resolveRealType< MeshType >( parameters );
-   }
-   std::cerr << "Unknown mesh type." << std::endl;
-   return false;
-}
-
-template< typename RealType >
-bool resolveProfileMeshIndexType( const std::vector< String >& parsedMeshType,
-                                  const Config::ParameterContainer& parameters )
-{
-  std::cout << "+ -> Setting index type to " << parsedMeshType[ 4 ] << " ... " << std::endl;
-   if( parsedMeshType[ 4 ] == "int" )
-      return resolveProfileMesh< RealType, int >( parsedMeshType, parameters );
-
-   if( parsedMeshType[ 4 ] == "long int" )
-      return resolveProfileMesh< RealType, long int >( parsedMeshType, parameters );
-
-   return false;
-}
-
-bool resolveProfileMeshRealType( const std::vector< String >& parsedMeshType,
-                                 const Config::ParameterContainer& parameters )
-{
-   std::cout << "+ -> Setting real type to " << parsedMeshType[ 2 ] << " ... " << std::endl;
-
-   if( parsedMeshType[ 2 ] == "float" )
-      return resolveProfileMeshIndexType< float >( parsedMeshType, parameters );
-   if( parsedMeshType[ 2 ] == "double" )
-      return resolveProfileMeshIndexType< double >( parsedMeshType, parameters );
-//   if( parsedMeshType[ 2 ] == "long double" )
-//      return resolveProfileMeshIndexType< long double >( parsedMeshType, parameters );
-
-   return false;
-}
-
-bool resolveProfileMeshType( const Config::ParameterContainer& parameters )
-{
-   String meshFile = parameters. getParameter< String >( "profile-mesh" );
-   const String meshType = getObjectType( meshFile );
-   std::cout << meshType << " detected in " << meshFile << " file." << std::endl;
-   const std::vector< String > parsedMeshType = parseObjectType( meshType );
-   if( ! parsedMeshType.size() )
-   {
-      std::cerr << "Unable to parse the mesh type " << meshType << "." << std::endl;
-      return EXIT_FAILURE;
-   }
-
-   int dimensions = atoi( parsedMeshType[ 1 ].getString() );
-   if( dimensions != 2 )
-   {
-      std::cerr << "The profile mesh '" << meshFile << "' must be 2D grid." << std::endl;
-      return false;
-   }
-   return resolveProfileMeshRealType( parsedMeshType, parameters );
-}
diff --git a/src/Tools/tnl-mesh-converter.cpp b/src/Tools/tnl-mesh-converter.cpp
index 28ba0de1171db847bcb8e826ae681d7cd53b9d4c..5298ea8f4aa5d0791883aa5ce6befffabd25f855 100644
--- a/src/Tools/tnl-mesh-converter.cpp
+++ b/src/Tools/tnl-mesh-converter.cpp
@@ -12,7 +12,8 @@
 #include <TNL/Meshes/TypeResolver/resolveMeshType.h>
 #include <TNL/Meshes/Writers/VTKWriter.h>
 #include <TNL/Meshes/Writers/VTUWriter.h>
-#include <TNL/Meshes/Writers/NetgenWriter.h>
+//#include <TNL/Meshes/Writers/VTIWriter.h>
+//#include <TNL/Meshes/Writers/NetgenWriter.h>
 
 using namespace TNL;
 
@@ -107,34 +108,29 @@ struct MeshConfigTemplateTag< MeshConverterConfigTag >
 template< typename Mesh >
 bool convertMesh( const Mesh& mesh, const String& inputFileName, const String& outputFileName, const String& outputFormat )
 {
-   if( outputFormat == "tnl" )
-   {
-      try
-      {
-         mesh.save( outputFileName );
-      }
-      catch(...)
-      {
-         std::cerr << "Failed to save the mesh to file '" << outputFileName << "'." << std::endl;
-         return false;
-      }
-   }
-   else if( outputFormat == "vtk" ) {
-      using VTKWriter = Meshes::Writers::VTKWriter< Mesh >;
-      std::ofstream file( outputFileName.getString() );
-      VTKWriter writer( file );
+   if( outputFormat == "vtk" ) {
+      using Writer = Meshes::Writers::VTKWriter< Mesh >;
+      std::ofstream file( outputFileName );
+      Writer writer( file );
       writer.template writeEntities< Mesh::getMeshDimension() >( mesh );
    }
    else if( outputFormat == "vtu" ) {
-      using VTKWriter = Meshes::Writers::VTUWriter< Mesh >;
-      std::ofstream file( outputFileName.getString() );
-      VTKWriter writer( file );
+      using Writer = Meshes::Writers::VTUWriter< Mesh >;
+      std::ofstream file( outputFileName );
+      Writer writer( file );
       writer.template writeEntities< Mesh::getMeshDimension() >( mesh );
    }
+   // FIXME: VTIWriter is not specialized for meshes
+//   else if( outputFormat == "vti" ) {
+//      using Writer = Meshes::Writers::VTIWriter< Mesh >;
+//      std::ofstream file( outputFileName );
+//      Writer writer( file );
+//      writer.writeImageData( mesh );
+//   }
    // FIXME: NetgenWriter is not specialized for grids
 //   else if( outputFormat == "netgen" ) {
 //      using NetgenWriter = Meshes::Writers::NetgenWriter< Mesh >;
-//      std::fstream file( outputFileName.getString() );
+//      std::fstream file( outputFileName );
 //      NetgenWriter::writeMesh( mesh, file );
 //   }
 
@@ -148,9 +144,9 @@ void configSetup( Config::ConfigDescription& config )
    config.addEntry< String >( "input-file-format", "Input mesh file format.", "auto" );
    config.addRequiredEntry< String >( "output-file", "Output mesh file path." );
    config.addRequiredEntry< String >( "output-file-format", "Output mesh file format." );
-   config.addEntryEnum( "tnl" );
    config.addEntryEnum( "vtk" );
    config.addEntryEnum( "vtu" );
+//   config.addEntryEnum( "vti" );
 //   config.addEntryEnum( "netgen" );
 }
 
diff --git a/src/Tools/tnl-test-distributed-mesh.h b/src/Tools/tnl-test-distributed-mesh.h
index d8cff89a00ce8194d7f5b66ab53d09f8452b2c45..833a5d8ac8e4168061534db283209ca4e7155956 100644
--- a/src/Tools/tnl-test-distributed-mesh.h
+++ b/src/Tools/tnl-test-distributed-mesh.h
@@ -28,21 +28,12 @@ namespace TNL {
 namespace Meshes {
 namespace BuildConfigTags {
 
-/****
- * Turn off support for float and long double.
- */
-template<> struct GridRealTag< MyConfigTag, float > { enum { enabled = false }; };
-template<> struct GridRealTag< MyConfigTag, long double > { enum { enabled = false }; };
-
-/****
- * Turn off support for short int and long int indexing.
- */
-template<> struct GridIndexTag< MyConfigTag, short int >{ enum { enabled = false }; };
-template<> struct GridIndexTag< MyConfigTag, long int >{ enum { enabled = false }; };
-
-/****
- * Unstructured meshes.
- */
+// disable all grids
+template< int Dimension, typename Real, typename Device, typename Index >
+struct GridTag< MyConfigTag, Grid< Dimension, Real, Device, Index > >
+{ enum { enabled = false }; };
+
+// Meshes are enabled only for topologies explicitly listed below.
 //template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Edge > { enum { enabled = true }; };
 template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Triangle > { enum { enabled = true }; };
 //template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Quadrangle > { enum { enabled = true }; };
diff --git a/src/Tools/tnl-view.cpp b/src/Tools/tnl-view.cpp
deleted file mode 100644
index 3d9eb4c80b6d1dd29f448ecf01f9992a21f006e4..0000000000000000000000000000000000000000
--- a/src/Tools/tnl-view.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/***************************************************************************
-                          tnl-view.cpp  -  description
-                             -------------------
-    begin                : Jan 21, 2013
-    copyright            : (C) 2013 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#include "tnl-view.h"
-#include <cstdlib>
-#include <TNL/File.h>
-#include <TNL/Config/parseCommandLine.h>
-#include <TNL/Meshes/Grid.h>
-#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
-
-struct TNLViewBuildConfigTag {};
-
-namespace TNL {
-namespace Meshes {
-namespace BuildConfigTags {
-
-/****
- * Turn off support for float and long double.
- */
-//template<> struct GridRealTag< TNLViewBuildConfigTag, float > { enum { enabled = false }; };
-template<> struct GridRealTag< TNLViewBuildConfigTag, long double > { enum { enabled = false }; };
-
-/****
- * Turn off support for short int and long int indexing.
- */
-template<> struct GridIndexTag< TNLViewBuildConfigTag, short int >{ enum { enabled = false }; };
-template<> struct GridIndexTag< TNLViewBuildConfigTag, long int >{ enum { enabled = false }; };
-
-/****
- * Unstructured meshes.
- */
-template<> struct MeshCellTopologyTag< TNLViewBuildConfigTag, Topologies::Edge > { enum { enabled = true }; };
-template<> struct MeshCellTopologyTag< TNLViewBuildConfigTag, Topologies::Triangle > { enum { enabled = true }; };
-template<> struct MeshCellTopologyTag< TNLViewBuildConfigTag, Topologies::Tetrahedron > { enum { enabled = true }; };
-
-// Meshes are enabled only for the world dimension equal to the cell dimension.
-template< typename CellTopology, int WorldDimension >
-struct MeshWorldDimensionTag< TNLViewBuildConfigTag, CellTopology, WorldDimension >
-{ enum { enabled = ( WorldDimension == CellTopology::dimension ) }; };
-
-// Meshes are enabled only for types explicitly listed below.
-template<> struct MeshRealTag< TNLViewBuildConfigTag, float > { enum { enabled = false }; };
-template<> struct MeshRealTag< TNLViewBuildConfigTag, double > { enum { enabled = true }; };
-template<> struct MeshGlobalIndexTag< TNLViewBuildConfigTag, int > { enum { enabled = true }; };
-template<> struct MeshGlobalIndexTag< TNLViewBuildConfigTag, long int > { enum { enabled = false }; };
-template<> struct MeshLocalIndexTag< TNLViewBuildConfigTag, short int > { enum { enabled = true }; };
-
-} // namespace BuildConfigTags
-} // namespace Meshes
-} // namespace TNL
-
-void setupConfig( Config::ConfigDescription& config )
-{
-   config.addDelimiter( "General settings:" );
-   config.addEntry        < String >( "mesh", "Mesh file.", "mesh.tnl" );
-   config.addEntry        < String >( "mesh-format", "Mesh file format.", "auto" );
-   config.addRequiredList < String >( "input-files", "Input files." );
-//   config.addList         < String >( "output-files", "Output files." );
-   config.addEntry        < bool >  ( "check-output-file", "If the output file already exists, do not recreate it.", false );
-
-   config.addDelimiter( "Grid settings:");
-//   config.addList         < double >( "level-lines", "List of level sets which will be drawn." );
-//   config.addEntry        < int >   ( "output-x-size", "X size of the output." );
-//   config.addEntry        < int >   ( "output-y-size", "Y size of the output." );
-//   config.addEntry        < int >   ( "output-z-size", "Z size of the output." );
-   config.addEntry        < String >( "output-format", "Output file format.", "gnuplot" );
-      config.addEntryEnum< String > ( "gnuplot" );
-      config.addEntryEnum< String > ( "vtk" );
-      config.addEntryEnum< String > ( "vtu" );
-   config.addEntry        < int >   ( "verbose", "Set the verbosity of the program.", 1 );
-}
-
-int main( int argc, char* argv[] )
-{
-   Config::ParameterContainer parameters;
-   Config::ConfigDescription conf_desc;
-   setupConfig( conf_desc );
-   if( ! parseCommandLine( argc, argv, conf_desc, parameters ) )
-      return EXIT_FAILURE;
-
-   const String meshFile = parameters.getParameter< String >( "mesh" );
-   const String meshFileFormat = parameters.getParameter< String >( "mesh-format" );
-   auto wrapper = [&] ( const auto& reader, auto&& mesh )
-   {
-      using MeshType = std::decay_t< decltype(mesh) >;
-      return processFiles< MeshType >( parameters );
-   };
-   return ! TNL::Meshes::resolveMeshType< TNLViewBuildConfigTag, Devices::Host >( wrapper, meshFile, meshFileFormat );
-}
diff --git a/src/Tools/tnl-view.h b/src/Tools/tnl-view.h
deleted file mode 100644
index 7be2cd4b135e425f243bcbae28408b35c8a8c2a9..0000000000000000000000000000000000000000
--- a/src/Tools/tnl-view.h
+++ /dev/null
@@ -1,379 +0,0 @@
-/***************************************************************************
-                          tnl-view.h  -  description
-                             -------------------
-    begin                : Jan 21, 2013
-    copyright            : (C) 2013 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-#pragma once
-
-#include <cstdlib>
-#include <TNL/FileName.h>
-#include <TNL/Config/ParameterContainer.h>
-#include <TNL/String.h>
-#include <TNL/Containers/Vector.h>
-#include <TNL/Meshes/Grid.h>
-#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
-#include <TNL/Functions/MeshFunction.h>
-#include <TNL/Functions/MeshFunctionView.h>
-#include <TNL/Functions/VectorField.h>
-
-using namespace TNL;
-
-String getOutputFileName( const String& inputFileName,
-                          const String& outputFormat )
-{
-   String outputFileName = removeFileNameExtension( inputFileName );
-   if( outputFormat == "gnuplot" )
-      return outputFileName + ".gplt";
-   return outputFileName + "." + outputFormat;
-}
-
-
-template< typename MeshFunction >
-bool writeMeshFunction( const typename MeshFunction::MeshPointer& meshPointer,
-                        const String& inputFileName,
-                        const Config::ParameterContainer& parameters  )
-{
-
-   MeshFunction function( meshPointer );
-   std::cout << "Mesh function: " << getType( function ) << std::endl;
-   try
-   {
-      function.load( inputFileName );
-   }
-   catch(...)
-   {
-      std::cerr << "Unable to load mesh function from a file " << inputFileName << "." << std::endl;
-      return false;
-   }
-
-   int verbose = parameters.getParameter< int >( "verbose");
-   String outputFormat = parameters.getParameter< String >( "output-format" );
-   String outputFileName = getOutputFileName( inputFileName, outputFormat );
-   if( verbose )
-     std::cout << " writing to " << outputFileName << " ... " << std::flush;
-
-   return function.write( outputFileName, outputFormat );
-}
-
-template< typename VectorField >
-bool writeVectorField( const typename VectorField::FunctionType::MeshPointer& meshPointer,
-                       const String& inputFileName,
-                       const Config::ParameterContainer& parameters  )
-{
-
-   VectorField field( meshPointer );
-   std::cout << "VectorField: " << getType( field ) << std::endl;
-   try
-   {
-      field.load( inputFileName );
-   }
-   catch(...)
-   {
-      std::cerr << "Unable to load vector field from a file " << inputFileName << "." << std::endl;
-      return false;
-   }
-
-   int verbose = parameters.getParameter< int >( "verbose");
-   String outputFormat = parameters.getParameter< String >( "output-format" );
-   String outputFileName = getOutputFileName( inputFileName, outputFormat );
-   if( verbose )
-     std::cout << " writing to " << outputFileName << " ... " << std::flush;
-
-   return field.write( outputFileName, outputFormat );
-}
-
-
-template< typename MeshPointer,
-          int EntityDimension,
-          typename Real,
-          int VectorFieldSize >
-bool setMeshFunctionRealType( const MeshPointer& meshPointer,
-                              const String& inputFileName,
-                              const std::vector< String >& parsedObjectType,
-                              const Config::ParameterContainer& parameters  )
-{
-   if( VectorFieldSize == 0 )
-      return writeMeshFunction< Functions::MeshFunction< typename MeshPointer::ObjectType, EntityDimension, Real > >( meshPointer, inputFileName, parameters );
-   return writeVectorField< Functions::VectorField< VectorFieldSize, Functions::MeshFunction< typename MeshPointer::ObjectType, EntityDimension, Real > > >( meshPointer, inputFileName, parameters );
-}
-
-template< typename MeshPointer,
-          int EntityDimension,
-          int VectorFieldSize,
-          typename = typename std::enable_if< EntityDimension <= MeshPointer::ObjectType::getMeshDimension() >::type >
-bool setMeshEntityType( const MeshPointer& meshPointer,
-                        const String& inputFileName,
-                        const std::vector< String >& parsedObjectType,
-                        const Config::ParameterContainer& parameters )
-{
-   if( parsedObjectType[ 3 ] == "float" )
-      return setMeshFunctionRealType< MeshPointer, EntityDimension, float, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( parsedObjectType[ 3 ] == "double" )
-      return setMeshFunctionRealType< MeshPointer, EntityDimension, double, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-//   if( parsedObjectType[ 3 ] == "long double" )
-//      return setMeshFunctionRealType< MeshPointer, EntityDimension, long double, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( parsedObjectType[ 3 ] == "int" )
-      return setMeshFunctionRealType< MeshPointer, EntityDimension, int, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( parsedObjectType[ 3 ] == "long int" )
-      return setMeshFunctionRealType< MeshPointer, EntityDimension, long int, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( parsedObjectType[ 3 ] == "bool" )
-      return setMeshFunctionRealType< MeshPointer, EntityDimension, bool, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-
-   std::cerr << "Unsupported arithmetics " << parsedObjectType[ 3 ] << " in mesh function " << inputFileName << std::endl;
-   return false;
-}
-
-template< typename MeshPointer,
-          int EntityDimension,
-          int VectorFieldSize,
-          typename = typename std::enable_if< ( EntityDimension > MeshPointer::ObjectType::getMeshDimension() ) >::type,
-          typename = void >
-bool setMeshEntityType( const MeshPointer& meshPointer,
-                        const String& inputFileName,
-                        const std::vector< String >& parsedObjectType,
-                        const Config::ParameterContainer& parameters )
-{
-   std::cerr << "Unsupported mesh functions entity dimension: " << EntityDimension << "." << std::endl;
-   return false;
-}
-
-template< int VectorFieldSize,
-          typename MeshPointer >
-bool setMeshEntityDimension( const MeshPointer& meshPointer,
-                             const String& inputFileName,
-                             const std::vector< String >& parsedObjectType,
-                             const Config::ParameterContainer& parameters )
-{
-   int meshEntityDimension = atoi( parsedObjectType[ 2 ].getString() );
-   switch( meshEntityDimension )
-   {
-      case 0:
-         return setMeshEntityType< MeshPointer, 0, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-         break;
-      case 1:
-         return setMeshEntityType< MeshPointer, 1, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-         break;
-      case 2:
-         return setMeshEntityType< MeshPointer, 2, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-         break;
-      case 3:
-         return setMeshEntityType< MeshPointer, 3, VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-         break;
-      default:
-         std::cerr << "Unsupported mesh functions entity dimension: " << meshEntityDimension << "." << std::endl;
-         return false;
-   }
-}
-
-template< typename MeshPointer, int VectorFieldSize = 0 >
-bool setMeshFunction( const MeshPointer& meshPointer,
-                      const String& inputFileName,
-                      const std::vector< String >& parsedObjectType,
-                      const Config::ParameterContainer& parameters )
-{
-   std::cerr << parsedObjectType[ 1 ] << std::endl;
-   if( parsedObjectType[ 1 ] != meshPointer->getSerializationType() )
-   {
-      std::cerr << "Incompatible mesh type for the mesh function " << inputFileName << "." << std::endl;
-      return false;
-   }
-   return setMeshEntityDimension< VectorFieldSize >( meshPointer, inputFileName, parsedObjectType, parameters );
-}
-
-template< typename MeshPointer >
-bool setVectorFieldSize( const MeshPointer& meshPointer,
-                         const String& inputFileName,
-                         const std::vector< String >& parsedObjectType,
-                         const Config::ParameterContainer& parameters )
-{
-   int vectorFieldSize = atoi( parsedObjectType[ 1 ].getString() );
-   const std::vector< String > parsedMeshFunctionType = parseObjectType( parsedObjectType[ 2 ] );
-   if( ! parsedMeshFunctionType.size() )
-   {
-      std::cerr << "Unable to parse mesh function type  " << parsedObjectType[ 2 ] << " in a vector field." << std::endl;
-      return false;
-   }
-   switch( vectorFieldSize )
-   {
-      case 1:
-         return setMeshFunction< MeshPointer, 1 >( meshPointer, inputFileName, parsedMeshFunctionType, parameters );
-      case 2:
-         return setMeshFunction< MeshPointer, 2 >( meshPointer, inputFileName, parsedMeshFunctionType, parameters );
-      case 3:
-         return setMeshFunction< MeshPointer, 3 >( meshPointer, inputFileName, parsedMeshFunctionType, parameters );
-   }
-   std::cerr << "Unsupported vector field size " << vectorFieldSize << "." << std::endl;
-   return false;
-}
-
-template< typename MeshPointer, typename Value, typename Real, typename Index, int Dimension >
-bool convertObject( const MeshPointer& meshPointer,
-                    const String& inputFileName,
-                    const std::vector< String >& parsedObjectType,
-                    const Config::ParameterContainer& parameters )
-{
-   int verbose = parameters.getParameter< int >( "verbose");
-   String outputFormat = parameters.getParameter< String >( "output-format" );
-   String outputFileName = getOutputFileName( inputFileName, outputFormat );
-   if( verbose )
-     std::cout << " writing to " << outputFileName << " ... " << std::flush;
-
-
-   if( parsedObjectType[ 0 ] == "Containers::Array" ||
-       parsedObjectType[ 0 ] == "Containers::Vector" )  // TODO: remove deprecated names (Vector is saved as Array)
-   {
-      using MeshType = typename MeshPointer::ObjectType;
-      // FIXME: why is MeshType::GlobalIndexType not the same as Index?
-//      Containers::Vector< Value, Devices::Host, Index > vector;
-      Containers::Vector< Value, Devices::Host, typename MeshType::GlobalIndexType > vector;
-      File( inputFileName, std::ios_base::in ) >> vector;
-      Functions::MeshFunctionView< MeshType, MeshType::getMeshDimension(), Value > mf;
-      mf.bind( meshPointer, vector );
-      mf.write( outputFileName, outputFormat );
-   }
-   return true;
-}
-
-template< typename MeshPointer, typename Value, typename Real, typename Index >
-bool setDimension( const MeshPointer& meshPointer,
-                    const String& inputFileName,
-                    const std::vector< String >& parsedObjectType,
-                    const Config::ParameterContainer& parameters )
-{
-   int dimensions( 0 );
-   if( parsedObjectType[ 0 ] == "Containers::Array" ||
-       parsedObjectType[ 0 ] == "Containers::Vector" )  // TODO: remove deprecated names (Vector is saved as Array)
-      dimensions = 1;
-   switch( dimensions )
-   {
-      case 1:
-         return convertObject< MeshPointer, Value, Real, Index, 1 >( meshPointer, inputFileName, parsedObjectType, parameters );
-      case 2:
-         return convertObject< MeshPointer, Value, Real, Index, 2 >( meshPointer, inputFileName, parsedObjectType, parameters );
-      case 3:
-         return convertObject< MeshPointer, Value, Real, Index, 3 >( meshPointer, inputFileName, parsedObjectType, parameters );
-   }
-   std::cerr << "Cannot convert objects with " << dimensions << " dimensions." << std::endl;
-   return false;
-}
-
-template< typename MeshPointer, typename Value, typename Real >
-bool setIndexType( const MeshPointer& meshPointer,
-                   const String& inputFileName,
-                   const std::vector< String >& parsedObjectType,
-                   const Config::ParameterContainer& parameters )
-{
-   String indexType;
-   if( parsedObjectType[ 0 ] == "Containers::Array" ||
-       parsedObjectType[ 0 ] == "Containers::Vector" )  // TODO: remove deprecated names (Vector is saved as Array)
-      indexType = parsedObjectType[ 3 ];
-
-   if( indexType == "int" )
-      return setDimension< MeshPointer, Value, Real, int >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( indexType == "long-int" )
-      return setDimension< MeshPointer, Value, Real, long int >( meshPointer, inputFileName, parsedObjectType, parameters );
-   std::cerr << "Unknown index type " << indexType << "." << std::endl;
-   return false;
-}
-
-template< typename MeshPointer >
-bool setValueType( const MeshPointer& meshPointer,
-                     const String& inputFileName,
-                     const std::vector< String >& parsedObjectType,
-                     const Config::ParameterContainer& parameters )
-{
-   String elementType;
-
-   if( parsedObjectType[ 0 ] == "Containers::Array" ||
-       parsedObjectType[ 0 ] == "Containers::Vector" )  // TODO: remove deprecated names (Vector is saved as Array)
-      elementType = parsedObjectType[ 1 ];
-
-   if( elementType == "float" )
-      return setIndexType< MeshPointer, float, float >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( elementType == "double" )
-      return setIndexType< MeshPointer, double, double >( meshPointer, inputFileName, parsedObjectType, parameters );
-//   if( elementType == "long double" )
-//      return setIndexType< MeshPointer, long double, long double >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( elementType == "int" )
-      return setIndexType< MeshPointer, int, int >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( elementType == "long int" )
-      return setIndexType< MeshPointer, long int, long int >( meshPointer, inputFileName, parsedObjectType, parameters );
-   if( elementType == "bool" )
-      return setIndexType< MeshPointer, bool, bool >( meshPointer, inputFileName, parsedObjectType, parameters );
-
-   std::cerr << "Unknown element type " << elementType << "." << std::endl;
-   return false;
-}
-
-template< typename Mesh >
-bool processFiles( const Config::ParameterContainer& parameters )
-{
-   int verbose = parameters.getParameter< int >( "verbose");
-   const String meshFile = parameters.getParameter< String >( "mesh" );
-   const String meshFileFormat = parameters.getParameter< String >( "mesh-format" );
-
-   typedef Pointers::SharedPointer< Mesh > MeshPointer;
-   MeshPointer meshPointer;
-   if( ! Meshes::loadMesh( *meshPointer, meshFile, meshFileFormat ) )
-      return false;
-
-   bool checkOutputFile = parameters.getParameter< bool >( "check-output-file" );
-   std::vector< String > inputFiles = parameters.getParameter< std::vector< String > >( "input-files" );
-   bool error( false );
-//#ifdef HAVE_OPENMP
-//#pragma omp parallel for
-//#endif
-   for( int i = 0; i < (int) inputFiles.size(); i++ )
-   {
-      if( verbose )
-        std::cout << "Processing file " << inputFiles[ i ] << " ... " << std::flush;
-
-      String outputFormat = parameters.getParameter< String >( "output-format" );
-      String outputFileName = getOutputFileName( inputFiles[ i ], outputFormat );
-      if( checkOutputFile && fileExists( outputFileName ) )
-      {
-         if( verbose )
-           std::cout << " file already exists. Skipping.            \r" << std::flush;
-         continue;
-      }
-
-      String objectType;
-      try
-      {
-         objectType = getObjectType( inputFiles[ i ] );
-      }
-      catch(...)
-      {
-         std::cerr << "unknown object ... SKIPPING!" << std::endl;
-         continue;
-      }
-
-      if( verbose )
-        std::cout << objectType << " detected ... ";
-
-      const std::vector< String > parsedObjectType = parseObjectType( objectType );
-      if( ! parsedObjectType.size() )
-      {
-         std::cerr << "Unable to parse object type " << objectType << "." << std::endl;
-         error = true;
-         continue;
-      }
-      if( parsedObjectType[ 0 ] == "Containers::Array" ||
-          parsedObjectType[ 0 ] == "Containers::Vector" )  // TODO: remove deprecated names (Vector is saved as Array)
-         setValueType< MeshPointer >( meshPointer, inputFiles[ i ], parsedObjectType, parameters );
-      if( parsedObjectType[ 0 ] == "Functions::MeshFunction" )
-         setMeshFunction< MeshPointer >( meshPointer, inputFiles[ i ], parsedObjectType, parameters );
-      if( parsedObjectType[ 0 ] == "Functions::VectorField" )
-         setVectorFieldSize< MeshPointer >( meshPointer, inputFiles[ i ], parsedObjectType, parameters );
-      if( verbose )
-         std::cout << "[ OK ].  " << std::endl;
-   }
-   if( verbose )
-     std::cout << std::endl;
-   return ! error;
-}
diff --git a/src/UnitTests/Functions/CMakeLists.txt b/src/UnitTests/Functions/CMakeLists.txt
index c04cd70914c3cc7b07305d02f7a82c7d5ec42d2d..36f46f70e82b9f84f411f1f92b13eb18a3ce0361 100644
--- a/src/UnitTests/Functions/CMakeLists.txt
+++ b/src/UnitTests/Functions/CMakeLists.txt
@@ -6,10 +6,22 @@ else()
    set( CPP_TESTS  ${CPP_TESTS} BoundaryMeshFunctionTest MeshFunctionTest )
 endif()
 
+# special tests needing external libraries
+find_package( ZLIB )
+find_package( tinyxml2 QUIET )
+
 foreach( target IN ITEMS ${CPP_TESTS} )
    add_executable( ${target} ${target}.cpp )
    target_compile_options( ${target} PRIVATE ${CXX_TESTS_FLAGS} )
    target_link_libraries( ${target} ${GTEST_BOTH_LIBRARIES} )
+
+   target_compile_definitions(${target} PUBLIC "-DHAVE_ZLIB")
+   target_include_directories(${target} PUBLIC ${ZLIB_INCLUDE_DIRS})
+   target_link_libraries(${target} ${ZLIB_LIBRARIES})
+
+   target_compile_definitions(${target} PUBLIC "-DHAVE_TINYXML2")
+   target_link_libraries(${target} tinyxml2::tinyxml2)
+
    add_test( ${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target}${CMAKE_EXECUTABLE_SUFFIX} )
 endforeach()
 
diff --git a/src/UnitTests/Functions/SaveAndLoadMeshfunctionTest.cpp b/src/UnitTests/Functions/SaveAndLoadMeshfunctionTest.cpp
index f7ea9190729b312cb09a0f89b1a8105802198cde..76da1c43b1d322a0af2fe2297a41eaa466b0d145 100644
--- a/src/UnitTests/Functions/SaveAndLoadMeshfunctionTest.cpp
+++ b/src/UnitTests/Functions/SaveAndLoadMeshfunctionTest.cpp
@@ -20,7 +20,7 @@ using namespace TNL::Meshes;
 using namespace TNL::Functions;
 using namespace TNL::Devices;
 
-static const char* TEST_FILE_NAME = "test_SaveAndLoadMeshFunctionTest.tnl";
+static const char* TEST_FILE_NAME = "test_SaveAndLoadMeshFunctionTest.vti";
 
 //=====================================TEST CLASS==============================================
 
@@ -30,25 +30,20 @@ class TestSaveAndLoadMeshfunction
     public:
         static void Test()
         {
-
             typedef Grid<dim,double,Host,int> MeshType;
             typedef MeshFunctionView<MeshType> MeshFunctionType;
             typedef Vector<double,Host,int> DofType;
             typedef typename MeshType::Cell Cell;
-            typedef typename MeshType::IndexType IndexType;
             typedef typename MeshType::PointType PointType;
 
-            typedef typename MeshType::CoordinatesType CoordinatesType;
             typedef LinearFunction<double,dim> LinearFunctionType;
 
             Pointers::SharedPointer< LinearFunctionType, Host > linearFunctionPtr;
             MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
 
 
-            PointType localOrigin;
-            localOrigin.setValue(-0.5);
-            PointType localProportions;
-            localProportions.setValue(10);
+            PointType localOrigin = -0.5;
+            PointType localProportions = 10;
 
             Pointers::SharedPointer<MeshType>  localGridptr;
             localGridptr->setDimensions(localProportions);
@@ -60,10 +55,7 @@ class TestSaveAndLoadMeshfunction
             localMeshFunctionptr->bind(localGridptr,localDof);
             linearFunctionEvaluator.evaluateAllEntities(localMeshFunctionptr, linearFunctionPtr);
 
-            File file;
-            ASSERT_NO_THROW( file.open( TEST_FILE_NAME, std::ios_base::out ) );
-            ASSERT_NO_THROW( localMeshFunctionptr->save(file) );
-            ASSERT_NO_THROW( file.close() );
+            ASSERT_TRUE( localMeshFunctionptr->write( "funcName", TEST_FILE_NAME ) );
 
             //load other meshfunction on same localgrid from created file
             Pointers::SharedPointer<MeshType>  loadGridptr;
@@ -71,17 +63,11 @@ class TestSaveAndLoadMeshfunction
             loadGridptr->setDomain(localOrigin,localProportions);
 
             DofType loadDof(loadGridptr->template getEntitiesCount< Cell >());
+            loadDof.setValue(-1);
             Pointers::SharedPointer<MeshFunctionType> loadMeshFunctionptr;
             loadMeshFunctionptr->bind(loadGridptr,loadDof);
 
-            for(int i=0;i<loadDof.getSize();i++)
-            {
-                loadDof[i]=-1;
-            }
-
-            ASSERT_NO_THROW( file.open( TEST_FILE_NAME, std::ios_base::in ) );
-            ASSERT_NO_THROW( loadMeshFunctionptr->boundLoad(file) );
-            ASSERT_NO_THROW( file.close() );
+            ASSERT_TRUE( Functions::readMeshFunction( *loadMeshFunctionptr, "funcName", TEST_FILE_NAME ) );
 
             for(int i=0;i<localDof.getSize();i++)
             {
diff --git a/src/UnitTests/Meshes/CMakeLists.txt b/src/UnitTests/Meshes/CMakeLists.txt
index 90763f547d953ebded72f9599e7b617b5106da2c..b9af39b545de6b6333fbc3fac643449c7b02f7fb 100644
--- a/src/UnitTests/Meshes/CMakeLists.txt
+++ b/src/UnitTests/Meshes/CMakeLists.txt
@@ -35,3 +35,28 @@ ADD_TEST( EntityTagsTest ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/EntityTagsTest${CMAKE
 ADD_TEST( MeshTest ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/MeshTest${CMAKE_EXECUTABLE_SUFFIX} )
 ADD_TEST( MeshTraverserTest ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/MeshTraverserTest${CMAKE_EXECUTABLE_SUFFIX} )
 ADD_TEST( MeshOrderingTest ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/MeshOrderingTest${CMAKE_EXECUTABLE_SUFFIX} )
+
+
+# special tests needing external libraries
+find_package( ZLIB )
+find_package( tinyxml2 QUIET )
+
+if( ZLIB_FOUND AND tinyxml2_FOUND )
+   foreach( target IN ITEMS NetgenReaderTest VTKReaderTest VTUReaderTest VTIReaderTest )
+      add_executable(${target} ${target}.cpp)
+      target_compile_options(${target} PRIVATE ${CXX_TESTS_FLAGS} )
+      target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES})
+
+      target_compile_definitions(${target} PUBLIC "-DHAVE_ZLIB")
+      target_include_directories(${target} PUBLIC ${ZLIB_INCLUDE_DIRS})
+      target_link_libraries(${target} ${ZLIB_LIBRARIES})
+
+      target_compile_definitions(${target} PUBLIC "-DHAVE_TINYXML2")
+      target_link_libraries(${target} tinyxml2::tinyxml2)
+
+      # configure path to the data directory
+      target_compile_definitions(${target} PUBLIC "-DTNL_MESH_TESTS_DATA_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data\"")
+
+      add_test(${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target}${CMAKE_EXECUTABLE_SUFFIX})
+   endforeach()
+endif()
diff --git a/src/UnitTests/Meshes/DistributedMeshes/CMakeLists.txt b/src/UnitTests/Meshes/DistributedMeshes/CMakeLists.txt
index 87de162ffeddfc8d5a472401fbfba052bbe0999c..a48177c586254e0c3c91e7a76df9659b5d6a5491 100644
--- a/src/UnitTests/Meshes/DistributedMeshes/CMakeLists.txt
+++ b/src/UnitTests/Meshes/DistributedMeshes/CMakeLists.txt
@@ -6,23 +6,20 @@ ADD_EXECUTABLE( CopyEntitesTest CopyEntitiesTest.cpp )
    TARGET_COMPILE_OPTIONS( CopyEntitesTest PRIVATE ${CXX_TESTS_FLAGS} )
    TARGET_LINK_LIBRARIES( CopyEntitesTest ${GTEST_BOTH_LIBRARIES} )
 
-ADD_EXECUTABLE( CutMeshFunctionTest CutMeshFunctionTest.cpp )
-   TARGET_COMPILE_OPTIONS( CutMeshFunctionTest PRIVATE ${CXX_TESTS_FLAGS} )
-   TARGET_LINK_LIBRARIES( CutMeshFunctionTest ${GTEST_BOTH_LIBRARIES} )
+# FIXME: DistributedGrid refucktoring
+#ADD_EXECUTABLE( CutMeshFunctionTest CutMeshFunctionTest.cpp )
+#   TARGET_COMPILE_OPTIONS( CutMeshFunctionTest PRIVATE ${CXX_TESTS_FLAGS} )
+#   TARGET_LINK_LIBRARIES( CutMeshFunctionTest ${GTEST_BOTH_LIBRARIES} )
 
 ADD_TEST( NAME DirectionsTest COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DirectionsTest${CMAKE_EXECUTABLE_SUFFIX} )
 ADD_TEST( NAME CopyEntitesTest COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CopyEntitesTest${CMAKE_EXECUTABLE_SUFFIX} )
-ADD_TEST( NAME CutMeshFunctionTest COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CutMeshFunctionTest${CMAKE_EXECUTABLE_SUFFIX} )
+#ADD_TEST( NAME CutMeshFunctionTest COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CutMeshFunctionTest${CMAKE_EXECUTABLE_SUFFIX} )
 
 if( BUILD_MPI )
 ADD_EXECUTABLE( DistributedGridTest_1D DistributedGridTest_1D.cpp )
    TARGET_COMPILE_OPTIONS( DistributedGridTest_1D PRIVATE ${CXX_TESTS_FLAGS} )
    TARGET_LINK_LIBRARIES( DistributedGridTest_1D ${GTEST_BOTH_LIBRARIES} )
 
-ADD_EXECUTABLE( DistributedVectorFieldIO_MPIIOTest DistributedVectorFieldIO_MPIIOTest.cpp )
-   TARGET_COMPILE_OPTIONS( DistributedVectorFieldIO_MPIIOTest PRIVATE ${CXX_TESTS_FLAGS} )
-   TARGET_LINK_LIBRARIES( DistributedVectorFieldIO_MPIIOTest ${GTEST_BOTH_LIBRARIES} )
-
 ADD_EXECUTABLE( DistributedGridTest_2D DistributedGridTest_2D.cpp )
    TARGET_COMPILE_OPTIONS( DistributedGridTest_2D PRIVATE ${CXX_TESTS_FLAGS} )
    TARGET_LINK_LIBRARIES( DistributedGridTest_2D ${GTEST_BOTH_LIBRARIES} )
@@ -35,26 +32,9 @@ ADD_EXECUTABLE( CutDistributedGridTest CutDistributedGridTest.cpp )
    TARGET_COMPILE_OPTIONS( CutDistributedGridTest PRIVATE ${CXX_TESTS_FLAGS} )
    TARGET_LINK_LIBRARIES( CutDistributedGridTest ${GTEST_BOTH_LIBRARIES} )
 
-ADD_EXECUTABLE( CutDistributedMeshFunctionTest CutDistributedMeshFunctionTest.cpp )
-   TARGET_COMPILE_OPTIONS( CutDistributedMeshFunctionTest PRIVATE ${CXX_TESTS_FLAGS} )
-   TARGET_LINK_LIBRARIES( CutDistributedMeshFunctionTest ${GTEST_BOTH_LIBRARIES} )
-
-IF( BUILD_CUDA )
-    CUDA_ADD_EXECUTABLE( DistributedGridIOTest DistributedGridIOTest.cu OPTIONS ${CXX_TESTS_FLAGS})
-       TARGET_LINK_LIBRARIES( DistributedGridIOTest ${GTEST_BOTH_LIBRARIES} )
-
-    CUDA_ADD_EXECUTABLE( DistributedGridIO_MPIIOTest DistributedGridIO_MPIIOTest.cu OPTIONS ${CXX_TESTS_FLAGS})
-    TARGET_LINK_LIBRARIES( DistributedGridIO_MPIIOTest ${GTEST_BOTH_LIBRARIES} )
-ELSE(  BUILD_CUDA )
-
-    ADD_EXECUTABLE( DistributedGridIO_MPIIOTest DistributedGridIO_MPIIOTest.cpp )
-       TARGET_COMPILE_OPTIONS( DistributedGridIO_MPIIOTest PRIVATE ${CXX_TESTS_FLAGS} )
-       TARGET_LINK_LIBRARIES( DistributedGridIO_MPIIOTest ${GTEST_BOTH_LIBRARIES} )
-
-    ADD_EXECUTABLE( DistributedGridIOTest DistributedGridIOTest.cpp )
-       TARGET_COMPILE_OPTIONS( DistributedGridIOTest PRIVATE ${CXX_TESTS_FLAGS} )
-       TARGET_LINK_LIBRARIES( DistributedGridIOTest ${GTEST_BOTH_LIBRARIES} )
-ENDIF( BUILD_CUDA )
+#ADD_EXECUTABLE( CutDistributedMeshFunctionTest CutDistributedMeshFunctionTest.cpp )
+#   TARGET_COMPILE_OPTIONS( CutDistributedMeshFunctionTest PRIVATE ${CXX_TESTS_FLAGS} )
+#   TARGET_LINK_LIBRARIES( CutDistributedMeshFunctionTest ${GTEST_BOTH_LIBRARIES} )
 
 if( BUILD_CUDA )
    cuda_add_executable( DistributedMeshTest DistributedMeshTest.cu OPTIONS ${CXX_TESTS_FLAGS})
@@ -65,40 +45,38 @@ else()
    target_link_libraries( DistributedMeshTest ${GTEST_BOTH_LIBRARIES} )
 endif()
 
+
+# external libraries for tests which use mesh readers
+find_package( ZLIB )
 find_package( tinyxml2 QUIET )
-if( tinyxml2_FOUND )
-   target_compile_definitions(DistributedMeshTest PUBLIC "-DHAVE_TINYXML2")
-   target_link_libraries(DistributedMeshTest tinyxml2::tinyxml2)
+
+if( ZLIB_FOUND AND tinyxml2_FOUND )
+   foreach( target IN ITEMS DistributedGridTest_1D DistributedGridTest_2D DistributedGridTest_3D DistributedMeshTest )
+      target_compile_definitions(${target} PUBLIC "-DHAVE_ZLIB")
+      target_include_directories(${target} PUBLIC ${ZLIB_INCLUDE_DIRS})
+      target_link_libraries(${target} ${ZLIB_LIBRARIES})
+
+      target_compile_definitions(${target} PUBLIC "-DHAVE_TINYXML2")
+      target_link_libraries(${target} tinyxml2::tinyxml2)
+   endforeach()
 endif()
 
 
 SET (mpi_test_parameters_1d -np 4 -H localhost:4 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedGridTest_1D${CMAKE_EXECUTABLE_SUFFIX}")
 ADD_TEST( NAME DistributedGridTest_1D COMMAND "mpirun" ${mpi_test_parameters_1d})
 
-# TODO: Fix this test
-#SET (mpi_test_parameters_2d -np 9 -H localhost:9 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedGridTest_2D${CMAKE_EXECUTABLE_SUFFIX}")
-#ADD_TEST( NAME DistributedGridTest_2D COMMAND "mpirun" ${mpi_test_parameters_2d})
+SET (mpi_test_parameters_2d -np 9 -H localhost:9 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedGridTest_2D${CMAKE_EXECUTABLE_SUFFIX}")
+ADD_TEST( NAME DistributedGridTest_2D COMMAND "mpirun" ${mpi_test_parameters_2d})
 
 SET (mpi_test_parameters_3d -np 27 -H localhost:27 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedGridTest_3D${CMAKE_EXECUTABLE_SUFFIX}")
 ADD_TEST( NAME DistributedGridTest_3D COMMAND "mpirun" ${mpi_test_parameters_3d})
 
-# TODO: Fix
-#SET (mpi_test_parameters_IO -np 4 -H localhost:4 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedGridIOTest${CMAKE_EXECUTABLE_SUFFIX}")
-#ADD_TEST( NAME DistributedGridIOTest COMMAND "mpirun" ${mpi_test_parameters_IO})
-
-# TODO: Fix
-#SET (mpi_test_parameters_IOMPIIO -np 4 -H localhost:4 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedGridIO_MPIIOTest${CMAKE_EXECUTABLE_SUFFIX}")
-#ADD_TEST( NAME DistributedGridIO_MPIIOTest COMMAND "mpirun" ${mpi_test_parameters_IOMPIIO})
-
 SET (mpi_test_parameters_CutDistributedGridTest -np 12 -H localhost:12 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CutDistributedGridTest${CMAKE_EXECUTABLE_SUFFIX}")
-#ADD_TEST( NAME CutDistributedGridTest COMMAND "mpirun" ${mpi_test_parameters_CutDistributedGridTest})
-
-SET (mpi_test_parameters_CutDistributedMeshFunctionTest -np 12 -H localhost:12 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CutDistributedMeshFunctionTest${CMAKE_EXECUTABLE_SUFFIX}")
-#ADD_TEST( NAME CutDistributedMeshFunctionTest COMMAND "mpirun" ${mpi_test_parameters_CutDistributedMeshFunctionTest})
+ADD_TEST( NAME CutDistributedGridTest COMMAND "mpirun" ${mpi_test_parameters_CutDistributedGridTest})
 
 # TODO: Fix
-#SET (mpi_test_parameters_DistributedVectorFieldIO_MPIIOTest -np 4 -H localhost:4 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedVectorFieldIO_MPIIOTest ${CMAKE_EXECUTABLE_SUFFIX}")
-#ADD_TEST( NAME DistributedVectorFieldIO_MPIIOTest COMMAND "mpirun" ${mpi_test_parameters_IOMPIIO})
+#SET (mpi_test_parameters_CutDistributedMeshFunctionTest -np 12 -H localhost:12 "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CutDistributedMeshFunctionTest${CMAKE_EXECUTABLE_SUFFIX}")
+#ADD_TEST( NAME CutDistributedMeshFunctionTest COMMAND "mpirun" ${mpi_test_parameters_CutDistributedMeshFunctionTest})
 
 add_test( NAME DistributedMeshTest_2x2 COMMAND mpirun -np 4 -H localhost:4 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedMeshTest${CMAKE_EXECUTABLE_SUFFIX} )
 add_test( NAME DistributedMeshTest_3x3 COMMAND mpirun -np 9 -H localhost:9 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DistributedMeshTest${CMAKE_EXECUTABLE_SUFFIX} )
diff --git a/src/UnitTests/Meshes/DistributedMeshes/CutDistributedGridTest.cpp b/src/UnitTests/Meshes/DistributedMeshes/CutDistributedGridTest.cpp
index dccd68f23b4b8cf678d6a1f156e8f359bd15762b..a0f79550ea3a0461a5259091f4b8439eea50399d 100644
--- a/src/UnitTests/Meshes/DistributedMeshes/CutDistributedGridTest.cpp
+++ b/src/UnitTests/Meshes/DistributedMeshes/CutDistributedGridTest.cpp
@@ -14,7 +14,10 @@ using namespace TNL::Devices;
 
 
 template< typename MeshType >
-void SetUpDistributedGrid(DistributedMesh<MeshType> &distributedGrid, MeshType &globalGrid,int size,typename MeshType::CoordinatesType distribution )
+void SetUpDistributedGrid( DistributedMesh<MeshType> &distributedGrid,
+                           MeshType &globalGrid,
+                           int size,
+                           typename MeshType::CoordinatesType distribution )
 {
     typename MeshType::PointType globalOrigin;
     typename MeshType::PointType globalProportions;
@@ -24,7 +27,7 @@ void SetUpDistributedGrid(DistributedMesh<MeshType> &distributedGrid, MeshType &
     globalProportions.setValue( size );
 
     globalGrid.setDimensions( size );
-    globalGrid.setDomain( globalOrigin,globalProportions );
+    globalGrid.setDomain( globalOrigin, globalProportions );
 
     distributedGrid.setDomainDecomposition( distribution );
     distributedGrid.setGlobalGrid(globalGrid);
@@ -35,7 +38,7 @@ void SetUpDistributedGrid(DistributedMesh<MeshType> &distributedGrid, MeshType &
 
 //===============================================2D================================================================
 
-TEST(CutDistributedGirdTest_2D, IsInCut)
+TEST(CutDistributedGridTest_2D, IsInCut)
 {
     typedef Grid<2,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -65,7 +68,7 @@ TEST(CutDistributedGirdTest_2D, IsInCut)
     }
 }
 
-TEST(CutDistributedGirdTest_2D, GloblaGridDimesion)
+TEST(CutDistributedGridTest_2D, GloblaGridDimesion)
 {
     typedef Grid<2,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -90,7 +93,7 @@ TEST(CutDistributedGirdTest_2D, GloblaGridDimesion)
     }
 }
 
-TEST(CutDistributedGirdTest_2D, IsDistributed)
+TEST(CutDistributedGridTest_2D, IsDistributed)
 {
     typedef Grid<2,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -114,7 +117,7 @@ TEST(CutDistributedGirdTest_2D, IsDistributed)
     }
 }
 
-TEST(CutDistributedGirdTest_2D, IsNotDistributed)
+TEST(CutDistributedGridTest_2D, IsNotDistributed)
 {
     typedef Grid<2,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -140,7 +143,7 @@ TEST(CutDistributedGirdTest_2D, IsNotDistributed)
 
 //===============================================3D - 1D cut================================================================
 
-TEST(CutDistributedGirdTest_3D, IsInCut_1D)
+TEST(CutDistributedGridTest_3D, IsInCut_1D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -170,7 +173,7 @@ TEST(CutDistributedGirdTest_3D, IsInCut_1D)
     }
 }
 
-TEST(CutDistributedGirdTest_3D, GloblaGridDimesion_1D)
+TEST(CutDistributedGridTest_3D, GloblaGridDimesion_1D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -195,7 +198,7 @@ TEST(CutDistributedGirdTest_3D, GloblaGridDimesion_1D)
     }
 }
 
-TEST(CutDistributedGirdTest_3D, IsDistributed_1D)
+TEST(CutDistributedGridTest_3D, IsDistributed_1D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -219,7 +222,7 @@ TEST(CutDistributedGirdTest_3D, IsDistributed_1D)
     }
 }
 
-TEST(CutDistributedGirdTest_3D, IsNotDistributed_1D)
+TEST(CutDistributedGridTest_3D, IsNotDistributed_1D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -245,7 +248,7 @@ TEST(CutDistributedGirdTest_3D, IsNotDistributed_1D)
 
 //===================================3D-2D cut=========================================================================
 
-TEST(CutDistributedGirdTest_3D, IsInCut_2D)
+TEST(CutDistributedGridTest_3D, IsInCut_2D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -276,7 +279,7 @@ TEST(CutDistributedGirdTest_3D, IsInCut_2D)
     }
 }
 
-TEST(CutDistributedGirdTest_3D, GloblaGridDimesion_2D)
+TEST(CutDistributedGridTest_3D, GloblaGridDimesion_2D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -302,7 +305,7 @@ TEST(CutDistributedGirdTest_3D, GloblaGridDimesion_2D)
     }
 }
 
-TEST(CutDistributedGirdTest_3D, IsDistributed_2D)
+TEST(CutDistributedGridTest_3D, IsDistributed_2D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
@@ -326,7 +329,7 @@ TEST(CutDistributedGirdTest_3D, IsDistributed_2D)
     }
 }
 
-TEST(CutDistributedGirdTest_3D, IsNotDistributed_2D)
+TEST(CutDistributedGridTest_3D, IsNotDistributed_2D)
 {
     typedef Grid<3,double,Host,int> MeshType;
     typedef typename MeshType::CoordinatesType CoordinatesType;
diff --git a/src/UnitTests/Meshes/DistributedMeshes/CutDistributedMeshFunctionTest.cpp b/src/UnitTests/Meshes/DistributedMeshes/CutDistributedMeshFunctionTest.cpp
index 9ad46b41221a4cb230ab67fdda50b3ef2636199d..205b53482e7347b5b07a536dd1124ce2c5b7d927 100644
--- a/src/UnitTests/Meshes/DistributedMeshes/CutDistributedMeshFunctionTest.cpp
+++ b/src/UnitTests/Meshes/DistributedMeshes/CutDistributedMeshFunctionTest.cpp
@@ -7,7 +7,6 @@
 #include <TNL/Functions/CutMeshFunction.h>
 #include <TNL/Functions/MeshFunctionView.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
 #include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
 
 #include "../../Functions/Functions.h"
@@ -53,9 +52,10 @@ TEST(CutDistributedMeshFunction, 2D_Data)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
-
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -135,8 +135,10 @@ TEST(CutDistributedMeshFunction, 3D_1_Data)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -216,8 +218,10 @@ TEST(CutDistributedMeshFunction, 3D_2_Data)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -303,8 +307,10 @@ TEST(CutDistributedMeshFunction, 2D_Synchronization)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -388,8 +394,10 @@ TEST(CutDistributedMeshFunction, 3D_1_Synchronization)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -477,8 +485,10 @@ TEST(CutDistributedMeshFunction, 3D_2_Synchronization)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -513,8 +523,8 @@ TEST(CutDistributedMeshFunction, 3D_2_Synchronization)
         typename MeshType::Cell fromEntity(meshFunctionptr->getMesh());
         typename CutMeshType::Cell outEntity(*cutGrid);
 
-        for(int i=0;i<distributedGrid.getLocalGridSize().x();i++)
-            for(int j=0;j<distributedGrid.getLocalGridSize().z();j++)
+        for(int i=0;i<distributedGrid.getLocalMeshSize().x();i++)
+            for(int j=0;j<distributedGrid.getLocalMeshSize().z();j++)
             {
                 fromEntity.getCoordinates().x()=i;
                 fromEntity.getCoordinates().z()=j;
@@ -564,8 +574,10 @@ TEST(CutDistributedMeshFunction, 3D_2_Save)
    SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
    distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
 
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
    Pointers::SharedPointer<MeshType> originalGrid;
-   distributedGrid.setupGrid(*originalGrid);
+   *originalGrid = globalOriginalGrid->getLocalMesh();
 
    DofType dof(originalGrid->template getEntitiesCount< Cell >());
    dof.setValue(0);
@@ -593,16 +605,18 @@ TEST(CutDistributedMeshFunction, 3D_2_Save)
        MeshFunctionView<CutMeshType> cutMeshFunction;
        cutMeshFunction.bind(cutGrid,cutDof);
 
-        DistributedGridIO<MeshFunctionView<CutMeshType>,MpiIO> ::save(TEST_FILE_NAME, cutMeshFunction );
+       // FIXME: DistributedGridIO was removed
+//        DistributedGridIO<MeshFunctionView<CutMeshType>,MpiIO> ::save(TEST_FILE_NAME, cutMeshFunction );
 
         //save globalgrid for debug render
         MPI_Comm group=cutDistributedGrid.getCommunicationGroup();
         if(TNL::MPI::GetRank(group)==0)
         {
-            File meshFile;
-            meshFile.open( TEST_FILE_NAME+String("-mesh.tnl"),std::ios_base::out);
-            cutDistributedGrid.getGlobalGrid().save( meshFile );
-            meshFile.close();
+           // FIXME: save was removed from Grid (but this is just for debugging...)
+//            File meshFile;
+//            meshFile.open( TEST_FILE_NAME+String("-mesh.tnl"),std::ios_base::out);
+//            cutDistributedGrid.getGlobalGrid().save( meshFile );
+//            meshFile.close();
         }
 
     }
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.cpp b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.cpp
deleted file mode 100644
index 2b110b5f716ec5bfb6dc5ee93818d9e343fadf7c..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.cpp
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "DistributedGridIOTestBase.h"
-
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.cu b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.cu
deleted file mode 100644
index 2b110b5f716ec5bfb6dc5ee93818d9e343fadf7c..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.cu
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "DistributedGridIOTestBase.h"
-
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.h b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.h
deleted file mode 100644
index 11a85b68ded774ea4cbd8edc7ba49a5a18a64b88..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTest.h
+++ /dev/null
@@ -1,376 +0,0 @@
-/***************************************************************************
-                          DistributedGridIO.h  -  description
-                             -------------------
-    begin                : Nov 1, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber et al.
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
-#include <TNL/Functions/MeshFunctionView.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
-#include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
-
-#include "../../Functions/Functions.h"
-
-using namespace TNL::Containers;
-using namespace TNL::Meshes;
-using namespace TNL::Functions;
-using namespace TNL::Meshes::DistributedMeshes;
-
-
-//================Parameters===================================
-template <int dim, typename Device>
-class ParameterProvider
-{
-    public:
-
-    typedef Grid<dim,double,Device,int> MeshType;
-    typedef typename MeshType::CoordinatesType CoordinatesType;
-    typedef typename MeshType::PointType PointType;
-
-    PointType getOrigin(int rank)
-    {
-    };
-
-    PointType getProportions(int rank)
-    {
-    };
-
-    int* getDistr(void)
-    {
-        return NULL;
-    };
-};
-
-template<typename Device>
-class ParameterProvider<1,Device>
-{
-    public:
-
-    typedef Grid<1,double,Device,int> MeshType;
-    typedef typename MeshType::CoordinatesType CoordinatesType;
-    typedef typename MeshType::PointType PointType;
-
-    PointType getOrigin(int rank)
-    {
-        if(rank==0)
-            return PointType(-0.5);
-        if(rank==1)
-            return PointType(4.5);
-        if(rank==2)
-            return PointType(9.5);
-        if(rank==3)
-            return PointType(14.5);
-
-        return PointType(0);
-    };
-
-    PointType getProportions(int rank)
-    {
-        if(rank==0)
-            return PointType(5);
-        if(rank==1)
-            return PointType(5);
-        if(rank==2)
-            return PointType(5);
-        if(rank==3)
-            return PointType(5);
-        return PointType(0);
-    };
-
-    const CoordinatesType& getDistr()
-    {
-        distr[0]=4;
-        return distr;
-    };
-
-    CoordinatesType distr;
-};
-
-template<typename Device>
-class ParameterProvider<2,Device>
-{
-    public:
-
-    typedef Grid<2,double,Device,int> MeshType;
-    typedef typename MeshType::CoordinatesType CoordinatesType;
-    typedef typename MeshType::PointType PointType;
-
-    PointType getOrigin(int rank)
-    {
-        if(rank==0)
-            return PointType(-0.5,-0.5);
-        if(rank==1)
-            return PointType(9.5,-0.5);
-        if(rank==2)
-            return PointType(-0.5,9.5);
-        if(rank==3)
-            return PointType(9.5,9.5);
-
-        return PointType(0,0);
-    };
-
-    PointType getProportions(int rank)
-    {
-        if(rank==0)
-            return PointType(10,10);
-        if(rank==1)
-            return PointType(10,10);
-        if(rank==2)
-            return PointType(10,10);
-        if(rank==3)
-            return PointType(10,10);
-        return PointType(0,0);
-    };
-
-    const CoordinatesType& getDistr()
-    {
-        distr[0]=2;
-        distr[1]=2;
-        return distr;
-    };
-
-    CoordinatesType distr;
-};
-
-template<typename Device>
-class ParameterProvider<3,Device>
-{
-    public:
-
-    typedef Grid<3,double,Device,int> MeshType;
-    typedef typename MeshType::CoordinatesType CoordinatesType;
-    typedef typename MeshType::PointType PointType;
-
-    PointType getOrigin(int rank)
-    {
-        if(rank==0)
-            return PointType(-0.5,-0.5,-0.5);
-        if(rank==1)
-            return PointType(9.5,-0.5,-0.5);
-        if(rank==2)
-            return PointType(-0.5,9.5,-0.5);
-        if(rank==3)
-            return PointType(9.5,9.5,-0.5);
-
-        return PointType(0,0,0);
-    };
-
-    PointType getProportions(int rank)
-    {
-        if(rank==0)
-            return PointType(10,10,20);
-        if(rank==1)
-            return PointType(10,10,20);
-        if(rank==2)
-            return PointType(10,10,20);
-        if(rank==3)
-            return PointType(10,10,20);
-        return PointType(0,0,0);
-    };
-
-    const CoordinatesType& getDistr()
-    {
-        distr[0]=2;
-        distr[1]=2;
-        distr[2]=1;
-        return distr;
-    };
-
-    CoordinatesType distr;
-};
-
-//------------------------------------------------------------------------------
-
-template <int dim, typename Device>
-class TestDistributedGridIO
-{
-    public:
-
-    typedef Grid<dim,double,Device,int> MeshType;
-    typedef MeshFunctionView<MeshType> MeshFunctionType;
-    typedef Vector<double,Device,int> DofType;
-    typedef typename MeshType::Cell Cell;
-    typedef typename MeshType::IndexType IndexType;
-    typedef typename MeshType::PointType PointType;
-    typedef DistributedMesh<MeshType> DistributedGridType;
-
-    typedef typename DistributedGridType::CoordinatesType CoordinatesType;
-    typedef LinearFunction<double,dim> LinearFunctionType;
-
-    static void TestSave()
-    {
-        Pointers::SharedPointer< LinearFunctionType, Device > linearFunctionPtr;
-        MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
-
-        ParameterProvider<dim,Device> parameters;
-
-        //save distributed meshfunction into files
-        PointType globalOrigin;
-        globalOrigin.setValue(-0.5);
-
-        PointType globalProportions;
-        globalProportions.setValue(20);
-
-
-        MeshType globalGrid;
-        globalGrid.setDimensions(globalProportions);
-        globalGrid.setDomain(globalOrigin,globalProportions);
-
-        CoordinatesType overlap;
-        overlap.setValue(1);
-        DistributedGridType distributedGrid;
-        distributedGrid.setDomainDecomposition( parameters.getDistr() );
-        distributedGrid.setGlobalGrid( globalGrid );
-        typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-        SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
-        distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
-
-        //std::cout << distributedGrid.printProcessDistr() <<std::endl;
-
-        Pointers::SharedPointer<MeshType> gridptr;
-        Pointers::SharedPointer<MeshFunctionType> meshFunctionptr;
-        distributedGrid.setupGrid(*gridptr);
-
-        DofType dof(gridptr->template getEntitiesCount< Cell >());
-        dof.setValue(0);
-        meshFunctionptr->bind(gridptr,dof);
-
-        linearFunctionEvaluator.evaluateAllEntities(meshFunctionptr , linearFunctionPtr);
-
-        String fileName=String("test-file-distriburtegrid-io-save.tnl");
-        DistributedGridIO<MeshFunctionType> ::save(fileName, *meshFunctionptr );
-
-
-       //create similar local mesh function and evaluate linear function on it
-        PointType localOrigin=parameters.getOrigin(TNL::MPI::GetRank());
-        PointType localProportions=parameters.getProportions(TNL::MPI::GetRank());
-
-        Pointers::SharedPointer<MeshType>  localGridptr;
-        localGridptr->setDimensions(localProportions);
-        localGridptr->setDomain(localOrigin,localProportions);
-
-        DofType localDof(localGridptr->template getEntitiesCount< Cell >());
-
-        Pointers::SharedPointer<MeshFunctionType> localMeshFunctionptr;
-        localMeshFunctionptr->bind(localGridptr,localDof);
-        linearFunctionEvaluator.evaluateAllEntities(localMeshFunctionptr , linearFunctionPtr);
-
-        //load other meshfunction on same localgrid from created file
-        Pointers::SharedPointer<MeshType>  loadGridptr;
-        loadGridptr->setDimensions(localProportions);
-        loadGridptr->setDomain(localOrigin,localProportions);
-
-        DofType loadDof(localGridptr->template getEntitiesCount< Cell >());
-        Pointers::SharedPointer<MeshFunctionType> loadMeshFunctionptr;
-        loadMeshFunctionptr->bind(loadGridptr,loadDof);
-
-        loadDof.setValue(-1);
-
-        String localFileName= fileName+String("-")+distributedGrid.printProcessCoords()+String(".tnl");
-
-        File file;
-        file.open(localFileName, std::ios_base::in );
-        loadMeshFunctionptr->boundLoad(file);
-        file.close();
-
-        for(int i=0;i<localDof.getSize();i++)
-        {
-            EXPECT_EQ( localDof.getElement(i), loadDof.getElement(i)) << "Compare Loaded and evaluated Dof Failed for: "<< i;
-        }
-
-        EXPECT_EQ( std::remove( localFileName.getString()) , 0 );
-
-       //remove meshfile
-       EXPECT_EQ( std::remove( (fileName+String("-mesh-")+distributedGrid.printProcessCoords()+String(".tnl")).getString()) , 0 );
-    }
-
-    static void TestLoad()
-    {
-        Pointers::SharedPointer< LinearFunctionType, Device > linearFunctionPtr;
-        MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
-
-        ParameterProvider<dim,Device> parameters;
-
-        //Crete distributed grid
-        PointType globalOrigin;
-        globalOrigin.setValue(-0.5);
-
-        PointType globalProportions;
-        globalProportions.setValue(20);
-
-        MeshType globalGrid;
-        globalGrid.setDimensions(globalProportions);
-        globalGrid.setDomain(globalOrigin,globalProportions);
-
-        CoordinatesType overlap;
-        overlap.setValue(1);
-        DistributedGridType distributedGrid;
-        distributedGrid.setDomainDecomposition( parameters.getDistr() );
-        distributedGrid.setGlobalGrid( globalGrid );
-        typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-        SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
-        distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
-
-        //save files from local mesh
-        PointType localOrigin=parameters.getOrigin(TNL::MPI::GetRank());
-        PointType localProportions=parameters.getProportions(TNL::MPI::GetRank());
-
-        Pointers::SharedPointer<MeshType> localGridptr;
-        localGridptr->setDimensions(localProportions);
-        localGridptr->setDomain(localOrigin,localProportions);
-
-        DofType localDof(localGridptr->template getEntitiesCount< Cell >());
-
-        Pointers::SharedPointer<MeshFunctionType> localMeshFunctionptr;
-        localMeshFunctionptr->bind(localGridptr,localDof);
-        linearFunctionEvaluator.evaluateAllEntities(localMeshFunctionptr , linearFunctionPtr);
-
-
-        String fileName=String("test-file-distributedgrid-io-load.tnl");
-        String localFileName=fileName+String("-")+distributedGrid.printProcessCoords()+String(".tnl");
-        File file;
-        file.open( localFileName, std::ios_base::out );
-        localMeshFunctionptr->save(file);
-        file.close();
-
-
-
-        //Crete "distributedgrid driven" grid filed by load
-        Pointers::SharedPointer<MeshType> loadGridptr;
-        Pointers::SharedPointer<MeshFunctionType> loadMeshFunctionptr;
-        distributedGrid.setupGrid(*loadGridptr);
-
-        DofType loadDof(loadGridptr->template getEntitiesCount< Cell >());
-        loadDof.setValue(0);
-        loadMeshFunctionptr->bind(loadGridptr,loadDof);
-
-        DistributedGridIO<MeshFunctionType> ::load(fileName, *loadMeshFunctionptr );
-
-        DistributedMeshSynchronizer< DistributedGridType > synchronizer;
-        synchronizer.setDistributedGrid( &distributedGrid );
-        synchronizer.synchronize( *loadMeshFunctionptr ); //need synchronization for overlaps to be filled corectly in loadDof
-
-        //Crete "distributedgrid driven" grid filed by evaluated linear function
-        Pointers::SharedPointer<MeshType> gridptr;
-        Pointers::SharedPointer<MeshFunctionType> meshFunctionptr;
-        distributedGrid.setupGrid(*gridptr);
-
-        DofType dof(gridptr->template getEntitiesCount< Cell >());
-        dof.setValue(-1);
-        meshFunctionptr->bind(gridptr,dof);
-
-        linearFunctionEvaluator.evaluateAllEntities(meshFunctionptr , linearFunctionPtr);
-        synchronizer.synchronize( *meshFunctionptr );
-
-        for(int i=0;i<dof.getSize();i++)
-        {
-            EXPECT_EQ( dof.getElement(i), loadDof.getElement(i)) << "Compare Loaded and evaluated Dof Failed for: "<< i;
-        }
-
-        EXPECT_EQ( std::remove( localFileName.getString()) , 0 );
-    }
-};
-
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTestBase.h b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTestBase.h
deleted file mode 100644
index a0bef62f04bd2d9a5197788cacba09a25279e7cc..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIOTestBase.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/***************************************************************************
-                          DistributedGridIO.h  -  description
-                             -------------------
-    begin                : Nov 1, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber et al.
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-#ifdef HAVE_GTEST
-  
-#include <gtest/gtest.h>
-
-#ifdef HAVE_MPI
-
-#include "DistributedGridIOTest.h"
-
-TEST( DistributedGridIO, Save_1D )
-{
-    TestDistributedGridIO<1,Devices::Host>::TestSave();
-}
-
-TEST( DistributedGridIO, Save_2D )
-{
-    TestDistributedGridIO<2,Devices::Host>::TestSave();
-}
-
-TEST( DistributedGridIO, Save_3D )
-{
-    TestDistributedGridIO<3,Devices::Host>::TestSave();
-}
-
-TEST( DistributedGridIO, Load_1D )
-{
-    TestDistributedGridIO<1,Devices::Host>::TestLoad();
-}
-
-TEST( DistributedGridIO, Load_2D )
-{
-    TestDistributedGridIO<2,Devices::Host>::TestLoad();
-}
-
-TEST( DistributedGridIO, Load_3D )
-{
-    TestDistributedGridIO<3,Devices::Host>::TestLoad();
-}
-
-#ifdef HAVE_CUDA
-TEST( DistributedGridIO, Save_1D_GPU )
-{
-    TestDistributedGridIO<1,Devices::Cuda>::TestSave();
-}
-
-TEST( DistributedGridIO, Save_2D_GPU )
-{
-    TestDistributedGridIO<2,Devices::Cuda>::TestSave();
-}
-
-TEST( DistributedGridIO, Save_3D_GPU )
-{
-    TestDistributedGridIO<3,Devices::Cuda>::TestSave();
-}
-
-TEST( DistributedGridIO, Load_1D_GPU )
-{
-    TestDistributedGridIO<1,Devices::Cuda>::TestLoad();
-}
-
-TEST( DistributedGridIO, Load_2D_GPU )
-{
-    TestDistributedGridIO<2,Devices::Cuda>::TestLoad();
-}
-
-TEST( DistributedGridIO, Load_3D_GPU )
-{
-    TestDistributedGridIO<3,Devices::Cuda>::TestLoad();
-}
-#endif
-
-#endif
-
-#endif
-
-#include "../../main_mpi.h"
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.cpp b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.cpp
deleted file mode 100644
index 5c4877846f7ca0d483aa12f854716ab82fb93b62..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "DistributedGridIO_MPIIOTestBase.h"
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.cu b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.cu
deleted file mode 100644
index 5c4877846f7ca0d483aa12f854716ab82fb93b62..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.cu
+++ /dev/null
@@ -1 +0,0 @@
-#include "DistributedGridIO_MPIIOTestBase.h"
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.h b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.h
deleted file mode 100644
index 00705c31ffc50de1447f6a50e22a3d9616e500a5..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTest.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/***************************************************************************
-                          DistributedGridIO_MPIIO  -  description
-                             -------------------
-    begin                : Nov 1, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber et al.
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-
-#ifdef HAVE_MPI
-    #define MPIIO
-#endif
-
-#include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
-#include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
-#include <TNL/Functions/MeshFunctionView.h>
-
-
-#include "../../Functions/Functions.h"
-
-using namespace TNL::Containers;
-using namespace TNL::Meshes;
-using namespace TNL::Functions;
-using namespace TNL::Meshes::DistributedMeshes;
-
-//------------------------------------------------------------------------------
-
-template <int dim, typename Device>
-class TestDistributedGridMPIIO{
-    public:
-
-    typedef Grid<dim,double,Device,int> MeshType;
-    typedef MeshFunctionView<MeshType> MeshFunctionType;
-    typedef Vector<double,Device,int> DofType;
-    typedef typename MeshType::Cell Cell;
-    typedef typename MeshType::IndexType IndexType;
-    typedef typename MeshType::PointType PointType;
-    typedef DistributedMesh<MeshType> DistributedGridType;
-
-    typedef typename DistributedGridType::CoordinatesType CoordinatesType;
-    typedef LinearFunction<double,dim> LinearFunctionType;
-
-    static void TestSave()
-    {
-        Pointers::SharedPointer< LinearFunctionType, Device > linearFunctionPtr;
-        MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
-
-        //save distributed meshfunction into file
-        PointType globalOrigin;
-        globalOrigin.setValue(-0.5);
-
-        PointType globalProportions;
-        globalProportions.setValue(50);
-
-        Pointers::SharedPointer<MeshType> globalGrid;
-        globalGrid->setDimensions(globalProportions);
-        globalGrid->setDomain(globalOrigin,globalProportions);
-
-        DistributedGridType distributedGrid;
-        distributedGrid.setGlobalGrid( *globalGrid );
-        typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-        SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
-        distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
-
-        ///std::cout << distributedGrid.printProcessDistr() <<std::endl;
-
-        Pointers::SharedPointer<MeshType> gridptr;
-        Pointers::SharedPointer<MeshFunctionType> meshFunctionptr;
-        distributedGrid.setupGrid(*gridptr);
-
-        DofType dof(gridptr->template getEntitiesCount< Cell >());
-        dof.setValue(0);
-        meshFunctionptr->bind(gridptr,dof);
-
-        linearFunctionEvaluator.evaluateAllEntities(meshFunctionptr , linearFunctionPtr);
-
-        String FileName=String("test-file-mpiio-save.tnl");
-        DistributedGridIO<MeshFunctionType,MpiIO> ::save(FileName, *meshFunctionptr );
-
-       //first process compare results
-       if(TNL::MPI::GetRank()==0)
-       {
-            DofType globalEvaluatedDof(globalGrid->template getEntitiesCount< Cell >());
-
-            Pointers::SharedPointer<MeshFunctionType> globalEvaluatedMeshFunctionptr;
-            globalEvaluatedMeshFunctionptr->bind(globalGrid,globalEvaluatedDof);
-            linearFunctionEvaluator.evaluateAllEntities(globalEvaluatedMeshFunctionptr , linearFunctionPtr);
-
-
-            DofType loadDof(globalGrid->template getEntitiesCount< Cell >());
-            Pointers::SharedPointer<MeshFunctionType> loadMeshFunctionptr;
-            loadMeshFunctionptr->bind(globalGrid,loadDof);
-
-            loadDof.setValue(-1);
-
-            File file;
-            file.open( FileName, std::ios_base::in );
-            loadMeshFunctionptr->boundLoad(file);
-            file.close();
-
-            for(int i=0;i<loadDof.getSize();i++)
-            {
-              EXPECT_EQ( globalEvaluatedDof.getElement(i), loadDof.getElement(i)) << "Compare Loaded and evaluated Dof Failed for: "<< i;
-            }
-            EXPECT_EQ( std::remove( FileName.getString()) , 0 );
-        }
-    }
-
-    static void TestLoad()
-    {
-        Pointers::SharedPointer< LinearFunctionType, Device > linearFunctionPtr;
-        MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
-
-        //Crete distributed grid
-        PointType globalOrigin;
-        globalOrigin.setValue(-0.5);
-
-        PointType globalProportions;
-        globalProportions.setValue(50);
-
-        Pointers::SharedPointer<MeshType> globalGrid;
-        globalGrid->setDimensions(globalProportions);
-        globalGrid->setDomain(globalOrigin,globalProportions);
-
-        CoordinatesType overlap;
-        overlap.setValue(1);
-        DistributedGridType distributedGrid;
-        distributedGrid.setGlobalGrid( *globalGrid );
-        typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-        SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
-        distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
-
-        String FileName=String("test-file-mpiio-load.tnl");
-
-        //Prepare file
-        if(TNL::MPI::GetRank()==0)
-        {
-            DofType saveDof(globalGrid->template getEntitiesCount< Cell >());
-
-            Pointers::SharedPointer<MeshFunctionType> saveMeshFunctionptr;
-            saveMeshFunctionptr->bind(globalGrid,saveDof);
-            linearFunctionEvaluator.evaluateAllEntities(saveMeshFunctionptr , linearFunctionPtr);
-
-            File file;
-            file.open( FileName, std::ios_base::out );
-            saveMeshFunctionptr->save(file);
-            file.close();
-        }
-
-        Pointers::SharedPointer<MeshType> loadGridptr;
-        Pointers::SharedPointer<MeshFunctionType> loadMeshFunctionptr;
-        distributedGrid.setupGrid(*loadGridptr);
-
-        DofType loadDof(loadGridptr->template getEntitiesCount< Cell >());
-        loadDof.setValue(0);
-        loadMeshFunctionptr->bind(loadGridptr,loadDof);
-
-        DistributedGridIO<MeshFunctionType,MpiIO> ::load(FileName, *loadMeshFunctionptr );
-
-        DistributedMeshSynchronizer< DistributedGridType > synchronizer;
-        synchronizer.setDistributedGrid( &distributedGrid );
-        synchronizer.synchronize( *loadMeshFunctionptr ); //need synchronization for overlaps to be filled corectly in loadDof
-
-        Pointers::SharedPointer<MeshType> evalGridPtr;
-        Pointers::SharedPointer<MeshFunctionType> evalMeshFunctionptr;
-        distributedGrid.setupGrid(*evalGridPtr);
-
-        DofType evalDof(evalGridPtr->template getEntitiesCount< Cell >());
-        evalDof.setValue(-1);
-        evalMeshFunctionptr->bind(evalGridPtr,evalDof);
-
-        linearFunctionEvaluator.evaluateAllEntities(evalMeshFunctionptr , linearFunctionPtr);
-        synchronizer.synchronize( *evalMeshFunctionptr );
-
-        for(int i=0;i<evalDof.getSize();i++)
-        {
-            EXPECT_EQ( evalDof.getElement(i), loadDof.getElement(i)) << "Compare Loaded and evaluated Dof Failed for: "<< i;
-        }
-
-        if(TNL::MPI::GetRank()==0)
-        {
-            EXPECT_EQ( std::remove( FileName.getString()) , 0 );
-        }
-
-    }
-};
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTestBase.h b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTestBase.h
deleted file mode 100644
index 3786a36fb0a9aa891c85198fbc3faec3d1ed1f46..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridIO_MPIIOTestBase.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/***************************************************************************
-                          DistributedGridIO_MPIIO  -  description
-                             -------------------
-    begin                : Nov 1, 2017
-    copyright            : (C) 2017 by Tomas Oberhuber et al.
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-#ifdef HAVE_GTEST
-      #include <gtest/gtest.h>
-#ifdef HAVE_MPI
-
-#include "DistributedGridIO_MPIIOTest.h"
-
-TEST( DistributedGridMPIIO, Save_1D )
-{
-    TestDistributedGridMPIIO<1,Devices::Host>::TestSave();
-}
-
-TEST( DistributedGridMPIIO, Save_2D )
-{
-    TestDistributedGridMPIIO<2,Devices::Host>::TestSave();
-}
-
-TEST( DistributedGridMPIIO, Save_3D )
-{
-    TestDistributedGridMPIIO<3,Devices::Host>::TestSave();
-}
-
-TEST( DistributedGridMPIIO, Load_1D )
-{
-    TestDistributedGridMPIIO<1,Devices::Host>::TestLoad();
-}
-
-TEST( DistributedGridMPIIO, Load_2D )
-{
-    TestDistributedGridMPIIO<2,Devices::Host>::TestLoad();
-}
-
-TEST( DistributedGridMPIIO, Load_3D )
-{
-    TestDistributedGridMPIIO<3,Devices::Host>::TestLoad();
-}
-
-#ifdef HAVE_CUDA
-    TEST( DistributedGridMPIIO, Save_1D_GPU )
-    {
-        TestDistributedGridMPIIO<1,Devices::Cuda>::TestSave();
-    }
-
-    TEST( DistributedGridMPIIO, Save_2D_GPU )
-    {
-        TestDistributedGridMPIIO<2,Devices::Cuda>::TestSave();
-    }
-
-    TEST( DistributedGridMPIIO, Save_3D_GPU )
-    {
-        TestDistributedGridMPIIO<3,Devices::Cuda>::TestSave();
-    }
-
-    TEST( DistributedGridMPIIO, Load_1D_GPU )
-    {
-        TestDistributedGridMPIIO<1,Devices::Cuda>::TestLoad();
-    }
-
-    TEST( DistributedGridMPIIO, Load_2D_GPU )
-    {
-        TestDistributedGridMPIIO<2,Devices::Cuda>::TestLoad();
-    }
-
-    TEST( DistributedGridMPIIO, Load_3D_GPU )
-    {
-        TestDistributedGridMPIIO<3,Devices::Cuda>::TestLoad();
-    }
-#endif
-
-#endif
-
-#endif
-
-#include "../../main_mpi.h"
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_1D.cpp b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_1D.cpp
index 9a3952bc3f9f09e970dd9c016810e39d5929dadb..68b03cebbff288fe5561f8f8b904abc17fc147fe 100644
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_1D.cpp
+++ b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_1D.cpp
@@ -12,13 +12,19 @@
 
 #ifdef HAVE_MPI
 
+#include <experimental/filesystem>
+
 #include <TNL/Functions/MeshFunctionView.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 #include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
+#include <TNL/Meshes/Writers/PVTIWriter.h>
+#include <TNL/Meshes/Readers/PVTIReader.h>
 
 #include "../../Functions/Functions.h"
 
+namespace fs = std::experimental::filesystem;
+
 using namespace TNL;
 using namespace TNL::Containers;
 using namespace TNL::Meshes;
@@ -48,8 +54,7 @@ void check_Boundary_1D(int rank, int nproc, const DofType& dof, typename DofType
         EXPECT_EQ( dof[dof.getSize()-1], expectedValue) << "Right boundary test failed";
         return;
     }
-
-};
+}
 
 template<typename DofType>
 void check_Overlap_1D(int rank, int nproc, const DofType& dof, typename DofType::RealType expectedValue)
@@ -68,14 +73,14 @@ void check_Overlap_1D(int rank, int nproc, const DofType& dof, typename DofType:
 
     EXPECT_EQ( dof[0], expectedValue) << "left overlap test failed";
     EXPECT_EQ( dof[dof.getSize()-1], expectedValue)<< "right overlap test failed";
-};
+}
 
 template<typename DofType>
 void check_Inner_1D(int rank, int nproc, const DofType& dof, typename DofType::RealType expectedValue)
 {
     for( int i = 1; i < ( dof.getSize()-2 ); i++ )
-        EXPECT_EQ( dof[i], expectedValue) << " " << i;
-};
+        EXPECT_EQ( dof[i], expectedValue) << "i = " << i;
+}
 
 /*
  * Light check of 1D distributed grid and its synchronization.
@@ -104,7 +109,7 @@ class DistributedGridTest_1D : public ::testing::Test
       DofType dof;
       MaskDofType maskDofs;
 
-      Pointers::SharedPointer< GridType > gridptr;
+      Pointers::SharedPointer< GridType > localGrid;
       Pointers::SharedPointer< MeshFunctionType > meshFunctionPtr;
       Pointers::SharedPointer< MaskType > maskPointer;
 
@@ -130,25 +135,23 @@ class DistributedGridTest_1D : public ::testing::Test
          globalOrigin.x()=-0.5;
          globalProportions.x()=size;
 
-
          globalGrid.setDimensions(size);
          globalGrid.setDomain(globalOrigin,globalProportions);
 
-         typename DistributedGridType::CoordinatesType overlap;
-         overlap.setValue(1);
          distributedGrid=new DistributedGridType();
-
          typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
          distributedGrid->setGlobalGrid( globalGrid );
-         //distributedGrid->setupGrid(*gridptr);
          SubdomainOverlapsGetter< GridType >::
             getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1 );
          distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
 
-         distributedGrid->setupGrid(*gridptr);
-         dof.setSize( gridptr->template getEntitiesCount< Cell >() );
+         // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+         // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+         *localGrid = distributedGrid->getLocalMesh();
 
-         meshFunctionPtr->bind(gridptr,dof);
+         dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+
+         meshFunctionPtr->bind( localGrid, dof );
 
          constFunctionPtr->Number=rank;
       }
@@ -159,7 +162,10 @@ class DistributedGridTest_1D : public ::testing::Test
          SubdomainOverlapsGetter< GridType >::
             getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1 );
          distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-         distributedGrid->setupGrid(*gridptr);
+
+         // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+         // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+         *localGrid = distributedGrid->getLocalMesh();
       }
 
       void TearDown()
@@ -179,10 +185,9 @@ TEST_F( DistributedGridTest_1D, isBoundaryDomainTest )
 TEST_F(DistributedGridTest_1D, evaluateAllEntities)
 {
    //Check Traversars
-   //All entities, witout overlap
+   //All entities, without overlap
    setDof_1D( dof,-1);
    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
-   //Printer<GridType,DofType>::print_dof(rank,*gridptr,dof);
    check_Boundary_1D(rank, nproc, dof, rank);
    check_Overlap_1D(rank, nproc, dof, -1);
    check_Inner_1D(rank, nproc, dof, rank);
@@ -190,7 +195,7 @@ TEST_F(DistributedGridTest_1D, evaluateAllEntities)
 
 TEST_F(DistributedGridTest_1D, evaluateBoundaryEntities)
 {
-   //Boundary entities, witout overlap
+   //Boundary entities, without overlap
    setDof_1D(dof,-1);
    constFunctionEvaluator.evaluateBoundaryEntities( meshFunctionPtr , constFunctionPtr );
    check_Boundary_1D(rank, nproc, dof, rank);
@@ -200,7 +205,7 @@ TEST_F(DistributedGridTest_1D, evaluateBoundaryEntities)
 
 TEST_F(DistributedGridTest_1D, evaluateInteriorEntities)
 {
-   //Inner entities, witout overlap
+   //Inner entities, without overlap
    setDof_1D(dof,-1);
    constFunctionEvaluator.evaluateInteriorEntities( meshFunctionPtr , constFunctionPtr );
    check_Boundary_1D(rank, nproc, dof, -1);
@@ -213,7 +218,7 @@ TEST_F(DistributedGridTest_1D, SynchronizerNeighborsTest )
    setDof_1D(dof,-1);
    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
    Synchronizer synchronizer;
-   synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+   synchronizer.setDistributedGrid( distributedGrid );
    synchronizer.synchronize( *meshFunctionPtr );
 
    if(rank!=0) {
@@ -230,14 +235,14 @@ TEST_F(DistributedGridTest_1D, EvaluateLinearFunction )
    setDof_1D(dof,-1);
    linearFunctionEvaluator.evaluateAllEntities(meshFunctionPtr, linearFunctionPtr);
    Synchronizer synchronizer;
-   synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+   synchronizer.setDistributedGrid( distributedGrid );
    synchronizer.synchronize( *meshFunctionPtr );
 
-   auto entity = gridptr->template getEntity< Cell >(0);
+   auto entity = localGrid->template getEntity< Cell >(0);
    entity.refresh();
    EXPECT_EQ(meshFunctionPtr->getValue(entity), (*linearFunctionPtr)(entity)) << "Linear function Overlap error on left Edge.";
 
-   auto entity2= gridptr->template getEntity< Cell >((dof).getSize()-1);
+   auto entity2= localGrid->template getEntity< Cell >((dof).getSize()-1);
    entity2.refresh();
    EXPECT_EQ(meshFunctionPtr->getValue(entity), (*linearFunctionPtr)(entity)) << "Linear function Overlap error on right Edge.";
 }
@@ -250,17 +255,18 @@ TEST_F(DistributedGridTest_1D, SynchronizePeriodicNeighborsWithoutMask )
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridptr);
-   dof.setSize( gridptr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridptr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridptr, dof );
-   maskPointer->bind( gridptr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
 
    setDof_1D( dof, -rank-1 );
-   maskDofs.setValue( true );
    //meshFunctionPtr->getSynchronizer().setPeriodicBoundariesCopyDirection( Synchronizer::OverlapToBoundary );
    Synchronizer synchronizer;
-   synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+   synchronizer.setDistributedGrid( distributedGrid );
    synchronizer.synchronize( *meshFunctionPtr, true );
 
    if( rank == 0 ) {
@@ -279,18 +285,22 @@ TEST_F(DistributedGridTest_1D, SynchronizePeriodicNeighborsWithActiveMask )
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridptr);
-   dof.setSize( gridptr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridptr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridptr, dof );
-   maskPointer->bind( gridptr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    setDof_1D( dof, -rank-1 );
    maskDofs.setValue( true );
    //constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr, constFunctionPtr );
    //meshFunctionPtr->getSynchronizer().setPeriodicBoundariesCopyDirection( Synchronizer::OverlapToBoundary );
    Synchronizer synchronizer;
-   synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+   synchronizer.setDistributedGrid( distributedGrid );
    synchronizer.synchronize( *meshFunctionPtr, true, maskPointer );
    if( rank == 0 ) {
       EXPECT_EQ( dof[ 0 ], -nproc ) << "Left Overlap was filled by wrong process.";
@@ -310,11 +320,15 @@ TEST_F(DistributedGridTest_1D, SynchronizePeriodicNeighborsWithInactiveMaskOnLef
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridptr);
-   dof.setSize( gridptr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridptr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridptr, dof );
-   maskPointer->bind( gridptr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    setDof_1D( dof, -rank-1 );
    maskDofs.setValue( true );
@@ -339,11 +353,15 @@ TEST_F(DistributedGridTest_1D, SynchronizePeriodicNeighborsWithInactiveMask )
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridptr);
-   dof.setSize( gridptr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridptr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridptr, dof );
-   maskPointer->bind( gridptr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    setDof_1D( dof, -rank-1 );
    maskDofs.setValue( true );
@@ -370,19 +388,23 @@ TEST_F(DistributedGridTest_1D, SynchronizePeriodicBoundariesLinearTest )
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridptr);
-   dof.setSize( gridptr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridptr, dof );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
 
    setDof_1D(dof, -rank-1 );
    linearFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , linearFunctionPtr );
 
    Synchronizer synchronizer;
-   synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+   synchronizer.setDistributedGrid( distributedGrid );
    synchronizer.synchronize( *meshFunctionPtr, true );
 
-   auto entity = gridptr->template getEntity< Cell >( 0 );
-   auto entity2= gridptr->template getEntity< Cell >( (dof).getSize() - 1 );
+   auto entity = localGrid->template getEntity< Cell >( 0 );
+   auto entity2= localGrid->template getEntity< Cell >( (dof).getSize() - 1 );
    entity.refresh();
    entity2.refresh();
 
@@ -393,6 +415,93 @@ TEST_F(DistributedGridTest_1D, SynchronizePeriodicBoundariesLinearTest )
       EXPECT_EQ( meshFunctionPtr->getValue(entity2), 0 ) << "Linear function Overlap error on right Edge.";
    }
 }
+
+TEST_F(DistributedGridTest_1D, PVTIWriterReader)
+{
+   // create a .pvti file (only rank 0 actually writes to the file)
+   const std::string baseName = "DistributedGridTest_1D_" + std::to_string(nproc) + "proc";
+   const std::string mainFilePath = baseName + ".pvti";
+   std::string subfilePath;
+   {
+      std::ofstream file;
+      if( TNL::MPI::GetRank() == 0 )
+         file.open( mainFilePath );
+      using PVTI = Meshes::Writers::PVTIWriter< GridType >;
+      PVTI pvti( file );
+      pvti.writeImageData( *distributedGrid );
+      // TODO
+//      if( mesh.getGhostLevels() > 0 ) {
+//         pvti.template writePPointData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//         pvti.template writePCellData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//      }
+      subfilePath = pvti.addPiece( mainFilePath, *distributedGrid );
+
+      // create a .vti file for local data
+      using Writer = Meshes::Writers::VTIWriter< GridType >;
+      std::ofstream subfile( subfilePath );
+      Writer writer( subfile );
+      writer.writeImageData( *localGrid );
+      // TODO
+//      if( mesh.getGhostLevels() > 0 ) {
+//         writer.writePointData( mesh.vtkPointGhostTypes(), Meshes::VTK::ghostArrayName() );
+//         writer.writeCellData( mesh.vtkCellGhostTypes(), Meshes::VTK::ghostArrayName() );
+//      }
+
+      // end of scope closes the files
+   }
+
+   // load and test
+   TNL::MPI::Barrier();
+   Readers::PVTIReader reader( mainFilePath );
+   reader.detectMesh();
+   EXPECT_EQ( reader.getMeshType(), "Meshes::DistributedGrid" );
+   DistributedMesh< GridType > loadedGrid;
+   reader.loadMesh( loadedGrid );
+   EXPECT_EQ( loadedGrid, *distributedGrid );
+
+   // cleanup
+   EXPECT_EQ( fs::remove( subfilePath ), true );
+   TNL::MPI::Barrier();
+   if( TNL::MPI::GetRank() == 0 ) {
+      EXPECT_EQ( fs::remove( mainFilePath ), true );
+      EXPECT_EQ( fs::remove( baseName ), true );
+   }
+}
+
+TEST_F(DistributedGridTest_1D, readDistributedMeshFunction)
+{
+   const std::string baseName = "DistributedGridTest_MeshFunction_1D_" + std::to_string(nproc) + "proc.pvti";
+   const std::string mainFilePath = baseName + ".pvti";
+
+   // evaluate a function
+   dof.setValue( -1 );
+   constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr, constFunctionPtr );
+
+   // write the mesh function into a .pvti file
+   EXPECT_TRUE( writeDistributedMeshFunction( *distributedGrid, *meshFunctionPtr, "foo", mainFilePath ) );
+
+   // wait for rank 0 to write the main .pvti file
+   TNL::MPI::Barrier();
+
+   // load the mesh function from the .pvti file
+   DofType loadedDof;
+   loadedDof.setLike( dof );
+   loadedDof.setValue( -2 );
+   MeshFunctionType loadedMeshFunction;
+   loadedMeshFunction.bind( localGrid, loadedDof );
+   EXPECT_TRUE( readDistributedMeshFunction( *distributedGrid, loadedMeshFunction, "foo", mainFilePath ) );
+
+   // compare the dofs (MeshFunction and MeshFunctionView do not have operator==)
+//   EXPECT_EQ( loadedMeshFunction, *meshFunctionPtr );
+   EXPECT_EQ( loadedDof, dof );
+
+   // cleanup
+   TNL::MPI::Barrier();
+   if( TNL::MPI::GetRank() == 0 ) {
+      EXPECT_TRUE( fs::remove( mainFilePath ) );
+      EXPECT_GT( fs::remove_all( baseName ), 1 );
+   }
+}
 #endif
 
 #endif
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_2D.cpp b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_2D.cpp
index 1f02dd2364e25a3fa40cf457f9e3f7ad353199ac..7b6b455dea0ee07a82817ef021d30a70a029d754 100644
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_2D.cpp
+++ b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_2D.cpp
@@ -12,20 +12,25 @@
 
 #ifdef HAVE_MPI
 
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
+#include <experimental/filesystem>
+
 #include <TNL/Functions/MeshFunctionView.h>
+#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 #include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
+#include <TNL/Meshes/Writers/PVTIWriter.h>
+#include <TNL/Meshes/Readers/PVTIReader.h>
 
 #include "../../Functions/Functions.h"
 
+namespace fs = std::experimental::filesystem;
+
 using namespace TNL;
 using namespace TNL::Containers;
 using namespace TNL::Meshes;
+using namespace TNL::Meshes::DistributedMeshes;
 using namespace TNL::Functions;
 using namespace TNL::Devices;
-using namespace TNL::Meshes::DistributedMeshes;
-
 
 
 template<typename DofType>
@@ -175,16 +180,15 @@ void checkCorner(const GridType &grid, const DofType &dof, bool up, bool left, t
 template<typename DofType,typename GridType>
 void check_Boundary_2D(int rank, const GridType &grid, const DofType &dof, typename DofType::RealType expectedValue)
 {
-
     if(rank==0)//Up Left
     {
         checkUpEdge(grid,dof,true,false,expectedValue);//posledni je overlap
-        checkLeftEdge(grid,dof,true,false, expectedValue);//posledni je overlap
+        checkLeftEdge(grid,dof,true,false,expectedValue);//posledni je overlap
     }
 
     if(rank==1)//Up Center
     {
-        checkUpEdge(grid,dof,false,false, expectedValue);//prvni a posledni je overlap
+        checkUpEdge(grid,dof,false,false,expectedValue);//prvni a posledni je overlap
     }
 
     if(rank==2)//Up Right
@@ -221,10 +225,10 @@ void check_Boundary_2D(int rank, const GridType &grid, const DofType &dof, typen
 
     if(rank==8) //Down Right
     {
-            checkDownEdge(grid,dof,false,true,expectedValue);
-            checkRightEdge(grid,dof,false,true,expectedValue);
+        checkDownEdge(grid,dof,false,true,expectedValue);
+        checkRightEdge(grid,dof,false,true,expectedValue);
     }
-};
+}
 
 /*expecting 9 processes
  * Known BUG of Traversars: Process boundary is writing over overlap.
@@ -324,16 +328,15 @@ using Synchronizer = DistributedMeshSynchronizer< DistributedGridType >;
 
 class DistributedGridTest_2D : public ::testing::Test
 {
-
    public:
 
       using CoordinatesType = typename GridType::CoordinatesType;
 
       DistributedGridType *distributedGrid;
-      DofType *dof;
+      DofType dof;
       MaskDofType maskDofs;
 
-      Pointers::SharedPointer<GridType> gridPtr;
+      Pointers::SharedPointer<GridType> localGrid;
       Pointers::SharedPointer<MeshFunctionType> meshFunctionPtr;
       Pointers::SharedPointer< MaskType > maskPointer;
 
@@ -371,18 +374,20 @@ class DistributedGridTest_2D : public ::testing::Test
          SubdomainOverlapsGetter< GridType >::
             getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1 );
          distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-         distributedGrid->setupGrid(*gridPtr);
 
-         dof=new DofType(gridPtr->template getEntitiesCount< Cell >());
+         // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+         // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+         *localGrid = distributedGrid->getLocalMesh();
 
-         meshFunctionPtr->bind(gridPtr,*dof);
+         dof.setSize( localGrid->template getEntitiesCount< Cell >() );
+
+         meshFunctionPtr->bind(localGrid,dof);
 
          constFunctionPtr->Number=rank;
       }
 
       void TearDown()
       {
-         delete dof;
          delete distributedGrid;
       }
 };
@@ -391,139 +396,137 @@ TEST_F(DistributedGridTest_2D, evaluateAllEntities)
 {
    //Check Traversars
    //All entities, without overlap
-   setDof_2D(*dof,-1);
+   setDof_2D(dof,-1);
    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
-   //Printer<GridType,DofType>::print_dof(rank,*gridPtr,*dof);
-   check_Boundary_2D(rank, *gridPtr, *dof, rank);
-   check_Overlap_2D(rank, *gridPtr, *dof, -1);
-   check_Inner_2D(rank, *gridPtr, *dof, rank);
+   check_Boundary_2D(rank, *localGrid, dof, rank);
+   check_Overlap_2D(rank, *localGrid, dof, -1);
+   check_Inner_2D(rank, *localGrid, dof, rank);
 }
 
 
 TEST_F(DistributedGridTest_2D, evaluateBoundaryEntities)
 {
     //Boundary entities, without overlap
-    setDof_2D(*dof,-1);
+    setDof_2D(dof,-1);
     constFunctionEvaluator.evaluateBoundaryEntities( meshFunctionPtr , constFunctionPtr );
-    //print_dof_2D(rank,*gridPtr,dof);
-    check_Boundary_2D(rank, *gridPtr, *dof, rank);
-    check_Overlap_2D(rank, *gridPtr, *dof, -1);
-    check_Inner_2D(rank, *gridPtr, *dof, -1);
+    check_Boundary_2D(rank, *localGrid, dof, rank);
+    check_Overlap_2D(rank, *localGrid, dof, -1);
+    check_Inner_2D(rank, *localGrid, dof, -1);
 }
 
 TEST_F(DistributedGridTest_2D, evaluateInteriorEntities)
 {
     //Inner entities, without overlap
-    setDof_2D(*dof,-1);
+    setDof_2D(dof,-1);
     constFunctionEvaluator.evaluateInteriorEntities( meshFunctionPtr , constFunctionPtr );
-    check_Boundary_2D(rank, *gridPtr, *dof, -1);
-    check_Overlap_2D(rank, *gridPtr, *dof, -1);
-    check_Inner_2D(rank, *gridPtr, *dof, rank);
+    check_Boundary_2D(rank, *localGrid, dof, -1);
+    check_Overlap_2D(rank, *localGrid, dof, -1);
+    check_Inner_2D(rank, *localGrid, dof, rank);
 }
 
 TEST_F(DistributedGridTest_2D, LinearFunctionTest)
 {
     //fill meshfunction with linear function (physical center of cell corresponds with its coordinates in grid)
-    setDof_2D(*dof,-1);
+    setDof_2D(dof,-1);
     linearFunctionEvaluator.evaluateAllEntities(meshFunctionPtr, linearFunctionPtr);
     Synchronizer synchronizer;
-    synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+    synchronizer.setDistributedGrid( distributedGrid );
     synchronizer.synchronize( *meshFunctionPtr );
 
-    int count =gridPtr->template getEntitiesCount< Cell >();
+    int count =localGrid->template getEntitiesCount< Cell >();
     for(int i=0;i<count;i++)
     {
-            auto entity= gridPtr->template getEntity< Cell >(i);
+            auto entity= localGrid->template getEntity< Cell >(i);
             entity.refresh();
-            EXPECT_EQ(meshFunctionPtr->getValue(entity), (*linearFunctionPtr)(entity)) << "Linear function doesnt fit recievd data. " << entity.getCoordinates().x() << " "<<entity.getCoordinates().y() << " "<< gridPtr->getDimensions().x() <<" "<<gridPtr->getDimensions().y();
+            EXPECT_EQ(meshFunctionPtr->getValue(entity), (*linearFunctionPtr)(entity)) << "Linear function doesnt fit recievd data. " << entity.getCoordinates().x() << " "<<entity.getCoordinates().y() << " "<< localGrid->getDimensions().x() <<" "<<localGrid->getDimensions().y();
     }
 }
 
 TEST_F(DistributedGridTest_2D, SynchronizerNeighborTest )
 {
    //Expect 9 processes
-   setDof_2D(*dof,-1);
+   setDof_2D(dof,-1);
    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
    Synchronizer synchronizer;
-   synchronizer.setDistributedGrid( meshFunctionPtr->getMesh().getDistributedMesh() );
+   synchronizer.setDistributedGrid( distributedGrid );
    synchronizer.synchronize( *meshFunctionPtr );
 
-   // checkNeighbor_2D(rank, *gridPtr, *dof);
+   // checkNeighbor_2D(rank, *localGrid, dof);
 
     if(rank==0)//Up Left
     {
-        checkRightEdge(*gridPtr, *dof, true,  false, 1 );
-        checkDownEdge( *gridPtr, *dof, true,  false, 3 );
-        checkCorner(   *gridPtr, *dof, false, false, 4 );
+        checkRightEdge(*localGrid, dof, true,  false, 1 );
+        checkDownEdge( *localGrid, dof, true,  false, 3 );
+        checkCorner(   *localGrid, dof, false, false, 4 );
     }
 
     if(rank==1)//Up Center
     {
-        checkLeftEdge( *gridPtr, *dof, true,  false, 0 );
-        checkRightEdge(*gridPtr, *dof, true,  false, 2 );
-        checkCorner(   *gridPtr, *dof, false, true,  3 );
-        checkDownEdge( *gridPtr, *dof, false, false, 4 );
-        checkCorner(   *gridPtr, *dof, false, false, 5 );
+        checkLeftEdge( *localGrid, dof, true,  false, 0 );
+        checkRightEdge(*localGrid, dof, true,  false, 2 );
+        checkCorner(   *localGrid, dof, false, true,  3 );
+        checkDownEdge( *localGrid, dof, false, false, 4 );
+        checkCorner(   *localGrid, dof, false, false, 5 );
     }
 
     if(rank==2)//Up Right
     {
-        checkLeftEdge( *gridPtr, *dof, true,  false, 1 );
-        checkCorner(   *gridPtr, *dof, false, true,  4 );
-        checkDownEdge( *gridPtr, *dof, false, true,  5 );
+        checkLeftEdge( *localGrid, dof, true,  false, 1 );
+        checkCorner(   *localGrid, dof, false, true,  4 );
+        checkDownEdge( *localGrid, dof, false, true,  5 );
     }
 
     if(rank==3)//Center Left
     {
-        checkUpEdge(    *gridPtr, *dof, true,  false, 0 );
-        checkCorner(    *gridPtr, *dof, true,  false, 1 );
-        checkRightEdge( *gridPtr, *dof, false, false, 4 );
-        checkDownEdge(  *gridPtr, *dof, true,  false, 6 );
-        checkCorner(    *gridPtr, *dof, false, false, 7 );
+        checkUpEdge(    *localGrid, dof, true,  false, 0 );
+        checkCorner(    *localGrid, dof, true,  false, 1 );
+        checkRightEdge( *localGrid, dof, false, false, 4 );
+        checkDownEdge(  *localGrid, dof, true,  false, 6 );
+        checkCorner(    *localGrid, dof, false, false, 7 );
     }
 
     if(rank==4)//Center Center
     {
-        checkCorner(    *gridPtr, *dof, true,  true,  0 );
-        checkUpEdge(    *gridPtr, *dof, false, false, 1 );
-        checkCorner(    *gridPtr, *dof, true,  false, 2 );
-        checkLeftEdge(  *gridPtr, *dof, false, false, 3 );
-        checkRightEdge( *gridPtr, *dof, false, false, 5 );
-        checkCorner(    *gridPtr, *dof, false, true,  6 );
-        checkDownEdge(  *gridPtr, *dof, false, false, 7 );
-        checkCorner(    *gridPtr, *dof, false, false, 8 );
+        checkCorner(    *localGrid, dof, true,  true,  0 );
+        checkUpEdge(    *localGrid, dof, false, false, 1 );
+        checkCorner(    *localGrid, dof, true,  false, 2 );
+        checkLeftEdge(  *localGrid, dof, false, false, 3 );
+        checkRightEdge( *localGrid, dof, false, false, 5 );
+        checkCorner(    *localGrid, dof, false, true,  6 );
+        checkDownEdge(  *localGrid, dof, false, false, 7 );
+        checkCorner(    *localGrid, dof, false, false, 8 );
     }
 
     if(rank==5)//Center Right
     {
-        checkCorner(   *gridPtr, *dof, true,  true,  1 );
-        checkUpEdge(   *gridPtr, *dof, false, true,  2 );
-        checkLeftEdge( *gridPtr, *dof, false, false, 4 );
-        checkCorner(   *gridPtr, *dof, false, true,  7 );
-        checkDownEdge( *gridPtr, *dof, false, true,  8 );
+        checkCorner(   *localGrid, dof, true,  true,  1 );
+        checkUpEdge(   *localGrid, dof, false, true,  2 );
+        checkLeftEdge( *localGrid, dof, false, false, 4 );
+        checkCorner(   *localGrid, dof, false, true,  7 );
+        checkDownEdge( *localGrid, dof, false, true,  8 );
     }
 
     if(rank==6)//Down Left
     {
-        checkUpEdge(    *gridPtr, *dof, true,  false, 3 );
-        checkCorner(    *gridPtr, *dof, true,  false, 4 );
-        checkRightEdge( *gridPtr, *dof, false, true,  7 );
+        checkUpEdge(    *localGrid, dof, true,  false, 3 );
+        checkCorner(    *localGrid, dof, true,  false, 4 );
+        checkRightEdge( *localGrid, dof, false, true,  7 );
     }
 
     if(rank==7) //Down Center
     {
-        checkCorner(    *gridPtr, *dof, true,  true,  3 );
-        checkUpEdge(    *gridPtr, *dof, false, false, 4 );
-        checkCorner(    *gridPtr, *dof, true,  false, 5 );
-        checkLeftEdge(  *gridPtr, *dof, false, true,  6 );
-        checkRightEdge( *gridPtr, *dof, false, true,  8 );
+        checkCorner(    *localGrid, dof, true,  true,  3 );
+        checkUpEdge(    *localGrid, dof, false, false, 4 );
+        checkCorner(    *localGrid, dof, true,  false, 5 );
+        checkLeftEdge(  *localGrid, dof, false, true,  6 );
+        checkRightEdge( *localGrid, dof, false, true,  8 );
     }
 
     if(rank==8) //Down Right
     {
-        checkCorner(   *gridPtr, *dof, true,  true, 4 );
-        checkUpEdge(   *gridPtr, *dof, false, true, 5 );
-        checkLeftEdge( *gridPtr, *dof, false, true, 7 );
+        checkCorner(   *localGrid, dof, true,  true, 4 );
+        checkUpEdge(   *localGrid, dof, false, true, 5 );
+        checkLeftEdge( *localGrid, dof, false, true, 7 );
     }
 }
 
@@ -540,12 +543,16 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithoutMask
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridPtr);
-   dof->setSize( gridPtr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridPtr, *dof );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof->setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
 
    //Expecting 9 processes
-   setDof_2D(*dof, -rank-1 );
+   setDof_2D(dof, -rank-1 );
    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
    //meshFunctionPtr->getSynchronizer().setPeriodicBoundariesCopyDirection( Synchronizer::OverlapToBoundary );
    meshFunctionPtr->synchronize( true );
@@ -553,53 +560,53 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithoutMask
    if( rank == 0 )
    {
       SCOPED_TRACE( "Up Left" );
-      checkLeftBoundary( *gridPtr, *dof, false,  true, -3 );
-      checkUpBoundary(   *gridPtr, *dof, false,  true, -7 );
+      checkLeftBoundary( *localGrid, dof, false,  true, -3 );
+      checkUpBoundary(   *localGrid, dof, false,  true, -7 );
    }
 
    if( rank == 1 )
    {
       SCOPED_TRACE( "Up Center" );
-      checkUpBoundary( *gridPtr, *dof, true, true, -8 );
+      checkUpBoundary( *localGrid, dof, true, true, -8 );
    }
 
    if( rank == 2 )
    {
       SCOPED_TRACE( "Up Right" );
-      checkRightBoundary( *gridPtr, *dof, false, true, -1 );
-      checkUpBoundary(    *gridPtr, *dof, true, false, -9 );
+      checkRightBoundary( *localGrid, dof, false, true, -1 );
+      checkUpBoundary(    *localGrid, dof, true, false, -9 );
    }
 
    if( rank == 3 )
    {
       SCOPED_TRACE( "Center Left" );
-      checkLeftBoundary( *gridPtr, *dof, true, true, -6 );
+      checkLeftBoundary( *localGrid, dof, true, true, -6 );
    }
 
    if( rank == 5 )
    {
       SCOPED_TRACE( "Center Right" );
-      checkRightBoundary( *gridPtr, *dof, true, true, -4 );
+      checkRightBoundary( *localGrid, dof, true, true, -4 );
    }
 
    if( rank == 6 )
    {
       SCOPED_TRACE( "Down Left" );
-      checkDownBoundary( *gridPtr, *dof, false,  true, -1 );
-      checkLeftBoundary( *gridPtr, *dof, true,  false,  -9 );
+      checkDownBoundary( *localGrid, dof, false,  true, -1 );
+      checkLeftBoundary( *localGrid, dof, true,  false,  -9 );
    }
 
    if( rank == 7 )
    {
       SCOPED_TRACE( "Down Center" );
-      checkDownBoundary( *gridPtr, *dof, true, true, -2 );
+      checkDownBoundary( *localGrid, dof, true, true, -2 );
    }
 
    if( rank == 8 )
    {
       SCOPED_TRACE( "Down Right" );
-      checkDownBoundary(  *gridPtr, *dof, true, false, -3 );
-      checkRightBoundary( *gridPtr, *dof, true, false, -7 );
+      checkDownBoundary(  *localGrid, dof, true, false, -3 );
+      checkRightBoundary( *localGrid, dof, true, false, -7 );
    }
 }
 
@@ -612,14 +619,18 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithActiveM
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridPtr);
-   dof->setSize( gridPtr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridPtr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridPtr, *dof );
-   maskPointer->bind( gridPtr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof->setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    //Expecting 9 processes
-   setDof_2D(*dof, -rank-1 );
+   setDof_2D(dof, -rank-1 );
    maskDofs.setValue( true );
    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
    meshFunctionPtr->getSynchronizer().setPeriodicBoundariesCopyDirection( Synchronizer::OverlapToBoundary );
@@ -628,53 +639,53 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithActiveM
    if( rank == 0 )
    {
       SCOPED_TRACE( "Up Left" );
-      checkLeftBoundary( *gridPtr, *dof, false,  true, -3 );
-      checkUpBoundary(   *gridPtr, *dof, false,  true, -7 );
+      checkLeftBoundary( *localGrid, dof, false,  true, -3 );
+      checkUpBoundary(   *localGrid, dof, false,  true, -7 );
    }
 
    if( rank == 1 )
    {
       SCOPED_TRACE( "Up Center" );
-      checkUpBoundary( *gridPtr, *dof, true, true, -8 );
+      checkUpBoundary( *localGrid, dof, true, true, -8 );
    }
 
    if( rank == 2 )
    {
       SCOPED_TRACE( "Up Right" );
-      checkRightBoundary( *gridPtr, *dof, false, true, -1 );
-      checkUpBoundary(    *gridPtr, *dof, true, false, -9 );
+      checkRightBoundary( *localGrid, dof, false, true, -1 );
+      checkUpBoundary(    *localGrid, dof, true, false, -9 );
    }
 
    if( rank == 3 )
    {
       SCOPED_TRACE( "Center Left" );
-      checkLeftBoundary( *gridPtr, *dof, true, true, -6 );
+      checkLeftBoundary( *localGrid, dof, true, true, -6 );
    }
 
    if( rank == 5 )
    {
       SCOPED_TRACE( "Center Right" );
-      checkRightBoundary( *gridPtr, *dof, true, true, -4 );
+      checkRightBoundary( *localGrid, dof, true, true, -4 );
    }
 
    if( rank == 6 )
    {
       SCOPED_TRACE( "Down Left" );
-      checkDownBoundary( *gridPtr, *dof, false,  true, -1 );
-      checkLeftBoundary( *gridPtr, *dof, true,  false,  -9 );
+      checkDownBoundary( *localGrid, dof, false,  true, -1 );
+      checkLeftBoundary( *localGrid, dof, true,  false,  -9 );
    }
 
    if( rank == 7 )
    {
       SCOPED_TRACE( "Down Center" );
-      checkDownBoundary( *gridPtr, *dof, true, true, -2 );
+      checkDownBoundary( *localGrid, dof, true, true, -2 );
    }
 
    if( rank == 8 )
    {
       SCOPED_TRACE( "Down Right" );
-      checkDownBoundary(  *gridPtr, *dof, true, false, -3 );
-      checkRightBoundary( *gridPtr, *dof, true, false, -7 );
+      checkDownBoundary(  *localGrid, dof, true, false, -3 );
+      checkRightBoundary( *localGrid, dof, true, false, -7 );
    }
 }
 
@@ -687,20 +698,24 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInactiv
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridPtr);
-   dof->setSize( gridPtr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridPtr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridPtr, *dof );
-   maskPointer->bind( gridPtr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof->setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    //Expecting 9 processes
-   setDof_2D(*dof, -rank-1 );
+   setDof_2D(dof, -rank-1 );
    maskDofs.setValue( true );
    if( distributedGrid->getNeighbors()[ ZzYzXm ] == -1 )
    {
-      for( IndexType i = 0; i < gridPtr->getDimensions().y(); i++ )
+      for( IndexType i = 0; i < localGrid->getDimensions().y(); i++ )
       {
-         typename GridType::Cell cell( *gridPtr );
+         typename GridType::Cell cell( *localGrid );
          cell.getCoordinates() = CoordinatesType( 1, i );
          cell.refresh();
          maskPointer->getData().setElement( cell.getIndex(), false );
@@ -713,53 +728,53 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInactiv
    if( rank == 0 )
    {
       SCOPED_TRACE( "Up Left" );
-      checkLeftBoundary( *gridPtr, *dof, false,  true, 0 );
-      checkUpBoundary(   *gridPtr, *dof, false,  true, -7 );
+      checkLeftBoundary( *localGrid, dof, false,  true, 0 );
+      checkUpBoundary(   *localGrid, dof, false,  true, -7 );
    }
 
    if( rank == 1 )
    {
       SCOPED_TRACE( "Up Center" );
-      checkUpBoundary( *gridPtr, *dof, true, true, -8 );
+      checkUpBoundary( *localGrid, dof, true, true, -8 );
    }
 
    if( rank == 2 )
    {
       SCOPED_TRACE( "Up Right" );
-      checkRightBoundary( *gridPtr, *dof, false, true, -1 );
-      checkUpBoundary(    *gridPtr, *dof, true, false, -9 );
+      checkRightBoundary( *localGrid, dof, false, true, -1 );
+      checkUpBoundary(    *localGrid, dof, true, false, -9 );
    }
 
    if( rank == 3 )
    {
       SCOPED_TRACE( "Center Left" );
-      checkLeftBoundary( *gridPtr, *dof, true, true, 3 );
+      checkLeftBoundary( *localGrid, dof, true, true, 3 );
    }
 
    if( rank == 5 )
    {
       SCOPED_TRACE( "Center Right" );
-      checkRightBoundary( *gridPtr, *dof, true, true, -4 );
+      checkRightBoundary( *localGrid, dof, true, true, -4 );
    }
 
    if( rank == 6 )
    {
       SCOPED_TRACE( "Down Left" );
-      checkDownBoundary( *gridPtr, *dof, false,  true, -1 );
-      checkLeftBoundary( *gridPtr, *dof, true,  false,  6 );
+      checkDownBoundary( *localGrid, dof, false,  true, -1 );
+      checkLeftBoundary( *localGrid, dof, true,  false,  6 );
    }
 
    if( rank == 7 )
    {
       SCOPED_TRACE( "Down Center" );
-      checkDownBoundary( *gridPtr, *dof, true, true, -2 );
+      checkDownBoundary( *localGrid, dof, true, true, -2 );
    }
 
    if( rank == 8 )
    {
       SCOPED_TRACE( "Down Right" );
-      checkDownBoundary(  *gridPtr, *dof, true, false, -3 );
-      checkRightBoundary( *gridPtr, *dof, true, false, -7 );
+      checkDownBoundary(  *localGrid, dof, true, false, -3 );
+      checkRightBoundary( *localGrid, dof, true, false, -7 );
    }
 }
 
@@ -772,21 +787,25 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInActiv
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridPtr);
-   dof->setSize( gridPtr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridPtr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridPtr, *dof );
-   maskPointer->bind( gridPtr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof->setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    //Expecting 9 processes
-   setDof_2D(*dof, -rank-1 );
+   setDof_2D(dof, -rank-1 );
    maskDofs.setValue( true );
    if( distributedGrid->getNeighbors()[ ZzYzXp ] == -1 )
    {
-      for( IndexType i = 0; i < gridPtr->getDimensions().y(); i++ )
+      for( IndexType i = 0; i < localGrid->getDimensions().y(); i++ )
       {
-         typename GridType::Cell cell( *gridPtr );
-         cell.getCoordinates() = CoordinatesType( gridPtr->getDimensions().x() - 2, i );
+         typename GridType::Cell cell( *localGrid );
+         cell.getCoordinates() = CoordinatesType( localGrid->getDimensions().x() - 2, i );
          cell.refresh();
          maskPointer->getData().setElement( cell.getIndex(), false );
       }
@@ -798,53 +817,53 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInActiv
    if( rank == 0 )
    {
       SCOPED_TRACE( "Up Left" );
-      checkLeftBoundary( *gridPtr, *dof, false,  true, -3 );
-      checkUpBoundary(   *gridPtr, *dof, false,  true, -7 );
+      checkLeftBoundary( *localGrid, dof, false,  true, -3 );
+      checkUpBoundary(   *localGrid, dof, false,  true, -7 );
    }
 
    if( rank == 1 )
    {
       SCOPED_TRACE( "Up Center" );
-      checkUpBoundary( *gridPtr, *dof, true, true, -8 );
+      checkUpBoundary( *localGrid, dof, true, true, -8 );
    }
 
    if( rank == 2 )
    {
       SCOPED_TRACE( "Up Right" );
-      checkRightBoundary( *gridPtr, *dof, false, true, 2 );
-      checkUpBoundary(    *gridPtr, *dof, true, false, -9 );
+      checkRightBoundary( *localGrid, dof, false, true, 2 );
+      checkUpBoundary(    *localGrid, dof, true, false, -9 );
    }
 
    if( rank == 3 )
    {
       SCOPED_TRACE( "Center Left" );
-      checkLeftBoundary( *gridPtr, *dof, true, true, -6 );
+      checkLeftBoundary( *localGrid, dof, true, true, -6 );
    }
 
    if( rank == 5 )
    {
       SCOPED_TRACE( "Center Right" );
-      checkRightBoundary( *gridPtr, *dof, true, true, 5 );
+      checkRightBoundary( *localGrid, dof, true, true, 5 );
    }
 
    if( rank == 6 )
    {
       SCOPED_TRACE( "Down Left" );
-      checkDownBoundary( *gridPtr, *dof, false,  true, -1 );
-      checkLeftBoundary( *gridPtr, *dof, true,  false,  -9 );
+      checkDownBoundary( *localGrid, dof, false,  true, -1 );
+      checkLeftBoundary( *localGrid, dof, true,  false,  -9 );
    }
 
    if( rank == 7 )
    {
       SCOPED_TRACE( "Down Center" );
-      checkDownBoundary( *gridPtr, *dof, true, true, -2 );
+      checkDownBoundary( *localGrid, dof, true, true, -2 );
    }
 
    if( rank == 8 )
    {
       SCOPED_TRACE( "Down Right" );
-      checkDownBoundary(  *gridPtr, *dof, true, false, -3 );
-      checkRightBoundary( *gridPtr, *dof, true, false, 8 );
+      checkDownBoundary(  *localGrid, dof, true, false, -3 );
+      checkRightBoundary( *localGrid, dof, true, false, 8 );
    }
 }
 
@@ -857,20 +876,24 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInActiv
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridPtr);
-   dof->setSize( gridPtr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridPtr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridPtr, *dof );
-   maskPointer->bind( gridPtr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof->setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    //Expecting 9 processes
-   setDof_2D(*dof, -rank-1 );
+   setDof_2D(dof, -rank-1 );
    maskDofs.setValue( true );
    if( distributedGrid->getNeighbors()[ ZzYmXz ] == -1 )
    {
-      for( IndexType i = 0; i < gridPtr->getDimensions().x(); i++ )
+      for( IndexType i = 0; i < localGrid->getDimensions().x(); i++ )
       {
-         typename GridType::Cell cell( *gridPtr );
+         typename GridType::Cell cell( *localGrid );
          cell.getCoordinates() = CoordinatesType( i, 1 );
          cell.refresh();
          maskPointer->getData().setElement( cell.getIndex(), false );
@@ -883,53 +906,53 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInActiv
    if( rank == 0 )
    {
       SCOPED_TRACE( "Up Left" );
-      checkLeftBoundary( *gridPtr, *dof, false,  true, -3 );
-      checkUpBoundary(   *gridPtr, *dof, false,  true, 0 );
+      checkLeftBoundary( *localGrid, dof, false,  true, -3 );
+      checkUpBoundary(   *localGrid, dof, false,  true, 0 );
    }
 
    if( rank == 1 )
    {
       SCOPED_TRACE( "Up Center" );
-      checkUpBoundary( *gridPtr, *dof, true, true, 1 );
+      checkUpBoundary( *localGrid, dof, true, true, 1 );
    }
 
    if( rank == 2 )
    {
       SCOPED_TRACE( "Up Right" );
-      checkRightBoundary( *gridPtr, *dof, false, true, -1 );
-      checkUpBoundary(    *gridPtr, *dof, true, false, 2 );
+      checkRightBoundary( *localGrid, dof, false, true, -1 );
+      checkUpBoundary(    *localGrid, dof, true, false, 2 );
    }
 
    if( rank == 3 )
    {
       SCOPED_TRACE( "Center Left" );
-      checkLeftBoundary( *gridPtr, *dof, true, true, -6 );
+      checkLeftBoundary( *localGrid, dof, true, true, -6 );
    }
 
    if( rank == 5 )
    {
       SCOPED_TRACE( "Center Right" );
-      checkRightBoundary( *gridPtr, *dof, true, true, -4 );
+      checkRightBoundary( *localGrid, dof, true, true, -4 );
    }
 
    if( rank == 6 )
    {
       SCOPED_TRACE( "Down Left" );
-      checkDownBoundary( *gridPtr, *dof, false,  true, -1 );
-      checkLeftBoundary( *gridPtr, *dof, true,  false,  -9 );
+      checkDownBoundary( *localGrid, dof, false,  true, -1 );
+      checkLeftBoundary( *localGrid, dof, true,  false,  -9 );
    }
 
    if( rank == 7 )
    {
       SCOPED_TRACE( "Down Center" );
-      checkDownBoundary( *gridPtr, *dof, true, true, -2 );
+      checkDownBoundary( *localGrid, dof, true, true, -2 );
    }
 
    if( rank == 8 )
    {
       SCOPED_TRACE( "Down Right" );
-      checkDownBoundary(  *gridPtr, *dof, true, false, -3 );
-      checkRightBoundary( *gridPtr, *dof, true, false, -7 );
+      checkDownBoundary(  *localGrid, dof, true, false, -3 );
+      checkRightBoundary( *localGrid, dof, true, false, -7 );
    }
 }
 
@@ -942,21 +965,25 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInActiv
    SubdomainOverlapsGetter< GridType >::
       getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1, 1, 1 );
    distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
-   distributedGrid->setupGrid(*gridPtr);
-   dof->setSize( gridPtr->template getEntitiesCount< Cell >() );
-   maskDofs.setSize( gridPtr->template getEntitiesCount< Cell >() );
-   meshFunctionPtr->bind( gridPtr, *dof );
-   maskPointer->bind( gridPtr, maskDofs );
+
+   // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+   // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+   *localGrid = distributedGrid->getLocalMesh();
+
+   dof->setSize( localGrid->template getEntitiesCount< Cell >() );
+   maskDofs.setSize( localGrid->template getEntitiesCount< Cell >() );
+   meshFunctionPtr->bind( localGrid, dof );
+   maskPointer->bind( localGrid, maskDofs );
 
    //Expecting 9 processes
-   setDof_2D(*dof, -rank-1 );
+   setDof_2D(dof, -rank-1 );
    maskDofs.setValue( true );
    if( distributedGrid->getNeighbors()[ ZzYpXz ] == -1 )
    {
-      for( IndexType i = 0; i < gridPtr->getDimensions().x(); i++ )
+      for( IndexType i = 0; i < localGrid->getDimensions().x(); i++ )
       {
-         typename GridType::Cell cell( *gridPtr );
-         cell.getCoordinates() = CoordinatesType( i, gridPtr->getDimensions().y() - 2 );
+         typename GridType::Cell cell( *localGrid );
+         cell.getCoordinates() = CoordinatesType( i, localGrid->getDimensions().y() - 2 );
          cell.refresh();
          maskPointer->getData().setElement( cell.getIndex(), false );
       }
@@ -968,56 +995,143 @@ TEST_F(DistributedGridTest_2D, SynchronizerNeighborPeriodicBoundariesWithInActiv
    if( rank == 0 )
    {
       SCOPED_TRACE( "Up Left" );
-      checkLeftBoundary( *gridPtr, *dof, false,  true, -3 );
-      checkUpBoundary(   *gridPtr, *dof, false,  true, -7 );
+      checkLeftBoundary( *localGrid, dof, false,  true, -3 );
+      checkUpBoundary(   *localGrid, dof, false,  true, -7 );
    }
 
    if( rank == 1 )
    {
       SCOPED_TRACE( "Up Center" );
-      checkUpBoundary( *gridPtr, *dof, true, true, -8 );
+      checkUpBoundary( *localGrid, dof, true, true, -8 );
    }
 
    if( rank == 2 )
    {
       SCOPED_TRACE( "Up Right" );
-      checkRightBoundary( *gridPtr, *dof, false, true, -1 );
-      checkUpBoundary(    *gridPtr, *dof, true, false, -9 );
+      checkRightBoundary( *localGrid, dof, false, true, -1 );
+      checkUpBoundary(    *localGrid, dof, true, false, -9 );
    }
 
    if( rank == 3 )
    {
       SCOPED_TRACE( "Center Left" );
-      checkLeftBoundary( *gridPtr, *dof, true, true, -6 );
+      checkLeftBoundary( *localGrid, dof, true, true, -6 );
    }
 
    if( rank == 5 )
    {
       SCOPED_TRACE( "Center Right" );
-      checkRightBoundary( *gridPtr, *dof, true, true, -4 );
+      checkRightBoundary( *localGrid, dof, true, true, -4 );
    }
 
    if( rank == 6 )
    {
       SCOPED_TRACE( "Down Left" );
-      checkDownBoundary( *gridPtr, *dof, false,  true, 6 );
-      checkLeftBoundary( *gridPtr, *dof, true,  false,  -9 );
+      checkDownBoundary( *localGrid, dof, false,  true, 6 );
+      checkLeftBoundary( *localGrid, dof, true,  false,  -9 );
    }
 
    if( rank == 7 )
    {
       SCOPED_TRACE( "Down Center" );
-      checkDownBoundary( *gridPtr, *dof, true, true, 7 );
+      checkDownBoundary( *localGrid, dof, true, true, 7 );
    }
 
    if( rank == 8 )
    {
       SCOPED_TRACE( "Down Right" );
-      checkDownBoundary(  *gridPtr, *dof, true, false, 8 );
-      checkRightBoundary( *gridPtr, *dof, true, false, -7 );
+      checkDownBoundary(  *localGrid, dof, true, false, 8 );
+      checkRightBoundary( *localGrid, dof, true, false, -7 );
    }
 }
 */
+
+TEST_F(DistributedGridTest_2D, PVTIWriterReader)
+{
+   // create a .pvti file (only rank 0 actually writes to the file)
+   const std::string baseName = "DistributedGridTest_2D_" + std::to_string(nproc) + "proc";
+   const std::string mainFilePath = baseName + ".pvti";
+   std::string subfilePath;
+   {
+      std::ofstream file;
+      if( TNL::MPI::GetRank() == 0 )
+         file.open( mainFilePath );
+      using PVTI = Meshes::Writers::PVTIWriter< GridType >;
+      PVTI pvti( file );
+      pvti.writeImageData( *distributedGrid );
+      // TODO
+//      if( mesh.getGhostLevels() > 0 ) {
+//         pvti.template writePPointData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//         pvti.template writePCellData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//      }
+      subfilePath = pvti.addPiece( mainFilePath, *distributedGrid );
+
+      // create a .vti file for local data
+      using Writer = Meshes::Writers::VTIWriter< GridType >;
+      std::ofstream subfile( subfilePath );
+      Writer writer( subfile );
+      writer.writeImageData( *localGrid );
+      // TODO
+//      if( mesh.getGhostLevels() > 0 ) {
+//         writer.writePointData( mesh.vtkPointGhostTypes(), Meshes::VTK::ghostArrayName() );
+//         writer.writeCellData( mesh.vtkCellGhostTypes(), Meshes::VTK::ghostArrayName() );
+//      }
+
+      // end of scope closes the files
+   }
+
+   // load and test
+   TNL::MPI::Barrier();
+   Readers::PVTIReader reader( mainFilePath );
+   reader.detectMesh();
+   EXPECT_EQ( reader.getMeshType(), "Meshes::DistributedGrid" );
+   DistributedMesh< GridType > loadedGrid;
+   reader.loadMesh( loadedGrid );
+   EXPECT_EQ( loadedGrid, *distributedGrid );
+
+   // cleanup
+   EXPECT_EQ( fs::remove( subfilePath ), true );
+   TNL::MPI::Barrier();
+   if( TNL::MPI::GetRank() == 0 ) {
+      EXPECT_EQ( fs::remove( mainFilePath ), true );
+      EXPECT_EQ( fs::remove( baseName ), true );
+   }
+}
+
+TEST_F(DistributedGridTest_2D, readDistributedMeshFunction)
+{
+   const std::string baseName = "DistributedGridTest_MeshFunction_2D_" + std::to_string(nproc) + "proc.pvti";
+   const std::string mainFilePath = baseName + ".pvti";
+
+   // evaluate a function
+   dof.setValue( -1 );
+   constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr, constFunctionPtr );
+
+   // write the mesh function into a .pvti file
+   EXPECT_TRUE( writeDistributedMeshFunction( *distributedGrid, *meshFunctionPtr, "foo", mainFilePath ) );
+
+   // wait for rank 0 to write the main .pvti file
+   TNL::MPI::Barrier();
+
+   // load the mesh function from the .pvti file
+   DofType loadedDof;
+   loadedDof.setLike( dof );
+   loadedDof.setValue( -2 );
+   MeshFunctionType loadedMeshFunction;
+   loadedMeshFunction.bind( localGrid, loadedDof );
+   EXPECT_TRUE( readDistributedMeshFunction( *distributedGrid, loadedMeshFunction, "foo", mainFilePath ) );
+
+   // compare the dofs (MeshFunction and MeshFunctionView do not have operator==)
+//   EXPECT_EQ( loadedMeshFunction, *meshFunctionPtr );
+   EXPECT_EQ( loadedDof, dof );
+
+   // cleanup
+   TNL::MPI::Barrier();
+   if( TNL::MPI::GetRank() == 0 ) {
+      EXPECT_TRUE( fs::remove( mainFilePath ) );
+      EXPECT_GT( fs::remove_all( baseName ), 1 );
+   }
+}
 #endif
 
 #endif
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_3D.cpp b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_3D.cpp
index 4f552dee5455c576111c60d783aee34d45aeb213..e60471ce43471b8a24c5813109740ac493108fa4 100644
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_3D.cpp
+++ b/src/UnitTests/Meshes/DistributedMeshes/DistributedGridTest_3D.cpp
@@ -3,13 +3,19 @@
 
 #ifdef HAVE_MPI
 
+#include <experimental/filesystem>
+
 #include <TNL/Functions/MeshFunctionView.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
 #include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
 #include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
+#include <TNL/Meshes/Writers/PVTIWriter.h>
+#include <TNL/Meshes/Readers/PVTIReader.h>
 
 #include "../../Functions/Functions.h"
 
+namespace fs = std::experimental::filesystem;
+
 using namespace TNL;
 using namespace TNL::Containers;
 using namespace TNL::Meshes;
@@ -600,15 +606,15 @@ typedef typename GridType::PointType PointType;
 typedef DistributedMesh<GridType> DistributedGridType;
 using Synchronizer = DistributedMeshSynchronizer< DistributedGridType >;
 
-class DistributedGirdTest_3D : public ::testing::Test
+class DistributedGridTest_3D : public ::testing::Test
 {
    protected:
 
       DistributedGridType *distributedGrid;
-      DofType *dof;
+      DofType dof;
 
-      Pointers::SharedPointer<GridType> gridptr;
-      Pointers::SharedPointer<MeshFunctionType> meshFunctionptr;
+      Pointers::SharedPointer<GridType> localGrid;
+      Pointers::SharedPointer<MeshFunctionType> meshFunctionPtr;
 
       MeshFunctionEvaluator< MeshFunctionType, ConstFunction<double,3> > constFunctionEvaluator;
       Pointers::SharedPointer< ConstFunction<double,3>, Host > constFunctionPtr;
@@ -643,83 +649,170 @@ class DistributedGirdTest_3D : public ::testing::Test
          distributedGrid=new DistributedGridType();
          distributedGrid->setDomainDecomposition( typename DistributedGridType::CoordinatesType( 3, 3, 3 ) );
          distributedGrid->setGlobalGrid( globalGrid );
-         distributedGrid->setupGrid(*gridptr);
          typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
          SubdomainOverlapsGetter< GridType >::
             getOverlaps( distributedGrid, lowerOverlap, upperOverlap, 1 );
          distributedGrid->setOverlaps( lowerOverlap, upperOverlap );
 
-         distributedGrid->setupGrid(*gridptr);
-         dof=new DofType(gridptr->template getEntitiesCount< Cell >());
+         // FIXME: DistributedGrid does not have a SharedPointer of the local grid,
+         // the MeshFunction interface is fucked up (it should not require us to put SharedPointer everywhere)
+         *localGrid = distributedGrid->getLocalMesh();
+
+         dof.setSize( localGrid->template getEntitiesCount< Cell >() );
 
-         meshFunctionptr->bind(gridptr,*dof);
+         meshFunctionPtr->bind(localGrid,dof);
          constFunctionPtr->Number=rank;
       }
 
       void TearDown()
       {
-         delete dof;
          delete distributedGrid;
       }
 };
 
-TEST_F(DistributedGirdTest_3D, evaluateAllEntities)
+TEST_F(DistributedGridTest_3D, evaluateAllEntities)
 {
 
     //Check Traversars
     //All entities, witout overlap
-    setDof_3D(*dof,-1);
-    constFunctionEvaluator.evaluateAllEntities( meshFunctionptr , constFunctionPtr );
-    //Printer<GridType,DofType>::print_dof(rank,*gridptr,*dof);
-    check_Boundary_3D(rank, *gridptr, *dof, rank);
-    check_Overlap_3D(rank, *gridptr, *dof, -1);
-    check_Inner_3D(rank, *gridptr, *dof, rank);
+    setDof_3D(dof,-1);
+    constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr , constFunctionPtr );
+    check_Boundary_3D(rank, *localGrid, dof, rank);
+    check_Overlap_3D(rank, *localGrid, dof, -1);
+    check_Inner_3D(rank, *localGrid, dof, rank);
 }
 
-TEST_F(DistributedGirdTest_3D, evaluateBoundaryEntities)
+TEST_F(DistributedGridTest_3D, evaluateBoundaryEntities)
 {
     //Boundary entities, witout overlap
-    setDof_3D(*dof,-1);
-    constFunctionEvaluator.evaluateBoundaryEntities( meshFunctionptr , constFunctionPtr );
-    check_Boundary_3D(rank, *gridptr, *dof, rank);
-    check_Overlap_3D(rank, *gridptr, *dof, -1);
-    check_Inner_3D(rank, *gridptr, *dof, -1);
+    setDof_3D(dof,-1);
+    constFunctionEvaluator.evaluateBoundaryEntities( meshFunctionPtr , constFunctionPtr );
+    check_Boundary_3D(rank, *localGrid, dof, rank);
+    check_Overlap_3D(rank, *localGrid, dof, -1);
+    check_Inner_3D(rank, *localGrid, dof, -1);
 }
 
-TEST_F(DistributedGirdTest_3D, evaluateInteriorEntities)
+TEST_F(DistributedGridTest_3D, evaluateInteriorEntities)
 {
     //Inner entities, witout overlap
-    setDof_3D(*dof,-1);
-    constFunctionEvaluator.evaluateInteriorEntities( meshFunctionptr , constFunctionPtr );
-    check_Boundary_3D(rank, *gridptr, *dof, -1);
-    check_Overlap_3D(rank, *gridptr, *dof, -1);
-    check_Inner_3D(rank, *gridptr, *dof, rank);
+    setDof_3D(dof,-1);
+    constFunctionEvaluator.evaluateInteriorEntities( meshFunctionPtr , constFunctionPtr );
+    check_Boundary_3D(rank, *localGrid, dof, -1);
+    check_Overlap_3D(rank, *localGrid, dof, -1);
+    check_Inner_3D(rank, *localGrid, dof, rank);
 }
 
-TEST_F(DistributedGirdTest_3D, LinearFunctionTest)
+TEST_F(DistributedGridTest_3D, LinearFunctionTest)
 {
     //fill meshfunction with linear function (physical center of cell corresponds with its coordinates in grid)
-    setDof_3D(*dof,-1);
-    linearFunctionEvaluator.evaluateAllEntities(meshFunctionptr, linearFunctionPtr);
+    setDof_3D(dof,-1);
+    linearFunctionEvaluator.evaluateAllEntities(meshFunctionPtr, linearFunctionPtr);
     Synchronizer synchronizer;
-    synchronizer.setDistributedGrid( meshFunctionptr->getMesh().getDistributedMesh() );
-    synchronizer.synchronize( *meshFunctionptr );
+    synchronizer.setDistributedGrid( distributedGrid );
+    synchronizer.synchronize( *meshFunctionPtr );
 
-    int count =gridptr->template getEntitiesCount< Cell >();
+    int count =localGrid->template getEntitiesCount< Cell >();
     for(int i=0;i<count;i++)
     {
-            auto entity= gridptr->template getEntity< Cell >(i);
+            auto entity= localGrid->template getEntity< Cell >(i);
             entity.refresh();
-            EXPECT_EQ(meshFunctionptr->getValue(entity), (*linearFunctionPtr)(entity)) << "Linear function doesnt fit recievd data. " << entity.getCoordinates().x() << " "<<entity.getCoordinates().y() << " "<< gridptr->getDimensions().x() <<" "<<gridptr->getDimensions().y();
+            EXPECT_EQ(meshFunctionPtr->getValue(entity), (*linearFunctionPtr)(entity)) << "Linear function doesnt fit recievd data. " << entity.getCoordinates().x() << " "<<entity.getCoordinates().y() << " "<< localGrid->getDimensions().x() <<" "<<localGrid->getDimensions().y();
     }
 }
 
 /* not implemented
-TEST_F(DistributedGirdTest_3D, SynchronizerNeighborTest)
+TEST_F(DistributedGridTest_3D, SynchronizerNeighborTest)
 {
 
 }
 */
+
+TEST_F(DistributedGridTest_3D, PVTIWriterReader)
+{
+   // create a .pvti file (only rank 0 actually writes to the file)
+   const std::string baseName = "DistributedGridTest_3D_" + std::to_string(nproc) + "proc";
+   const std::string mainFilePath = baseName + ".pvti";
+   std::string subfilePath;
+   {
+      std::ofstream file;
+      if( TNL::MPI::GetRank() == 0 )
+         file.open( mainFilePath );
+      using PVTI = Meshes::Writers::PVTIWriter< GridType >;
+      PVTI pvti( file );
+      pvti.writeImageData( *distributedGrid );
+      // TODO
+//      if( mesh.getGhostLevels() > 0 ) {
+//         pvti.template writePPointData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//         pvti.template writePCellData< std::uint8_t >( Meshes::VTK::ghostArrayName() );
+//      }
+      subfilePath = pvti.addPiece( mainFilePath, *distributedGrid );
+
+      // create a .vti file for local data
+      using Writer = Meshes::Writers::VTIWriter< GridType >;
+      std::ofstream subfile( subfilePath );
+      Writer writer( subfile );
+      writer.writeImageData( *localGrid );
+      // TODO
+//      if( mesh.getGhostLevels() > 0 ) {
+//         writer.writePointData( mesh.vtkPointGhostTypes(), Meshes::VTK::ghostArrayName() );
+//         writer.writeCellData( mesh.vtkCellGhostTypes(), Meshes::VTK::ghostArrayName() );
+//      }
+
+      // end of scope closes the files
+   }
+
+   // load and test
+   TNL::MPI::Barrier();
+   Readers::PVTIReader reader( mainFilePath );
+   reader.detectMesh();
+   EXPECT_EQ( reader.getMeshType(), "Meshes::DistributedGrid" );
+   DistributedMesh< GridType > loadedGrid;
+   reader.loadMesh( loadedGrid );
+   EXPECT_EQ( loadedGrid, *distributedGrid );
+
+   // cleanup
+   EXPECT_EQ( fs::remove( subfilePath ), true );
+   TNL::MPI::Barrier();
+   if( TNL::MPI::GetRank() == 0 ) {
+      EXPECT_EQ( fs::remove( mainFilePath ), true );
+      EXPECT_EQ( fs::remove( baseName ), true );
+   }
+}
+
+TEST_F(DistributedGridTest_3D, readDistributedMeshFunction)
+{
+   const std::string baseName = "DistributedGridTest_MeshFunction_3D_" + std::to_string(nproc) + "proc.pvti";
+   const std::string mainFilePath = baseName + ".pvti";
+
+   // evaluate a function
+   dof.setValue( -1 );
+   constFunctionEvaluator.evaluateAllEntities( meshFunctionPtr, constFunctionPtr );
+
+   // write the mesh function into a .pvti file
+   EXPECT_TRUE( writeDistributedMeshFunction( *distributedGrid, *meshFunctionPtr, "foo", mainFilePath ) );
+
+   // wait for rank 0 to write the main .pvti file
+   TNL::MPI::Barrier();
+
+   // load the mesh function from the .pvti file
+   DofType loadedDof;
+   loadedDof.setLike( dof );
+   loadedDof.setValue( -2 );
+   MeshFunctionType loadedMeshFunction;
+   loadedMeshFunction.bind( localGrid, loadedDof );
+   EXPECT_TRUE( readDistributedMeshFunction( *distributedGrid, loadedMeshFunction, "foo", mainFilePath ) );
+
+   // compare the dofs (MeshFunction and MeshFunctionView do not have operator==)
+//   EXPECT_EQ( loadedMeshFunction, *meshFunctionPtr );
+   EXPECT_EQ( loadedDof, dof );
+
+   // cleanup
+   TNL::MPI::Barrier();
+   if( TNL::MPI::GetRank() == 0 ) {
+      EXPECT_TRUE( fs::remove( mainFilePath ) );
+      EXPECT_GT( fs::remove_all( baseName ), 1 );
+   }
+}
 #endif
 
 #endif
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedVectorFieldIO_MPIIOTest.cpp b/src/UnitTests/Meshes/DistributedMeshes/DistributedVectorFieldIO_MPIIOTest.cpp
deleted file mode 100644
index 9bdccbcdb7006c8f45f00865b2c3e6e60456095f..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedVectorFieldIO_MPIIOTest.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifdef HAVE_GTEST
-      #include <gtest/gtest.h>
-#ifdef HAVE_MPI
-
-#include "DistributedVectorFieldIO_MPIIOTestBase.h"
-
-TEST( DistributedVectorFieldIO_MPIIO, Save_1D )
-{
-    TestDistributedVectorFieldMPIIO<1,2,Host>::TestSave();
-}
-
-TEST( DistributedVectorFieldIO_MPIIO, Save_2D )
-{
-    TestDistributedVectorFieldMPIIO<2,3,Host>::TestSave();
-}
-
-TEST( DistributedVectorFieldIO_MPIIO, Save_3D )
-{
-    TestDistributedVectorFieldMPIIO<3,2,Host>::TestSave();
-}
-
-
-TEST( DistributedVectorFieldIO_MPIIO, Load_1D )
-{
-    TestDistributedVectorFieldMPIIO<1,2,Host>::TestLoad();
-}
-
-TEST( DistributedVectorFieldIO_MPIIO, Load_2D )
-{
-    TestDistributedVectorFieldMPIIO<2,3,Host>::TestLoad();
-}
-
-TEST( DistributedVectorFieldIO_MPIIO, Load_3D )
-{
-    TestDistributedVectorFieldMPIIO<3,2,Host>::TestLoad();
-}
-#endif
-
-#endif
-
-#include "../../main_mpi.h"
diff --git a/src/UnitTests/Meshes/DistributedMeshes/DistributedVectorFieldIO_MPIIOTestBase.h b/src/UnitTests/Meshes/DistributedMeshes/DistributedVectorFieldIO_MPIIOTestBase.h
deleted file mode 100644
index d6791e1df9d27d9d89ef206c0d3be45288d80c3f..0000000000000000000000000000000000000000
--- a/src/UnitTests/Meshes/DistributedMeshes/DistributedVectorFieldIO_MPIIOTestBase.h
+++ /dev/null
@@ -1,190 +0,0 @@
-#include <TNL/Meshes/DistributedMeshes/DistributedMesh.h>
-#include <TNL/Functions/MeshFunctionView.h>
-#include <TNL/Functions/VectorField.h>
-
-#ifdef HAVE_MPI
-    #define MPIIO
-#endif
-#include <TNL/Meshes/DistributedMeshes/DistributedMeshSynchronizer.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
-#include <TNL/Meshes/DistributedMeshes/SubdomainOverlapsGetter.h>
-
-
-#include "../../Functions/Functions.h"
-
-using namespace TNL::Containers;
-using namespace TNL::Meshes;
-using namespace TNL::Functions;
-using namespace TNL::Devices;
-using namespace TNL::Meshes::DistributedMeshes;
-
-//------------------------------------------------------------------------------
-
-template <int dim, int vctdim, typename Device>
-class TestDistributedVectorFieldMPIIO{
-    public:
-
-    typedef Grid<dim,double,Device,int> MeshType;
-    typedef MeshFunctionView<MeshType> MeshFunctionType;
-	typedef VectorField<vctdim,MeshFunctionType> VectorFieldType;
-    typedef Vector<double,Device,int> DofType;
-    typedef typename MeshType::Cell Cell;
-    typedef typename MeshType::IndexType IndexType;
-    typedef typename MeshType::PointType PointType;
-    typedef DistributedMesh<MeshType> DistributedGridType;
-
-    typedef typename DistributedGridType::CoordinatesType CoordinatesType;
-    typedef LinearFunction<double,dim> LinearFunctionType;
-
-    static void TestSave()
-    {
-        Pointers::SharedPointer< LinearFunctionType, Device > linearFunctionPtr;
-        MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
-
-        //save distributed meshfunction into file
-        PointType globalOrigin;
-        globalOrigin.setValue(-0.5);
-
-        PointType globalProportions;
-        globalProportions.setValue(10);
-
-        Pointers::SharedPointer<MeshType> globalGrid;
-        globalGrid->setDimensions(globalProportions);
-        globalGrid->setDomain(globalOrigin,globalProportions);
-
-        DistributedGridType distributedGrid;
-        distributedGrid.setGlobalGrid( *globalGrid );
-
-        Pointers::SharedPointer<MeshType> gridptr;
-        distributedGrid.setupGrid(*gridptr);
-        typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-        SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
-        distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
-        distributedGrid.setupGrid(*gridptr);
-
-
-        ///std::cout << distributedGrid.printProcessDistr() <<std::endl;
-
-		VectorFieldType vectorField;
-
-        DofType dof(vctdim*(gridptr->template getEntitiesCount< Cell >()));
-        dof.setValue(0);
-        vectorField.bind(gridptr,dof);
-
-		for(int i=0;i<vctdim;i++)
-	        linearFunctionEvaluator.evaluateAllEntities(vectorField [ i ], linearFunctionPtr);
-
-        String FileName=String("/tmp/test-file.tnl");
-        DistributedGridIO_VectorField<VectorFieldType,MpiIO> ::save(FileName, vectorField );
-        /*File file;
-        file.open( FileName, std::ios_base::out );
-		vectorField.save(file);
-		file.close();		*/
-
-       //first process compare results
-       if(TNL::MPI::GetRank()==0)
-       {
-            DofType globalEvaluatedDof(vctdim*(globalGrid->template getEntitiesCount< Cell >()));
-
-            VectorFieldType globalEvaluatedvct;
-            globalEvaluatedvct.bind(globalGrid,globalEvaluatedDof);
-			for(int i=0;i<vctdim;i++)
-	            linearFunctionEvaluator.evaluateAllEntities(globalEvaluatedvct[i] , linearFunctionPtr);
-
-
-            DofType loadDof(vctdim*(globalGrid->template getEntitiesCount< Cell >()));
-            VectorFieldType loadvct;
-            loadvct.bind(globalGrid,loadDof);
-
-            loadDof.setValue(-1);
-
-            File file;
-            file.open( FileName, std::ios_base::in );
-	    loadvct.boundLoad(file);
-            for(int i=0;i<loadDof.getSize();i++)
-	    {
-		EXPECT_EQ( globalEvaluatedDof.getElement(i), loadDof.getElement(i)) << "Compare Loaded and evaluated Dof Failed for: "<< i;
-	    }
-       }
-    };
-
-    static void TestLoad()
-    {
-        Pointers::SharedPointer< LinearFunctionType, Device > linearFunctionPtr;
-        MeshFunctionEvaluator< MeshFunctionType, LinearFunctionType > linearFunctionEvaluator;
-
-        //Crete distributed grid
-        PointType globalOrigin;
-        globalOrigin.setValue(-0.5);
-
-        PointType globalProportions;
-        globalProportions.setValue(50);
-
-        Pointers::SharedPointer<MeshType> globalGrid;
-        globalGrid->setDimensions(globalProportions);
-        globalGrid->setDomain(globalOrigin,globalProportions);
-
-        CoordinatesType overlap;
-        overlap.setValue(1);
-        DistributedGridType distributedGrid;
-        distributedGrid.setGlobalGrid(*globalGrid);
-        typename DistributedGridType::SubdomainOverlapsType lowerOverlap, upperOverlap;
-        SubdomainOverlapsGetter< MeshType >::getOverlaps( &distributedGrid, lowerOverlap, upperOverlap, 1 );
-        distributedGrid.setOverlaps( lowerOverlap, upperOverlap );
-
-
-        String FileName=String("/tmp/test-file.tnl");
-
-        //Prepare file
-        if(TNL::MPI::GetRank()==0)
-        {
-            DofType saveDof(vctdim*(globalGrid->template getEntitiesCount< Cell >()));
-
-            VectorFieldType saveVectorField;
-            saveVectorField.bind(globalGrid,saveDof);
-            for(int i=0;i<vctdim;i++)
-                linearFunctionEvaluator.evaluateAllEntities(saveVectorField[i] , linearFunctionPtr);
-
-            File file;
-            file.open( FileName, std::ios_base::out );
-            saveVectorField.save(file);
-            file.close();
-        }
-
-        Pointers::SharedPointer<MeshType> loadGridptr;
-        VectorFieldType loadVectorField;
-        distributedGrid.setupGrid(*loadGridptr);
-
-        DofType loadDof(vctdim*(loadGridptr->template getEntitiesCount< Cell >()));
-        loadDof.setValue(0);
-        loadVectorField.bind(loadGridptr,loadDof);
-
-        DistributedGridIO_VectorField<VectorFieldType,MpiIO> ::load(FileName, loadVectorField );
-
-        DistributedMeshSynchronizer< DistributedGridType > synchronizer;
-        synchronizer.setDistributedGrid( &distributedGrid );
-
-        for(int i=0;i<vctdim;i++)
-            synchronizer.synchronize(*loadVectorField[i]); //need synchronization for overlaps to be filled corectly in loadDof
-
-        Pointers::SharedPointer<MeshType> evalGridPtr;
-        VectorFieldType evalVectorField;
-        distributedGrid.setupGrid(*evalGridPtr);
-
-        DofType evalDof(vctdim*(evalGridPtr->template getEntitiesCount< Cell >()));
-        evalDof.setValue(-1);
-        evalVectorField.bind(evalGridPtr,evalDof);
-
-        for(int i=0;i<vctdim;i++)
-        {
-            linearFunctionEvaluator.evaluateAllEntities(evalVectorField[i] , linearFunctionPtr);
-            synchronizer.synchronize(*evalVectorField[i]);
-        }
-
-        for(int i=0;i<evalDof.getSize();i++)
-        {
-            EXPECT_EQ( evalDof.getElement(i), loadDof.getElement(i)) << "Compare Loaded and evaluated Dof Failed for: "<< i;
-        }
-
-    }
-};
diff --git a/src/UnitTests/Meshes/MeshReaderTest.h b/src/UnitTests/Meshes/MeshReaderTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..9290057ddc490d3645e3d6c270aff4dfff5f83df
--- /dev/null
+++ b/src/UnitTests/Meshes/MeshReaderTest.h
@@ -0,0 +1,130 @@
+#pragma once
+
+#include <gtest/gtest.h>
+
+#include <string>
+#include <fstream>
+
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+
+template< typename ReaderType, template<typename> class WriterType, typename MeshType >
+void test_reader( const MeshType& mesh, std::string outputFileName )
+{
+   // write the mesh into the file (new scope is needed to properly close the file)
+   {
+      std::ofstream file( outputFileName );
+      WriterType< MeshType > writer( file );
+      writer.writeEntities( mesh );
+   }
+
+   MeshType mesh_in;
+   ReaderType reader( outputFileName );
+   reader.loadMesh( mesh_in );
+
+   EXPECT_EQ( mesh_in, mesh );
+
+   EXPECT_EQ( std::remove( outputFileName.c_str() ), 0 );
+}
+
+// Test that:
+// 1. resolveMeshType resolves the mesh type correctly
+// 2. resolveAndLoadMesh loads the mesh
+template< template<typename> class WriterType, typename ConfigTag, typename MeshType >
+void test_resolveAndLoadMesh( const MeshType& mesh, std::string outputFileName )
+{
+   // write the mesh into the file (new scope is needed to properly close the file)
+   {
+      std::ofstream file( outputFileName );
+      WriterType< MeshType > writer( file );
+      writer.writeEntities( mesh );
+   }
+
+   auto wrapper = [&] ( TNL::Meshes::Readers::MeshReader& reader, auto&& mesh2 )
+   {
+      using MeshType2 = std::decay_t< decltype(mesh2) >;
+
+      // static_assert does not work, the wrapper is actually instantiated for all resolved types
+//      static_assert( std::is_same< MeshType2, MeshType >::value, "mesh type was not resolved as expected" );
+      EXPECT_EQ( std::string( TNL::getType< MeshType2 >() ), std::string( TNL::getType< MeshType >() ) );
+
+      // operator== does not work for instantiations of the wrapper with MeshType2 != MeshType
+//      EXPECT_EQ( mesh2, mesh );
+      std::stringstream str1, str2;
+      str1 << mesh;
+      str2 << mesh2;
+      EXPECT_EQ( str2.str(), str1.str() );
+
+      return true;
+   };
+
+   const bool status = TNL::Meshes::resolveAndLoadMesh< ConfigTag, TNL::Devices::Host >( wrapper, outputFileName );
+   EXPECT_TRUE( status );
+
+   EXPECT_EQ( std::remove( outputFileName.c_str() ), 0 );
+}
+
+template< typename ReaderType, template<typename> class WriterType, typename MeshType >
+void test_meshfunction( const MeshType& mesh, std::string outputFileName, std::string type = "PointData" )
+{
+   using ArrayType = TNL::Containers::Array< std::int32_t >;
+   ArrayType array_scalars, array_vectors;
+   if( type == "PointData" ) {
+      array_scalars.setSize( 1 * mesh.template getEntitiesCount< 0 >() );
+      array_vectors.setSize( 3 * mesh.template getEntitiesCount< 0 >() );
+   }
+   else {
+      array_scalars.setSize( 1 * mesh.template getEntitiesCount< MeshType::getMeshDimension() >() );
+      array_vectors.setSize( 3 * mesh.template getEntitiesCount< MeshType::getMeshDimension() >() );
+   }
+   for( int i = 0; i < array_scalars.getSize(); i++ )
+      array_scalars[i] = i;
+   for( int i = 0; i < array_vectors.getSize(); i++ )
+      array_vectors[i] = i;
+
+   // write the mesh into the file (new scope is needed to properly close the file)
+   {
+      std::ofstream file( outputFileName );
+      WriterType< MeshType > writer( file );
+      writer.writeMetadata( 42, 3.14 );  // cycle, time
+      writer.writeEntities( mesh );
+      if( type == "PointData" ) {
+         writer.writePointData( array_scalars, "foo" );
+         writer.writePointData( array_vectors, "bar", 3 );
+      }
+      else {
+         writer.writeCellData( array_scalars, "foo" );
+         writer.writeCellData( array_vectors, "bar", 3 );
+      }
+   }
+
+   MeshType mesh_in;
+   ReaderType reader( outputFileName );
+   reader.loadMesh( mesh_in );
+   EXPECT_EQ( mesh_in, mesh );
+
+   ArrayType array_scalars_in, array_vectors_in;
+   typename ReaderType::VariantVector variant_scalars, variant_vectors;
+   if( type == "PointData" ) {
+      variant_scalars = reader.readPointData( "foo" );
+      variant_vectors = reader.readPointData( "bar" );
+   }
+   else {
+      variant_scalars = reader.readCellData( "foo" );
+      variant_vectors = reader.readCellData( "bar" );
+   }
+   using mpark::visit;
+   visit( [&array_scalars_in](auto&& vector) {
+            array_scalars_in = vector;
+         },
+         variant_scalars
+      );
+   visit( [&array_vectors_in](auto&& vector) {
+            array_vectors_in = vector;
+         },
+         variant_vectors
+      );
+   EXPECT_EQ( array_scalars_in, array_scalars );
+   EXPECT_EQ( array_vectors_in, array_vectors );
+
+   EXPECT_EQ( std::remove( outputFileName.c_str() ), 0 );
+}
diff --git a/src/UnitTests/Meshes/MeshTest.h b/src/UnitTests/Meshes/MeshTest.h
index 788c2172a1c16c8dccbd75f6f2ee561cc3ea3522..aa5d4cfda423a32ae8ec040305c491daef9a04c3 100644
--- a/src/UnitTests/Meshes/MeshTest.h
+++ b/src/UnitTests/Meshes/MeshTest.h
@@ -27,8 +27,6 @@ using RealType = double;
 using Device = Devices::Host;
 using IndexType = int;
 
-static const char* TEST_FILE_NAME = "test_MeshTest.tnl";
-
 class TestTriangleMeshConfig : public DefaultConfig< Topologies::Triangle >
 {
 public:
@@ -81,6 +79,8 @@ void testCopyAssignment( const Object& obj )
    Object new_obj_2;
    new_obj_2 = obj;
    EXPECT_EQ( new_obj_2, obj );
+
+   compareStringRepresentation( obj, new_obj_1 );
 }
 
 template< typename Mesh >
@@ -106,30 +106,12 @@ void testMeshOnCuda( const Mesh& mesh )
    Mesh mesh3;
    mesh3 = dmesh1;
    EXPECT_EQ( mesh2, mesh );
-
-   // test load from file to CUDA
-   ASSERT_NO_THROW( mesh.save( TEST_FILE_NAME ) );
-   ASSERT_NO_THROW( dmesh1.load( TEST_FILE_NAME ) );
-   EXPECT_EQ( dmesh1, mesh );
-
-   // test save into file from CUDA
-   ASSERT_NO_THROW( dmesh1.save( TEST_FILE_NAME ) );
-   ASSERT_NO_THROW( mesh2.load( TEST_FILE_NAME ) );
-   EXPECT_EQ( mesh2, mesh );
-
-   EXPECT_EQ( std::remove( TEST_FILE_NAME ), 0 );
 #endif
 }
 
 template< typename Mesh >
 void testFinishedMesh( const Mesh& mesh )
 {
-   Mesh mesh2;
-   ASSERT_NO_THROW( mesh.save( TEST_FILE_NAME ) );
-   ASSERT_NO_THROW( mesh2.load( TEST_FILE_NAME ) );
-   EXPECT_EQ( std::remove( TEST_FILE_NAME ), 0 );
-   ASSERT_EQ( mesh, mesh2 );
-   compareStringRepresentation( mesh, mesh2 );
    testCopyAssignment( mesh );
    testMeshOnCuda( mesh );
    testEntities( mesh );
diff --git a/src/UnitTests/Meshes/NetgenReaderTest.cpp b/src/UnitTests/Meshes/NetgenReaderTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d7caa9957b0c908109e3d055ee66a72652848686
--- /dev/null
+++ b/src/UnitTests/Meshes/NetgenReaderTest.cpp
@@ -0,0 +1,122 @@
+#ifdef HAVE_GTEST
+#include <gtest/gtest.h>
+
+#include <TNL/Meshes/Readers/NetgenReader.h>
+#include <TNL/Meshes/Writers/NetgenWriter.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+
+#include "data/loader.h"
+
+using namespace TNL::Meshes;
+
+static const char* TEST_FILE_NAME = "test_NetgenReaderTest.ng";
+
+struct MyConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+// disable all grids
+template< int Dimension, typename Real, typename Device, typename Index >
+struct GridTag< MyConfigTag, Grid< Dimension, Real, Device, Index > >{ enum { enabled = false }; };
+
+// enable meshes used in the tests
+//template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Edge > { enum { enabled = true }; };
+template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Triangle > { enum { enabled = true }; };
+template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Tetrahedron > { enum { enabled = true }; };
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
+
+template< typename MeshType >
+void test_NetgenReader( const MeshType& mesh )
+{
+   // write the mesh into the file (new scope is needed to properly close the file)
+   {
+      std::ofstream file( TEST_FILE_NAME );
+      Writers::NetgenWriter< MeshType > writer;
+      writer.writeMesh( mesh, file );
+   }
+
+   MeshType mesh_in;
+   Readers::NetgenReader reader( TEST_FILE_NAME );
+   reader.loadMesh( mesh_in );
+
+   EXPECT_EQ( mesh_in, mesh );
+
+   EXPECT_EQ( std::remove( TEST_FILE_NAME ), 0 );
+}
+
+// Test that:
+// 1. resolveMeshType resolves the mesh type correctly
+// 2. resolveAndLoadMesh loads the mesh
+template< typename ConfigTag, typename MeshType >
+void test_resolveAndLoadMesh( const MeshType& mesh )
+{
+   // write the mesh into the file (new scope is needed to properly close the file)
+   {
+      std::ofstream file( TEST_FILE_NAME );
+      Writers::NetgenWriter< MeshType > writer;
+      writer.writeMesh( mesh, file );
+   }
+
+   auto wrapper = [&] ( Readers::MeshReader& reader, auto&& mesh2 )
+   {
+      using MeshType2 = std::decay_t< decltype(mesh2) >;
+
+      // static_assert does not work, the wrapper is actually instantiated for all resolved types
+//      static_assert( std::is_same< MeshType2, MeshType >::value, "mesh type was not resolved as expected" );
+      EXPECT_EQ( std::string( TNL::getType< MeshType2 >() ), std::string( TNL::getType< MeshType >() ) );
+
+      // operator== does not work for instantiations of the wrapper with MeshType2 != MeshType
+//      EXPECT_EQ( mesh2, mesh );
+      std::stringstream str1, str2;
+      str1 << mesh;
+      str2 << mesh2;
+      EXPECT_EQ( str2.str(), str1.str() );
+
+      return true;
+   };
+
+   const bool status = resolveAndLoadMesh< ConfigTag, TNL::Devices::Host >( wrapper, TEST_FILE_NAME );
+   EXPECT_TRUE( status );
+
+   EXPECT_EQ( std::remove( TEST_FILE_NAME ), 0 );
+}
+
+// TODO: test case for 1D mesh of edges
+
+TEST( NetgenReaderTest, triangles )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::NetgenReader >( "triangles/netgen_square.ng" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 289 );
+   EXPECT_EQ( cells, 512 );
+
+   test_NetgenReader( mesh );
+   test_resolveAndLoadMesh< MyConfigTag >( mesh );
+}
+
+TEST( NetgenReaderTest, tetrahedrons )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Tetrahedron > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::NetgenReader >( "tetrahedrons/netgen_cube.ng" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 4913 );
+   EXPECT_EQ( cells, 24576 );
+
+   test_NetgenReader( mesh );
+   test_resolveAndLoadMesh< MyConfigTag >( mesh );
+}
+#endif
+
+#include "../main.h"
diff --git a/src/UnitTests/Meshes/VTIReaderTest.cpp b/src/UnitTests/Meshes/VTIReaderTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3b41a3b7020c5c42b437fa42e7162f7151614a9d
--- /dev/null
+++ b/src/UnitTests/Meshes/VTIReaderTest.cpp
@@ -0,0 +1,82 @@
+#ifdef HAVE_GTEST
+#include <gtest/gtest.h>
+
+#include <TNL/Meshes/Readers/VTIReader.h>
+#include <TNL/Meshes/Writers/VTIWriter.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+
+#include "MeshReaderTest.h"
+
+using namespace TNL::Meshes;
+
+static const char* TEST_FILE_NAME = "test_VTIReaderTest.vti";
+
+struct MyConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+// enable all index types in the GridTypeResolver
+template<> struct GridIndexTag< MyConfigTag, short int >{ enum { enabled = true }; };
+template<> struct GridIndexTag< MyConfigTag, int >{ enum { enabled = true }; };
+template<> struct GridIndexTag< MyConfigTag, long int >{ enum { enabled = true }; };
+
+// disable float and long double (RealType is not stored in VTI and double is the default)
+template<> struct GridRealTag< MyConfigTag, float > { enum { enabled = false }; };
+template<> struct GridRealTag< MyConfigTag, long double > { enum { enabled = false }; };
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
+
+TEST( VTIReaderTest, Grid1D )
+{
+   using GridType = Grid< 1, double, TNL::Devices::Host, short int >;
+   using PointType = GridType::PointType;
+   using CoordinatesType = GridType::CoordinatesType;
+
+   GridType grid;
+   grid.setDomain( PointType( 1 ), PointType( 2 ) );
+   grid.setDimensions( CoordinatesType( 10 ) );
+
+   test_reader< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTIWriter, MyConfigTag >( grid, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME, "CellData" );
+}
+
+TEST( VTIReaderTest, Grid2D )
+{
+   using GridType = Grid< 2, double, TNL::Devices::Host, int >;
+   using PointType = GridType::PointType;
+   using CoordinatesType = GridType::CoordinatesType;
+
+   GridType grid;
+   grid.setDomain( PointType( 1, 2 ), PointType( 3, 4 ) );
+   grid.setDimensions( CoordinatesType( 10, 20 ) );
+
+   test_reader< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTIWriter, MyConfigTag >( grid, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME, "CellData" );
+}
+
+TEST( VTIReaderTest, Grid3D )
+{
+   using GridType = Grid< 3, double, TNL::Devices::Host, long int >;
+   using PointType = GridType::PointType;
+   using CoordinatesType = GridType::CoordinatesType;
+
+   GridType grid;
+   grid.setDomain( PointType( 1, 2, 3 ), PointType( 4, 5, 6 ) );
+   grid.setDimensions( CoordinatesType( 10, 20, 30 ) );
+
+   test_reader< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTIWriter, MyConfigTag >( grid, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTIReader, Writers::VTIWriter >( grid, TEST_FILE_NAME, "CellData" );
+}
+#endif
+
+#include "../main.h"
diff --git a/src/UnitTests/Meshes/VTKReaderTest.cpp b/src/UnitTests/Meshes/VTKReaderTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5bb27c5901c3fd9fec59e6c9bb7aff65126d48ac
--- /dev/null
+++ b/src/UnitTests/Meshes/VTKReaderTest.cpp
@@ -0,0 +1,129 @@
+#ifdef HAVE_GTEST
+#include <gtest/gtest.h>
+
+#include <TNL/Meshes/Readers/VTKReader.h>
+#include <TNL/Meshes/Writers/VTKWriter.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+
+#include "data/loader.h"
+#include "MeshReaderTest.h"
+
+using namespace TNL::Meshes;
+
+static const char* TEST_FILE_NAME = "test_VTKReaderTest.vtk";
+
+struct MyConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+// disable all grids
+template< int Dimension, typename Real, typename Device, typename Index >
+struct GridTag< MyConfigTag, Grid< Dimension, Real, Device, Index > >{ enum { enabled = false }; };
+
+// enable meshes used in the tests
+//template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Edge > { enum { enabled = true }; };
+template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Triangle > { enum { enabled = true }; };
+template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Tetrahedron > { enum { enabled = true }; };
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
+
+// TODO: test case for 1D mesh of edges
+
+// ASCII data, produced by Gmsh
+TEST( VTKReaderTest, mrizka_1 )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTKReader >( "triangles/mrizka_1.vtk" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 142 );
+   EXPECT_EQ( cells, 242 );
+
+   test_reader< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTKWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// ASCII data, produced by Gmsh
+TEST( VTKReaderTest, tetrahedrons )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Tetrahedron > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTKReader >( "tetrahedrons/cube1m_1.vtk" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 395 );
+   EXPECT_EQ( cells, 1312 );
+
+   test_reader< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTKWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// binary data, produced by RF writer
+TEST( VTKReaderTest, triangles_2x2x2_original_with_metadata_and_cell_data )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTKReader >( "triangles_2x2x2/original_with_metadata_and_cell_data.vtk" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTKWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// ASCII data, produced by TNL writer
+TEST( VTKReaderTest, triangles_2x2x2_minimized_ascii )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTKReader >( "triangles_2x2x2/minimized_ascii.vtk" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTKWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// binary data, produced by TNL writer
+TEST( VTKReaderTest, triangles_2x2x2_minimized_binary )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTKReader >( "triangles_2x2x2/minimized_binary.vtk" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTKWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTKReader, Writers::VTKWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// TODO: test case for DataFile version 5.1: triangles_2x2x2/DataFile_version_5.1_exported_from_paraview.vtk
+#endif
+
+#include "../main.h"
diff --git a/src/UnitTests/Meshes/VTUReaderTest.cpp b/src/UnitTests/Meshes/VTUReaderTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d3d4391e8e40a7d1bd3e9318543366ba803d11d9
--- /dev/null
+++ b/src/UnitTests/Meshes/VTUReaderTest.cpp
@@ -0,0 +1,182 @@
+#ifdef HAVE_GTEST
+#include <gtest/gtest.h>
+
+#include <TNL/Meshes/Readers/VTUReader.h>
+#include <TNL/Meshes/Writers/VTUWriter.h>
+#include <TNL/Meshes/TypeResolver/resolveMeshType.h>
+
+#include "data/loader.h"
+#include "MeshReaderTest.h"
+
+using namespace TNL::Meshes;
+
+static const char* TEST_FILE_NAME = "test_VTUReaderTest.vtu";
+
+struct MyConfigTag {};
+
+namespace TNL {
+namespace Meshes {
+namespace BuildConfigTags {
+
+// disable all grids
+template< int Dimension, typename Real, typename Device, typename Index >
+struct GridTag< MyConfigTag, Grid< Dimension, Real, Device, Index > >{ enum { enabled = false }; };
+
+// enable meshes used in the tests
+//template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Edge > { enum { enabled = true }; };
+template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Triangle > { enum { enabled = true }; };
+template<> struct MeshCellTopologyTag< MyConfigTag, Topologies::Tetrahedron > { enum { enabled = true }; };
+
+} // namespace BuildConfigTags
+} // namespace Meshes
+} // namespace TNL
+
+TEST( VTUReaderTest, empty )
+{
+   // the cell topology does not matter for an empty mesh
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "empty.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 0 );
+   EXPECT_EQ( cells, 0 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   // resolveAndLoadMesh cannot be tested since the empty mesh has Topologies::Vertex as cell topology
+//   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// TODO: test case for 1D mesh of edges
+
+TEST( VTUReaderTest, mrizka_1 )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "triangles/mrizka_1.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 142 );
+   EXPECT_EQ( cells, 242 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+TEST( VTUReaderTest, tetrahedrons )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Tetrahedron > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "tetrahedrons/cube1m_1.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 395 );
+   EXPECT_EQ( cells, 1312 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// ASCII data, produced by TNL writer
+TEST( VTUReaderTest, triangles_2x2x2_minimized_ascii )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "triangles_2x2x2/minimized_ascii.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// encoded data, produced by TNL writer
+TEST( VTUReaderTest, triangles_2x2x2_minimized_encoded_tnl )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "triangles_2x2x2/minimized_encoded_tnl.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// encoded data, produced by Paraview
+TEST( VTUReaderTest, triangles_2x2x2_minimized_encoded_paraview )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "triangles_2x2x2/minimized_encoded_paraview.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// compressed data, produced by TNL
+TEST( VTUReaderTest, triangles_2x2x2_minimized_compressed_tnl )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "triangles_2x2x2/minimized_compressed_tnl.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// compressed data, produced by Paraview
+TEST( VTUReaderTest, triangles_2x2x2_minimized_compressed_paraview )
+{
+   using MeshType = Mesh< DefaultConfig< Topologies::Triangle > >;
+   const MeshType mesh = loadMeshFromFile< MeshType, Readers::VTUReader >( "triangles_2x2x2/minimized_compressed_paraview.vtu" );
+
+   // test that the mesh was actually loaded
+   const auto vertices = mesh.template getEntitiesCount< 0 >();
+   const auto cells = mesh.template getEntitiesCount< MeshType::getMeshDimension() >();
+   EXPECT_EQ( vertices, 9 );
+   EXPECT_EQ( cells, 8 );
+
+   test_reader< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME );
+   test_resolveAndLoadMesh< Writers::VTUWriter, MyConfigTag >( mesh, TEST_FILE_NAME );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "PointData" );
+   test_meshfunction< Readers::VTUReader, Writers::VTUWriter >( mesh, TEST_FILE_NAME, "CellData" );
+}
+
+// TODO: test cases for the appended data block: minimized_appended_binary_compressed.vtu, minimized_appended_binary.vtu, minimized_appended_encoded_compressed.vtu, minimized_appended_encoded.vtu
+#endif
+
+#include "../main.h"
diff --git a/src/UnitTests/Meshes/data/empty.vtu b/src/UnitTests/Meshes/data/empty.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..8f8cce72adabb58690376b0b0793216c24f1262e
--- /dev/null
+++ b/src/UnitTests/Meshes/data/empty.vtu
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+<UnstructuredGrid>
+<Piece NumberOfPoints="0" NumberOfCells="0">
+<Points>
+<DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary">
+</DataArray>
+</Points>
+<Cells>
+<DataArray type="Int32" Name="connectivity" format="binary">
+</DataArray>
+<DataArray type="Int32" Name="offsets" format="binary">
+</DataArray>
+<DataArray type="UInt8" Name="types" format="binary">
+</DataArray>
+</Cells>
+<PointData>
+<DataArray type="UInt8" Name="vtkGhostType" NumberOfComponents="1" format="binary">
+</DataArray>
+<DataArray type="Int32" Name="GlobalIndex" NumberOfComponents="1" format="binary">
+</DataArray>
+</PointData>
+<CellData>
+<DataArray type="UInt8" Name="vtkGhostType" NumberOfComponents="1" format="binary">
+</DataArray>
+<DataArray type="Int32" Name="GlobalIndex" NumberOfComponents="1" format="binary">
+</DataArray>
+</CellData>
+</Piece>
+</UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/loader.h b/src/UnitTests/Meshes/data/loader.h
new file mode 100644
index 0000000000000000000000000000000000000000..451ce8690a6df0c835f8f4357d12add3279e5f60
--- /dev/null
+++ b/src/UnitTests/Meshes/data/loader.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include <iostream>
+#include <string>
+#include <experimental/filesystem>
+
+#ifndef TNL_MESH_TESTS_DATA_DIR
+   #error "The TNL_MESH_TESTS_DATA_DIR macro is not defined."
+#endif
+
+template< typename MeshType, typename ReaderType >
+MeshType loadMeshFromFile( std::string relative_path )
+{
+   namespace fs = std::experimental::filesystem;
+   const fs::path full_path = fs::path( TNL_MESH_TESTS_DATA_DIR ) / fs::path( relative_path );
+   std::cout << "Reading a mesh from file " << full_path << std::endl;
+
+   MeshType mesh;
+   ReaderType reader( full_path );
+   reader.loadMesh( mesh );
+   return mesh;
+}
diff --git a/src/UnitTests/Meshes/data/tetrahedrons/cube1m_1.vtk b/src/UnitTests/Meshes/data/tetrahedrons/cube1m_1.vtk
new file mode 100644
index 0000000000000000000000000000000000000000..56e55057864f6cc8809264883c4419f166353d28
--- /dev/null
+++ b/src/UnitTests/Meshes/data/tetrahedrons/cube1m_1.vtk
@@ -0,0 +1,3028 @@
+# vtk DataFile Version 2.0
+TNL DATA
+ASCII
+DATASET UNSTRUCTURED_GRID
+POINTS 395 double
+0 0 0.166666666666667
+0 0 0
+0 0 1
+0 0 0.833333333333333
+0 0.0833333333333333 0.916666666666667
+0 0 0.333333333333333
+0 0 0.666666666666667
+0 0.114583333333333 0.760416666666667
+0 1 0
+0 0.166666666666667 0
+0 0.0833333333333333 0.0833333333333333
+0 0.270833333333333 0.104166666666667
+0 0.333333333333333 0
+0 0.104166666666667 0.270833333333333
+0 0.5 0
+0 0.666666666666667 0
+0 0.166666666666667 1
+0 1 1
+0 0.229166666666667 0.854166666666667
+0 0.291666666666667 0.708333333333333
+0 0.125 0.583333333333333
+0 0.125 0.416666666666667
+0 0 0.5
+0 0.25 0.5
+0 0.371527666666667 0.586805666666667
+0 0.361111 0.395833333333333
+0 0.71875 0.0729166666666667
+0 0.916666666666667 0.0833333333333333
+0 0.833333333333333 0
+0 1 0.333333333333333
+0 1 0.166666666666667
+0 0.2951389 0.2818287
+0 0.347222333333333 0.180555566666667
+0 0.208333333333333 0.208333333333333
+0 0.458333333333333 0.125
+0 0.604166666666667 0.145833333333333
+0 1 0.833333333333333
+0 1 0.5
+0 1 0.666666666666667
+0 0.895833333333333 0.729166666666667
+0 0.916666666666667 0.916666666666667
+0 0.791666666666667 0.791666666666667
+0 0.729166666666667 0.895833333333333
+0 0.833333333333333 1
+0 0.333333333333333 1
+0 0.5 1
+0 0.666666666666667 1
+0 0.395833333333333 0.854166666666667
+0 0.430555666666667 0.75
+0 0.494213 0.621527666666667
+0 0.5 0.5
+0 0.569444333333333 0.25
+0 0.416666666666667 0.25
+0 0.483121 0.403067
+0 0.708333333333333 0.291666666666667
+0 0.854166666666667 0.229166666666667
+0 0.875 0.583333333333333
+0 0.875 0.416666666666667
+0 0.598379666666667 0.371527666666667
+0 0.75 0.5
+0 0.693287 0.706597333333333
+0 0.583333333333333 0.75
+0 0.598862 0.489872666666667
+0 0.638889 0.604166666666667
+0 0.625 0.875
+0 0.508680666666667 0.887152666666667
+0.166666666666667 0 0
+0.166666666666667 0 1
+0.135416666666667 0 0.84375
+0.0677083333333333 0 0.755208333333333
+0.5 0 0
+0.0677083333333333 0 0.244791666666667
+0.270833333333333 0 0.145833333333333
+0.135416666666667 0 0.15625
+0.333333333333333 0 0
+0.270833333333333 0 0.854166666666667
+0.333333333333333 0 1
+0.104166666666667 0 0.395833333333333
+0.104166666666667 0 0.604166666666667
+0.208333333333333 0 0.291666666666667
+0.5 0 1
+0.666666666666667 0 1
+0.208333333333333 0 0.708333333333333
+0.25 0 0.5
+0.361111 0 0.395833333333333
+0.361111 0 0.604166666666667
+1 0 1
+0.559027666666667 0 0.0902777666666667
+0.666666666666667 0 0
+0.729166666666667 0 0.104166666666667
+0.833333333333333 0 0
+0.916666666666667 0 0.0833333333333333
+1 0 0.166666666666667
+1 0 0
+1 0 0.333333333333333
+0.416666666666667 0 0.25
+0.458333333333333 0 0.125
+0.618055666666667 0 0.180555566666667
+0.416666666666667 0 0.75
+0.375 0 0.875
+0.491319333333333 0 0.887152666666667
+1 0 0.5
+1 0 0.833333333333333
+1 0 0.666666666666667
+0.569444333333333 0 0.361111
+0.645833333333333 0 0.476852
+0.916666666666667 0 0.916666666666667
+0.833333333333333 0 1
+0.770833333333333 0 0.854166666666667
+0.604166666666667 0 0.854166666666667
+0.569444333333333 0 0.75
+0.5 0 0.5
+0.483121 0 0.596933
+0.701967666666667 0 0.2835648
+0.791666666666667 0 0.208333333333333
+0.895833333333333 0 0.270833333333333
+0.875 0 0.375
+0.75 0 0.416666666666667
+0.598379666666667 0 0.628472333333333
+0.927083333333333 0 0.71875
+0.708333333333333 0 0.708333333333333
+0.75 0 0.569444333333333
+0.887152666666667 0 0.491319333333333
+0.854166666666667 0 0.604166666666667
+0.0833333333333333 0.0833333333333333 0
+0.078125 0.253472233333333 0
+0.270833333333333 0.104166666666667 0
+0.0833333333333333 0.916666666666667 0
+0.166666666666667 1 0
+0.755208333333333 0.0677083333333333 0
+0.604166666666667 0.104166666666667 0
+0.15625 0.340277666666667 0
+0.1171875 0.468171333333333 0
+0.114583333333333 0.760416666666667 0
+0.458333333333333 0.125 0
+0.208333333333333 0.208333333333333 0
+0.347222333333333 0.180555566666667 0
+0.125 0.583333333333333 0
+0.25 0.5 0
+0.3125 0.347222333333333 0
+0.416666666666667 0.25 0
+0.530382 0.2097801 0
+0.333333333333333 1 0
+0.84375 0.135416666666667 0
+1 0.166666666666667 0
+0.229166666666667 0.854166666666667 0
+1 0.333333333333333 0
+0.395833333333333 0.854166666666667 0
+0.708333333333333 0.208333333333333 0
+0.854166666666667 0.270833333333333 0
+0.875 0.375 0
+0.291666666666667 0.708333333333333 0
+0.364583333333333 0.474537 0
+0.339409666666667 0.614294 0
+0.477430666666667 0.368634333333333 0
+0.572916666666667 0.336805666666667 0
+0.447916666666667 0.690972333333333 0
+0.5 1 0
+1 0.5 0
+0.75 0.416666666666667 0
+0.868345 0.495659666666667 0
+0.508680666666667 0.887152666666667 0
+0.5 0.5 0
+0.627941666666667 0.480179333333333 0
+0.666666666666667 1 0
+0.934172333333333 0.581163333333333 0
+1 0.666666666666667 0
+0.642650333333333 0.589409666666667 0
+0.809027666666667 0.614583333333333 0
+0.583333333333333 0.75 0
+0.729166666666667 0.895833333333333 0
+0.625 0.875 0
+1 0.833333333333333 0
+0.916666666666667 0.916666666666667 0
+0.833333333333333 1 0
+0.895833333333333 0.729166666666667 0
+0.73247 0.677879 0
+0.791666666666667 0.791666666666667 0
+1 1 0
+0.0833333333333333 0.0833333333333333 1
+0.0694444333333333 0.25 1
+0.253472233333333 0.078125 1
+0.208333333333333 0.208333333333333 1
+0.5 0.125 1
+0.1388889 0.333333333333333 1
+0.0833333333333333 0.916666666666667 1
+0.166666666666667 1 1
+0.340277666666667 0.15625 1
+0.347222333333333 0.3125 1
+0.755208333333333 0.0677083333333333 1
+0.604166666666667 0.104166666666667 1
+0.84375 0.135416666666667 1
+1 0.166666666666667 1
+0.5 0.25 1
+0.0729166666666667 0.71875 1
+0.125 0.458333333333333 1
+0.145833333333333 0.604166666666667 1
+0.25 0.416666666666667 1
+0.474537 0.364583333333333 1
+0.229166666666667 0.854166666666667 1
+0.333333333333333 1 1
+0.708333333333333 0.208333333333333 1
+0.409818666666667 0.465277666666667 1
+0.854166666666667 0.270833333333333 1
+0.875 0.375 1
+1 0.333333333333333 1
+0.604166666666667 0.361111 1
+0.291666666666667 0.708333333333333 1
+0.309027766666667 0.552083333333333 1
+0.5 0.5 1
+0.395833333333333 0.854166666666667 1
+0.5 1 1
+0.75 0.416666666666667 1
+0.676745666666667 0.534561333333333 1
+0.887152666666667 0.491319333333333 1
+1 0.5 1
+0.5 0.673611 1
+0.586805666666667 0.615740666666667 1
+0.718460666666667 0.626350333333333 1
+0.604166666666667 0.854166666666667 1
+0.666666666666667 1 1
+0.854166666666667 0.604166666666667 1
+1 0.666666666666667 1
+0.708333333333333 0.708333333333333 1
+0.71875 0.927083333333333 1
+0.854166666666667 0.770833333333333 1
+1 0.833333333333333 1
+0.916666666666667 0.916666666666667 1
+0.833333333333333 1 1
+1 1 1
+0.0833333333333333 1 0.0833333333333333
+0.0833333333333333 1 0.916666666666667
+0.145833333333333 1 0.395833333333333
+0.145833333333333 1 0.229166666666667
+0.28125 1 0.0729166666666667
+0.395833333333333 1 0.145833333333333
+0.0729166666666667 1 0.71875
+0.145833333333333 1 0.604166666666667
+0.229166666666667 1 0.854166666666667
+0.3263889 1 0.5
+0.291666666666667 1 0.291666666666667
+0.447916666666667 1 0.309027766666667
+0.522569333333333 1 0.1545139
+0.625 1 0.125
+0.291666666666667 1 0.708333333333333
+0.398727 1 0.604166666666667
+0.395833333333333 1 0.854166666666667
+0.430555666666667 1 0.75
+0.5 1 0.5
+0.515673333333333 1 0.586805666666667
+0.534722333333333 1 0.410783333333333
+0.583333333333333 1 0.25
+0.729166666666667 1 0.145833333333333
+0.864583333333333 1 0.15625
+0.522569333333333 1 0.845486
+0.625 1 0.875
+0.583333333333333 1 0.75
+0.638889 1 0.604166666666667
+0.635416666666667 1 0.476852
+0.6875 1 0.361111
+0.791666666666667 1 0.291666666666667
+1 1 0.166666666666667
+0.932291666666667 1 0.244791666666667
+0.729166666666667 1 0.895833333333333
+0.791666666666667 1 0.791666666666667
+0.741898 1 0.678819333333333
+0.75 1 0.5
+0.895833333333333 1 0.395833333333333
+1 1 0.333333333333333
+0.916666666666667 1 0.916666666666667
+0.895833333333333 1 0.729166666666667
+0.875 1 0.583333333333333
+1 1 0.5
+1 1 0.833333333333333
+1 1 0.666666666666667
+1 0.0833333333333333 0.916666666666667
+1 0.104166666666667 0.270833333333333
+1 0.0833333333333333 0.0833333333333333
+1 0.253472233333333 0.078125
+1 0.125 0.375
+1 0.208333333333333 0.208333333333333
+1 0.340277666666667 0.15625
+1 0.1545139 0.477430666666667
+1 0.25 0.416666666666667
+1 0.145833333333333 0.604166666666667
+1 0.145833333333333 0.770833333333333
+1 0.28125 0.927083333333333
+1 0.347222333333333 0.3125
+1 0.356770666666667 0.443576333333333
+1 0.5 0.125
+1 0.5 0.25
+1 0.604166666666667 0.104166666666667
+1 0.309027766666667 0.552083333333333
+1 0.291666666666667 0.708333333333333
+1 0.395833333333333 0.854166666666667
+1 0.5 0.5
+1 0.521219 0.384838
+1 0.755208333333333 0.0677083333333333
+1 0.638889 0.3125
+1 0.708333333333333 0.208333333333333
+1 0.84375 0.135416666666667
+1 0.627314666666667 0.434027666666667
+1 0.604166666666667 0.854166666666667
+1 0.5 0.673611
+1 0.586805666666667 0.615740666666667
+1 0.75 0.416666666666667
+1 0.854166666666667 0.270833333333333
+1 0.71875 0.927083333333333
+1 0.725405 0.577739333333333
+1 0.708333333333333 0.708333333333333
+1 0.875 0.375
+1 0.845486 0.477430666666667
+1 0.916666666666667 0.916666666666667
+1 0.854166666666667 0.770833333333333
+1 0.854166666666667 0.604166666666667
+0.132864766666667 0.112200366666667 0.878546666666667
+0.123392733333333 0.163346166666667 0.709829
+0.0868652 0.192312133333333 0.114902166666667
+0.100911466666667 0.233411233333333 0.380201666666667
+0.205595833333333 0.142992966666667 0.2431486
+0.388151333333333 0.142189233333333 0.132247733333333
+0.1779755 0.301700533333333 0.840829333333333
+0.291647233333333 0.1447536 0.780925333333333
+0.107773233333333 0.335158666666667 0.622668666666667
+0.2018229 0.1716836 0.478574333333333
+0.409432333333333 0.136330866666667 0.432055333333333
+0.373363 0.118840233333333 0.606035666666667
+0.2903716 0.303210966666667 0.652455333333333
+0.643310333333333 0.113920266666667 0.118851933333333
+0.849582333333333 0.0886763333333333 0.130624166666667
+0.123732066666667 0.363109666666667 0.431841
+0.1203092 0.779615666666667 0.147680933333333
+0.180559766666667 0.385068333333333 0.1780962
+0.309365366666667 0.290209066666667 0.316490533333333
+0.195329933333333 0.606946666666667 0.158016733333333
+0.527498 0.180663266666667 0.2546999
+0.570604333333333 0.254398 0.1261457
+0.375705 0.293853033333333 0.1134835
+0.134893166666667 0.868629333333333 0.666142
+0.484375 0.193678866666667 0.775408666666667
+0.15625 0.771804 0.848325333333333
+0.158717866666667 0.498777 0.766031666666667
+0.356025333333333 0.374283333333333 0.830094333333333
+0.174166966666667 0.514377666666667 0.542005
+0.411872666666667 0.326619433333333 0.464318666666667
+0.645008 0.1382743 0.452308666666667
+0.843244 0.141799433333333 0.875397666666667
+0.655639333333333 0.218935166666667 0.815813333333333
+0.547950666666667 0.246778866666667 0.622002
+0.398239666666667 0.428765333333333 0.676145
+0.813367 0.1588801 0.287602233333333
+0.837024333333333 0.240235133333333 0.149298966666667
+0.846354 0.2101207 0.456136
+0.812067333333333 0.168045433333333 0.638021333333333
+0.187291266666667 0.557798333333333 0.36734
+0.157973033333333 0.799432333333333 0.400078666666667
+0.256881133333333 0.835627666666667 0.2191763
+0.446220666666667 0.861604666666667 0.151009
+0.783999666666667 0.391594 0.1299483
+0.412921666666667 0.474322 0.221943566666667
+0.663047666666667 0.350418 0.3002855
+0.416932333333333 0.684056333333333 0.1562433
+0.544085666666667 0.393211 0.1190117
+0.197916666666667 0.689441 0.623734
+0.3107894 0.891481666666667 0.5804
+0.3111994 0.824736 0.797229333333333
+0.547907 0.389798333333333 0.833311666666667
+0.248205766666667 0.602548 0.884484333333333
+0.435137 0.580310666666667 0.80398
+0.511132333333333 0.533772 0.510939
+0.695389 0.360219 0.530862333333333
+0.805197666666667 0.377927 0.797785666666667
+0.656520666666667 0.504088666666667 0.680343333333333
+0.843305666666667 0.429385666666667 0.354581
+0.879087666666667 0.43099 0.572886333333333
+0.452722 0.814224333333333 0.37721
+0.808117666666667 0.556827333333333 0.1862341
+0.645067666666667 0.858356 0.166249266666667
+0.637155666666667 0.592231333333333 0.220526633333333
+0.864432333333333 0.866542 0.0941157333333333
+0.492135666666667 0.829032 0.639440333333333
+0.493253666666667 0.797820666666667 0.856291666666667
+0.623358333333333 0.560652666666667 0.874013333333333
+0.796717333333333 0.564745333333333 0.875899666666667
+0.673172666666667 0.689957666666667 0.737854
+0.661144666666667 0.875461666666667 0.504337
+0.754635333333333 0.634669 0.517259
+0.874577333333333 0.60858 0.701975666666667
+0.921646666666667 0.617999 0.434912666666667
+0.847472 0.799295333333333 0.252498266666667
+0.680431333333333 0.888693 0.801821333333333
+0.876199666666667 0.745632333333333 0.858019
+0.848459666666667 0.833562 0.685681
+0.880153 0.838135 0.512566
+0.859583333333333 0.899597333333333 0.886078666666667
+
+CELLS 1312 6560
+4 179 3 2 4
+4 2 67 68 179
+4 179 2 3 68
+4 6 7 3 69
+4 0 13 5 71
+4 0 10 13 71
+4 0 73 10 71
+4 1 10 0 73
+4 1 9 10 124
+4 1 10 73 124
+4 1 73 66 124
+4 9 12 11 125
+4 66 124 73 126
+4 66 73 72 126
+4 66 72 74 126
+4 2 4 16 179
+4 179 315 3 4
+4 16 4 18 315
+4 3 4 315 7
+4 16 179 4 315
+4 179 3 315 68
+4 4 7 18 315
+4 3 315 69 7
+4 16 18 180 315
+4 3 69 315 68
+4 16 180 179 315
+4 67 68 179 315
+4 67 315 75 68
+4 76 75 67 181
+4 67 179 181 315
+4 67 75 315 181
+4 179 180 182 315
+4 182 181 179 315
+4 5 13 77 71
+4 6 20 7 78
+4 6 78 7 69
+4 5 13 21 77
+4 6 22 20 78
+4 5 21 22 77
+4 82 69 68 315
+4 75 82 68 315
+4 19 7 20 316
+4 7 69 316 315
+4 18 7 19 316
+4 18 7 316 315
+4 82 316 69 315
+4 7 78 20 316
+4 78 7 69 316
+4 78 69 82 316
+4 8 27 28 127
+4 8 30 27 230
+4 8 27 127 230
+4 8 127 128 230
+4 88 89 90 129
+4 70 87 88 130
+4 9 10 124 317
+4 317 71 10 73
+4 9 11 10 317
+4 317 10 71 13
+4 9 125 11 317
+4 9 124 125 317
+4 10 73 124 317
+4 11 125 131 317
+4 12 131 11 125
+4 32 11 12 131
+4 32 11 131 317
+4 32 33 11 317
+4 33 13 10 317
+4 10 11 33 317
+4 13 31 21 318
+4 23 31 25 318
+4 21 31 23 318
+4 13 21 77 318
+4 12 14 34 132
+4 34 32 12 131
+4 34 12 132 131
+4 28 26 15 133
+4 70 134 87 130
+4 70 96 87 134
+4 74 96 70 134
+4 317 319 71 73
+4 77 319 71 13
+4 73 71 79 319
+4 79 84 95 319
+4 77 71 319 79
+4 73 79 72 319
+4 73 72 126 319
+4 317 71 319 13
+4 72 79 95 319
+4 33 319 13 317
+4 13 77 319 318
+4 31 319 13 33
+4 31 13 319 318
+4 95 96 72 320
+4 74 320 72 96
+4 72 126 319 320
+4 134 320 74 96
+4 74 72 320 126
+4 95 72 319 320
+4 73 135 319 126
+4 73 124 135 126
+4 131 125 135 317
+4 73 319 135 317
+4 135 125 124 317
+4 135 126 320 319
+4 73 135 124 317
+4 134 74 320 136
+4 135 320 126 136
+4 74 320 136 126
+4 15 26 137 133
+4 14 35 34 137
+4 14 137 34 132
+4 15 26 35 137
+4 14 15 35 137
+4 140 136 134 320
+4 80 99 76 183
+4 80 100 99 183
+4 44 16 18 180
+4 36 40 39 231
+4 36 17 40 231
+4 43 40 17 185
+4 17 185 40 231
+4 186 185 17 231
+4 44 18 47 180
+4 44 47 184 180
+4 18 19 321 316
+4 182 180 184 321
+4 18 321 180 315
+4 18 316 321 315
+4 182 180 321 315
+4 184 180 47 321
+4 47 19 48 321
+4 47 18 19 321
+4 18 47 180 321
+4 316 322 321 315
+4 75 322 82 315
+4 99 98 75 322
+4 82 322 316 315
+4 75 98 82 322
+4 99 75 187 322
+4 321 315 187 182
+4 99 187 76 183
+4 76 75 187 99
+4 76 187 75 181
+4 321 187 315 322
+4 75 187 315 181
+4 187 181 182 315
+4 75 315 187 322
+4 182 184 188 321
+4 188 187 182 321
+4 19 20 23 323
+4 19 316 20 323
+4 321 316 19 323
+4 24 19 23 323
+4 19 24 48 323
+4 19 48 321 323
+4 48 24 49 323
+4 323 49 50 24
+4 84 79 83 324
+4 20 316 324 323
+4 23 20 21 324
+4 22 78 77 324
+4 21 23 324 318
+4 77 324 319 318
+4 20 316 78 324
+4 22 77 21 324
+4 82 324 316 322
+4 21 324 77 318
+4 77 78 83 324
+4 79 77 83 324
+4 78 316 82 324
+4 84 319 79 324
+4 22 21 20 324
+4 22 20 78 324
+4 79 319 77 324
+4 78 82 83 324
+4 20 324 23 323
+4 100 80 190 183
+4 81 107 108 189
+4 108 190 81 189
+4 80 81 109 190
+4 109 100 80 190
+4 108 81 190 109
+4 86 106 107 191
+4 95 325 319 84
+4 104 95 84 325
+4 95 319 325 320
+4 84 83 85 325
+4 84 83 325 324
+4 84 325 319 324
+4 83 325 324 326
+4 83 85 325 326
+4 82 98 326 322
+4 82 326 98 85
+4 83 324 82 326
+4 324 322 82 326
+4 83 82 85 326
+4 104 84 111 325
+4 84 85 111 325
+4 85 111 325 326
+4 85 112 111 326
+4 98 112 85 326
+4 327 316 321 323
+4 321 316 327 322
+4 327 324 316 323
+4 324 322 327 316
+4 324 327 322 326
+4 86 102 106 275
+4 86 106 191 275
+4 86 191 192 275
+4 94 92 115 276
+4 87 134 96 328
+4 130 141 134 328
+4 113 114 97 328
+4 89 87 97 328
+4 88 129 130 328
+4 87 130 134 328
+4 88 87 89 328
+4 134 320 96 328
+4 97 114 89 328
+4 97 87 96 328
+4 88 89 129 328
+4 88 130 87 328
+4 89 328 114 329
+4 91 114 115 329
+4 91 89 114 329
+4 90 129 89 329
+4 90 89 91 329
+4 92 115 329 91
+4 89 129 328 329
+4 92 329 115 276
+4 93 90 91 143
+4 90 91 143 329
+4 90 143 129 329
+4 92 329 277 91
+4 91 277 143 329
+4 93 91 92 277
+4 93 143 91 277
+4 92 277 329 276
+4 93 144 143 277
+4 94 115 116 276
+4 94 116 279 276
+4 101 94 116 279
+4 277 276 280 329
+4 23 25 24 330
+4 330 23 324 323
+4 327 330 324 323
+4 23 25 330 318
+4 323 50 330 24
+4 25 50 24 330
+4 24 23 330 323
+4 330 324 23 318
+4 31 330 25 318
+4 52 25 31 330
+4 53 50 25 330
+4 53 25 52 330
+4 55 30 230 27
+4 54 26 55 331
+4 35 331 137 26
+4 26 137 133 331
+4 55 230 331 27
+4 55 26 27 331
+4 28 26 133 331
+4 54 35 26 331
+4 28 27 26 331
+4 28 127 27 331
+4 28 133 127 331
+4 27 127 230 331
+4 127 145 128 230
+4 127 133 145 331
+4 145 230 127 331
+4 29 37 57 232
+4 29 57 55 232
+4 55 331 230 233
+4 30 29 55 233
+4 29 232 55 233
+4 55 230 30 233
+4 331 232 233 55
+4 145 233 230 331
+4 128 230 145 234
+4 128 145 142 234
+4 230 145 234 233
+4 142 145 147 234
+4 142 147 235 234
+4 148 129 143 329
+4 130 129 148 328
+4 129 148 328 329
+4 130 148 141 328
+4 144 146 149 278
+4 135 139 131 332
+4 135 319 332 317
+4 32 131 332 317
+4 332 330 31 318
+4 34 131 132 332
+4 31 319 332 318
+4 32 131 34 332
+4 139 138 131 332
+4 332 33 319 31
+4 137 332 34 132
+4 51 52 34 332
+4 52 31 32 332
+4 138 132 131 332
+4 137 138 332 132
+4 34 52 32 332
+4 52 31 332 330
+4 332 32 33 31
+4 131 135 332 317
+4 332 319 33 317
+4 332 33 32 317
+4 332 319 333 318
+4 330 333 324 318
+4 319 324 333 318
+4 325 319 333 320
+4 333 330 332 318
+4 325 333 319 324
+4 34 137 35 334
+4 35 137 331 334
+4 34 35 51 334
+4 51 35 54 334
+4 54 334 35 331
+4 51 34 334 332
+4 137 34 332 334
+4 137 332 138 334
+4 145 133 151 331
+4 137 151 331 334
+4 137 331 151 133
+4 95 335 96 320
+4 97 96 335 328
+4 104 113 97 335
+4 95 97 96 335
+4 104 97 95 335
+4 104 335 95 325
+4 95 325 335 320
+4 335 325 333 320
+4 113 97 335 328
+4 96 320 335 328
+4 141 336 134 328
+4 148 336 141 328
+4 141 140 134 336
+4 140 320 134 336
+4 134 336 320 328
+4 320 336 335 328
+4 140 337 136 320
+4 140 139 136 337
+4 332 319 135 337
+4 140 337 320 336
+4 333 319 332 337
+4 135 337 320 136
+4 139 332 135 337
+4 136 139 135 337
+4 135 320 337 319
+4 335 333 337 320
+4 319 337 333 320
+4 335 320 337 336
+4 138 152 334 332
+4 139 152 138 332
+4 139 152 332 337
+4 137 153 151 334
+4 137 138 153 334
+4 138 152 153 334
+4 154 139 140 337
+4 140 154 337 336
+4 139 154 152 337
+4 140 141 154 336
+4 141 148 155 336
+4 155 154 141 336
+4 142 147 157 235
+4 146 149 281 150
+4 146 281 149 278
+4 38 36 39 236
+4 36 231 39 236
+4 37 56 57 237
+4 37 38 56 237
+4 37 57 232 237
+4 56 60 59 338
+4 38 56 237 338
+4 39 60 56 338
+4 38 237 236 338
+4 38 236 39 338
+4 38 39 56 338
+4 98 112 339 110
+4 99 183 100 339
+4 98 322 339 326
+4 99 187 339 322
+4 99 187 183 339
+4 339 322 327 326
+4 98 339 112 326
+4 99 100 98 339
+4 100 339 190 109
+4 98 100 110 339
+4 100 190 339 183
+4 110 100 109 339
+4 118 112 110 339
+4 99 339 98 322
+4 193 339 190 183
+4 193 183 187 339
+4 43 40 185 340
+4 39 236 340 338
+4 39 60 340 41
+4 39 340 60 338
+4 42 64 60 340
+4 185 40 231 340
+4 42 60 41 340
+4 39 231 40 340
+4 39 40 41 340
+4 43 42 40 340
+4 61 60 64 340
+4 42 41 40 340
+4 231 39 236 340
+4 42 43 194 340
+4 64 42 194 340
+4 46 42 43 194
+4 46 64 42 194
+4 185 194 43 340
+4 45 44 47 195
+4 195 184 47 321
+4 45 47 65 195
+4 44 47 195 184
+4 45 195 65 196
+4 46 45 64 196
+4 45 65 64 196
+4 64 194 196 340
+4 46 196 64 194
+4 195 197 184 321
+4 184 197 188 321
+4 231 236 238 340
+4 238 340 236 338
+4 199 340 231 238
+4 199 231 186 238
+4 199 231 340 185
+4 199 194 185 340
+4 199 186 231 185
+4 200 199 186 238
+4 116 101 282 122
+4 116 282 101 279
+4 123 119 103 284
+4 101 122 123 284
+4 103 101 123 284
+4 101 122 284 282
+4 103 284 119 285
+4 102 106 275 285
+4 106 119 285 102
+4 102 103 119 285
+4 64 65 61 341
+4 48 65 47 341
+4 61 64 341 340
+4 61 65 48 341
+4 61 48 49 341
+4 65 195 47 341
+4 327 321 341 323
+4 195 47 341 321
+4 195 341 197 321
+4 47 48 341 321
+4 48 49 341 323
+4 341 321 48 323
+4 188 342 187 321
+4 187 193 342 188
+4 187 342 193 339
+4 197 342 188 321
+4 197 341 342 321
+4 193 188 198 342
+4 327 342 341 321
+4 187 342 339 322
+4 187 321 342 322
+4 342 321 327 322
+4 339 342 327 322
+4 202 198 188 342
+4 188 197 202 342
+4 62 50 53 343
+4 61 343 49 63
+4 323 50 49 343
+4 49 343 341 323
+4 62 63 49 343
+4 61 49 343 341
+4 53 50 330 343
+4 49 50 62 343
+4 323 330 50 343
+4 341 343 327 323
+4 327 343 330 323
+4 324 326 344 327
+4 333 325 335 344
+4 344 330 327 343
+4 324 344 326 325
+4 325 344 333 324
+4 333 344 330 324
+4 327 330 344 324
+4 113 335 104 345
+4 335 344 325 345
+4 104 105 117 345
+4 113 104 117 345
+4 118 121 105 345
+4 105 121 117 345
+4 104 335 325 345
+4 111 118 105 345
+4 104 111 105 345
+4 104 325 111 345
+4 346 275 192 191
+4 191 189 201 346
+4 107 106 346 191
+4 107 346 189 191
+4 107 346 106 108
+4 106 285 119 346
+4 107 189 346 108
+4 106 119 108 346
+4 108 119 120 346
+4 106 191 275 346
+4 106 275 285 346
+4 201 189 190 346
+4 108 346 190 189
+4 347 190 108 346
+4 193 190 339 347
+4 347 120 108 109
+4 110 109 120 347
+4 347 108 120 346
+4 110 120 118 347
+4 110 347 118 339
+4 201 190 193 347
+4 110 109 347 339
+4 109 190 347 339
+4 201 190 347 346
+4 347 108 190 109
+4 346 192 203 191
+4 201 347 203 346
+4 191 201 203 346
+4 111 112 118 348
+4 118 347 348 339
+4 111 325 348 345
+4 112 348 339 118
+4 112 348 111 326
+4 348 325 111 326
+4 348 339 327 326
+4 348 327 344 326
+4 111 348 118 345
+4 325 344 348 345
+4 112 339 348 326
+4 348 344 325 326
+4 327 342 339 349
+4 327 341 342 349
+4 348 327 339 349
+4 327 348 344 349
+4 327 341 349 343
+4 344 327 349 343
+4 275 286 285 346
+4 346 192 275 286
+4 346 203 192 286
+4 192 203 205 286
+4 286 205 204 203
+4 116 114 113 350
+4 279 283 280 350
+4 117 116 113 350
+4 350 114 328 329
+4 113 335 350 328
+4 280 350 329 276
+4 280 276 279 350
+4 115 114 350 329
+4 113 350 335 345
+4 279 276 116 350
+4 115 114 116 350
+4 115 116 276 350
+4 335 336 350 328
+4 113 117 350 345
+4 113 350 114 328
+4 115 350 276 329
+4 278 277 280 351
+4 336 351 350 328
+4 148 143 351 329
+4 281 149 278 351
+4 144 277 351 143
+4 350 328 351 329
+4 148 351 336 328
+4 143 149 148 351
+4 144 351 149 143
+4 144 351 277 278
+4 280 329 350 351
+4 144 149 351 278
+4 281 278 280 351
+4 277 351 143 329
+4 351 328 148 329
+4 277 280 351 329
+4 116 282 352 122
+4 116 352 282 279
+4 279 282 283 352
+4 279 283 350 352
+4 121 117 352 122
+4 284 282 122 352
+4 117 350 345 352
+4 279 350 116 352
+4 117 116 350 352
+4 121 352 117 345
+4 117 122 116 352
+4 120 121 118 353
+4 119 285 284 353
+4 120 119 123 353
+4 348 347 118 353
+4 120 118 347 353
+4 285 353 119 346
+4 118 348 353 345
+4 119 284 123 353
+4 120 353 347 346
+4 123 121 120 353
+4 119 353 120 346
+4 121 345 353 352
+4 118 353 121 345
+4 122 353 121 123
+4 122 284 353 123
+4 122 121 353 352
+4 122 353 284 352
+4 287 352 350 283
+4 280 350 287 351
+4 280 283 287 350
+4 280 287 281 351
+4 287 288 352 283
+4 354 53 62 58
+4 354 62 53 343
+4 53 330 354 343
+4 354 330 344 343
+4 52 51 53 354
+4 354 332 333 330
+4 51 354 52 332
+4 51 58 53 354
+4 52 332 354 330
+4 51 334 354 332
+4 53 52 354 330
+4 59 58 354 62
+4 54 51 354 58
+4 54 354 51 334
+4 333 344 354 330
+4 54 55 355 331
+4 56 59 355 338
+4 331 355 232 55
+4 54 355 354 334
+4 54 355 334 331
+4 59 354 58 355
+4 237 355 57 232
+4 55 232 57 355
+4 54 354 355 58
+4 57 59 54 355
+4 56 237 355 57
+4 59 58 54 355
+4 55 57 54 355
+4 56 355 59 57
+4 56 355 237 338
+4 151 334 356 331
+4 145 147 234 356
+4 235 234 147 356
+4 151 356 145 331
+4 234 233 145 356
+4 147 145 151 356
+4 331 232 355 356
+4 355 356 334 331
+4 331 233 232 356
+4 145 356 233 331
+4 239 355 237 232
+4 356 239 232 355
+4 240 234 235 356
+4 356 232 239 240
+4 232 233 240 356
+4 240 233 234 356
+4 158 150 146 289
+4 150 281 146 289
+4 158 160 150 289
+4 151 356 357 147
+4 240 356 235 357
+4 151 357 156 147
+4 241 240 235 357
+4 147 235 356 357
+4 157 147 161 235
+4 161 235 147 357
+4 156 161 147 357
+4 157 235 161 242
+4 235 242 241 357
+4 161 242 235 357
+4 149 358 281 150
+4 150 160 159 358
+4 148 149 159 358
+4 148 358 155 336
+4 149 281 358 351
+4 149 150 159 358
+4 358 336 148 351
+4 287 358 281 351
+4 150 289 160 358
+4 149 358 148 351
+4 155 148 159 358
+4 150 281 289 358
+4 333 359 354 344
+4 153 359 334 152
+4 359 335 333 337
+4 354 359 333 332
+4 359 332 152 337
+4 354 334 359 332
+4 333 335 359 344
+4 359 334 152 332
+4 333 332 359 337
+4 360 336 358 351
+4 335 350 360 345
+4 360 350 335 336
+4 360 345 350 352
+4 360 350 336 351
+4 360 344 335 345
+4 360 359 335 344
+4 153 361 151 334
+4 361 359 354 334
+4 153 334 359 361
+4 355 361 354 334
+4 361 334 355 356
+4 153 156 151 361
+4 151 357 356 361
+4 151 334 361 356
+4 151 156 357 361
+4 360 362 358 336
+4 360 335 362 336
+4 335 337 359 362
+4 152 337 154 362
+4 358 362 155 336
+4 360 335 359 362
+4 359 337 152 362
+4 154 362 337 336
+4 155 362 154 336
+4 335 337 362 336
+4 153 162 359 152
+4 162 154 155 362
+4 153 359 162 361
+4 162 156 153 361
+4 162 359 152 362
+4 162 152 154 362
+4 155 163 162 362
+4 159 163 155 358
+4 163 155 358 362
+4 165 160 158 289
+4 361 167 162 156
+4 361 169 167 156
+4 156 169 161 357
+4 156 361 169 357
+4 157 242 171 243
+4 157 171 242 161
+4 164 157 171 243
+4 171 170 164 243
+4 287 358 290 281
+4 281 290 289 358
+4 158 166 165 291
+4 165 158 291 289
+4 59 63 62 363
+4 61 340 363 60
+4 61 363 340 341
+4 61 363 343 63
+4 61 63 60 363
+4 60 340 363 338
+4 60 63 59 363
+4 363 338 355 59
+4 59 354 363 62
+4 60 363 59 338
+4 62 354 363 343
+4 59 363 354 355
+4 363 349 341 343
+4 61 343 363 341
+4 62 363 63 343
+4 236 237 244 338
+4 238 236 244 338
+4 237 355 364 338
+4 363 355 338 364
+4 237 364 244 338
+4 239 237 355 364
+4 244 237 239 364
+4 245 244 239 364
+4 238 365 199 340
+4 365 363 340 338
+4 365 364 363 338
+4 244 364 365 338
+4 238 244 365 338
+4 238 365 340 338
+4 246 238 244 365
+4 193 198 366 342
+4 202 366 198 342
+4 339 342 366 349
+4 348 347 366 339
+4 366 347 193 339
+4 348 339 366 349
+4 193 366 339 342
+4 193 198 206 366
+4 206 201 193 347
+4 206 193 366 347
+4 363 340 341 367
+4 196 64 340 367
+4 341 340 64 367
+4 363 365 340 367
+4 197 342 341 367
+4 64 196 65 367
+4 64 65 341 367
+4 195 197 341 367
+4 65 196 195 367
+4 65 195 341 367
+4 207 340 365 367
+4 207 194 199 340
+4 207 196 194 340
+4 207 199 365 340
+4 207 196 340 367
+4 202 197 208 342
+4 195 196 208 367
+4 207 208 196 367
+4 197 208 342 367
+4 195 208 197 367
+4 209 206 198 366
+4 198 202 209 366
+4 200 246 210 238
+4 246 210 238 365
+4 200 210 199 238
+4 199 210 207 365
+4 199 238 210 365
+4 211 210 200 246
+4 206 212 201 347
+4 212 206 366 347
+4 201 212 203 347
+4 292 288 283 352
+4 292 283 282 352
+4 292 282 284 352
+4 292 284 353 352
+4 285 293 353 346
+4 292 284 293 353
+4 293 285 286 346
+4 284 285 293 353
+4 363 341 368 367
+4 209 202 208 368
+4 202 366 368 209
+4 202 368 366 342
+4 363 341 349 368
+4 366 342 368 349
+4 208 368 342 367
+4 368 342 341 349
+4 202 208 368 342
+4 341 342 368 367
+4 363 368 365 367
+4 244 247 246 365
+4 245 239 248 364
+4 368 363 369 349
+4 369 354 359 344
+4 369 349 363 343
+4 369 363 354 343
+4 369 344 348 349
+4 369 359 360 344
+4 369 354 344 343
+4 369 344 349 343
+4 370 353 345 352
+4 370 345 360 352
+4 370 353 348 345
+4 348 369 370 344
+4 348 344 370 345
+4 360 370 369 344
+4 370 344 360 345
+4 371 214 212 204
+4 203 371 286 346
+4 348 370 371 353
+4 347 353 371 346
+4 212 371 203 347
+4 293 286 371 346
+4 203 212 204 371
+4 371 366 348 347
+4 286 204 371 203
+4 371 347 348 353
+4 203 347 371 346
+4 212 366 371 347
+4 371 353 293 346
+4 372 366 368 349
+4 348 371 370 372
+4 369 348 370 372
+4 348 366 371 372
+4 369 372 368 349
+4 369 348 372 349
+4 366 372 348 349
+4 286 371 204 294
+4 371 294 214 204
+4 205 204 215 294
+4 215 204 214 294
+4 286 204 205 294
+4 293 286 294 371
+4 287 350 352 373
+4 350 373 360 352
+4 373 351 360 358
+4 360 369 370 373
+4 287 290 358 373
+4 287 352 288 373
+4 373 360 351 350
+4 370 360 373 352
+4 287 373 358 351
+4 287 350 373 351
+4 373 352 374 370
+4 370 374 353 352
+4 371 353 370 374
+4 293 353 374 292
+4 293 374 353 371
+4 292 353 374 352
+4 292 374 288 352
+4 373 374 352 288
+4 370 372 371 374
+4 292 295 288 374
+4 295 373 288 374
+4 295 296 288 373
+4 296 290 287 373
+4 287 288 296 373
+4 356 239 375 240
+4 248 239 241 375
+4 375 239 355 364
+4 375 363 355 354
+4 240 375 357 241
+4 239 240 241 375
+4 240 357 375 356
+4 356 375 239 355
+4 369 375 354 363
+4 354 355 375 361
+4 375 361 355 356
+4 375 355 363 364
+4 354 375 369 359
+4 354 361 375 359
+4 361 356 375 357
+4 239 375 248 364
+4 241 250 248 375
+4 251 250 241 375
+4 251 375 241 357
+4 242 251 241 357
+4 289 376 160 358
+4 168 160 165 376
+4 163 159 376 358
+4 167 163 159 376
+4 376 373 360 358
+4 165 160 289 376
+4 159 160 168 376
+4 165 289 291 376
+4 168 167 159 376
+4 289 290 291 376
+4 160 376 159 358
+4 290 373 376 358
+4 290 376 289 358
+4 243 251 242 377
+4 171 170 243 377
+4 161 169 171 377
+4 242 161 377 357
+4 243 242 171 377
+4 375 377 361 357
+4 169 377 161 357
+4 161 171 242 377
+4 251 377 375 357
+4 242 377 251 357
+4 169 361 377 357
+4 163 378 162 362
+4 378 361 375 377
+4 163 358 378 362
+4 163 167 162 378
+4 167 378 163 376
+4 378 369 375 359
+4 378 375 361 359
+4 361 167 169 378
+4 361 162 167 378
+4 169 361 378 377
+4 360 369 378 359
+4 378 358 360 362
+4 163 376 378 358
+4 378 376 360 358
+4 360 359 378 362
+4 378 360 376 373
+4 360 378 369 373
+4 162 359 378 361
+4 162 378 359 362
+4 174 170 173 379
+4 165 376 175 168
+4 172 173 175 379
+4 174 252 170 379
+4 252 251 243 377
+4 174 164 170 252
+4 170 252 164 243
+4 252 377 170 379
+4 252 243 170 377
+4 165 297 166 175
+4 166 172 175 297
+4 165 376 297 175
+4 165 297 376 291
+4 165 166 297 291
+4 172 175 297 379
+4 176 378 169 167
+4 176 169 378 377
+4 176 378 167 376
+4 168 176 167 376
+4 175 376 176 168
+4 171 177 170 377
+4 170 177 173 379
+4 177 170 377 379
+4 171 169 177 377
+4 176 177 169 377
+4 173 177 175 379
+4 291 290 298 376
+4 298 376 290 373
+4 298 290 296 373
+4 291 298 299 376
+4 376 291 297 299
+4 172 300 173 379
+4 172 297 300 379
+4 178 173 172 300
+4 178 300 253 173
+4 174 173 253 379
+4 178 174 173 253
+4 173 300 253 379
+4 174 253 252 379
+4 244 380 247 365
+4 244 245 247 380
+4 380 365 244 364
+4 369 363 368 380
+4 363 365 380 364
+4 248 249 245 380
+4 248 380 364 375
+4 245 249 247 380
+4 368 380 363 365
+4 245 380 244 364
+4 375 380 363 369
+4 375 363 380 364
+4 248 364 380 245
+4 211 210 246 254
+4 247 254 246 381
+4 207 365 210 381
+4 380 365 368 381
+4 207 365 381 367
+4 247 365 380 381
+4 368 381 365 367
+4 247 246 365 381
+4 210 246 254 381
+4 210 365 246 381
+4 209 206 366 382
+4 371 372 366 382
+4 372 368 366 382
+4 209 366 368 382
+4 209 213 206 382
+4 213 212 206 382
+4 212 366 206 382
+4 371 366 212 382
+4 216 381 368 367
+4 216 209 368 382
+4 216 368 381 382
+4 216 208 207 367
+4 216 209 208 368
+4 216 207 381 367
+4 216 368 208 367
+4 207 210 216 381
+4 217 213 209 382
+4 216 217 209 382
+4 217 218 213 382
+4 211 219 210 254
+4 210 219 216 381
+4 210 254 219 381
+4 220 219 211 255
+4 219 254 211 255
+4 218 383 213 382
+4 213 214 212 383
+4 371 212 214 383
+4 371 214 294 383
+4 371 383 372 382
+4 213 383 212 382
+4 371 212 383 382
+4 221 213 218 383
+4 221 214 213 383
+4 214 302 294 383
+4 221 302 214 383
+4 222 215 221 302
+4 215 214 221 302
+4 215 294 214 302
+4 293 294 303 371
+4 303 292 293 374
+4 292 303 295 374
+4 303 293 371 374
+4 303 304 295 374
+4 368 384 369 380
+4 384 380 368 381
+4 368 384 381 382
+4 369 384 368 372
+4 372 383 384 382
+4 368 372 384 382
+4 256 381 247 380
+4 249 256 247 380
+4 256 247 381 254
+4 257 256 249 380
+4 375 385 378 377
+4 250 385 248 375
+4 248 385 380 375
+4 250 248 385 258
+4 257 249 258 385
+4 257 380 249 385
+4 248 380 385 249
+4 258 249 248 385
+4 369 386 378 375
+4 374 386 373 370
+4 386 370 369 373
+4 384 386 369 380
+4 386 376 373 378
+4 369 370 386 372
+4 386 380 384 385
+4 386 375 369 380
+4 369 386 384 372
+4 378 375 386 385
+4 375 380 386 385
+4 378 386 369 373
+4 386 372 370 374
+4 384 383 372 387
+4 303 387 304 374
+4 304 386 374 387
+4 384 372 386 387
+4 303 371 387 374
+4 294 303 371 387
+4 294 371 383 387
+4 372 383 371 387
+4 294 302 303 387
+4 294 383 302 387
+4 372 387 371 374
+4 386 387 372 374
+4 295 301 296 388
+4 295 304 301 388
+4 295 373 374 388
+4 295 296 373 388
+4 296 298 373 388
+4 304 374 386 388
+4 296 301 298 388
+4 304 295 374 388
+4 374 373 386 388
+4 298 376 373 388
+4 386 373 376 388
+4 250 375 259 385
+4 259 250 251 375
+4 259 385 375 377
+4 258 250 259 385
+4 259 375 251 377
+4 260 251 252 377
+4 259 251 260 377
+4 177 377 389 379
+4 253 252 389 260
+4 389 377 252 379
+4 260 252 389 377
+4 378 386 389 385
+4 176 378 389 377
+4 300 297 299 389
+4 389 377 259 260
+4 389 259 377 385
+4 376 389 297 175
+4 175 177 176 389
+4 175 176 376 389
+4 378 385 389 377
+4 253 389 252 379
+4 175 177 389 379
+4 253 300 389 379
+4 298 389 299 376
+4 376 297 389 299
+4 176 389 378 376
+4 176 389 177 377
+4 298 389 376 388
+4 386 389 376 378
+4 386 376 389 388
+4 300 297 389 379
+4 175 389 297 379
+4 299 298 305 389
+4 298 305 389 388
+4 298 301 305 388
+4 305 306 299 389
+4 306 260 253 389
+4 253 389 300 306
+4 299 306 300 389
+4 261 306 253 300
+4 178 253 300 261
+4 261 253 306 262
+4 306 253 260 262
+4 257 256 380 390
+4 256 390 381 380
+4 256 255 254 390
+4 254 255 219 390
+4 256 381 390 254
+4 384 390 380 381
+4 257 380 385 390
+4 384 385 380 390
+4 254 390 219 381
+4 381 223 384 390
+4 216 223 382 381
+4 217 223 218 382
+4 216 382 223 217
+4 381 384 223 382
+4 223 221 218 383
+4 223 383 218 382
+4 223 384 383 382
+4 219 223 216 381
+4 219 390 223 381
+4 219 255 224 390
+4 220 224 219 255
+4 219 224 223 390
+4 224 255 220 263
+4 255 263 224 390
+4 228 224 220 263
+4 264 255 256 390
+4 264 263 255 390
+4 302 387 383 391
+4 383 387 384 391
+4 223 391 221 383
+4 221 391 302 383
+4 223 384 391 383
+4 223 221 391 225
+4 223 391 384 390
+4 221 302 391 307
+4 225 226 307 391
+4 226 222 225 307
+4 222 221 225 307
+4 222 302 221 307
+4 221 225 307 391
+4 308 304 386 388
+4 308 386 304 387
+4 308 305 301 388
+4 308 301 304 388
+4 303 302 309 387
+4 302 309 387 391
+4 309 308 304 387
+4 302 307 309 391
+4 309 304 303 387
+4 309 392 387 391
+4 392 384 387 391
+4 386 385 384 392
+4 386 392 384 387
+4 384 392 385 390
+4 309 392 308 387
+4 384 392 390 391
+4 265 385 390 257
+4 265 392 264 390
+4 256 265 264 390
+4 265 390 385 392
+4 256 257 265 390
+4 257 258 266 385
+4 259 266 258 385
+4 266 385 265 257
+4 259 389 393 385
+4 385 392 386 393
+4 259 393 266 385
+4 308 393 305 388
+4 308 386 393 388
+4 308 386 387 393
+4 308 387 392 393
+4 392 387 386 393
+4 265 392 385 393
+4 266 265 385 393
+4 389 386 393 385
+4 389 393 386 388
+4 305 393 389 388
+4 306 267 260 389
+4 389 259 267 260
+4 259 393 389 267
+4 306 260 267 262
+4 259 266 393 267
+4 305 310 306 389
+4 305 310 389 393
+4 267 393 389 310
+4 306 267 389 310
+4 305 311 310 393
+4 305 308 311 393
+4 268 262 261 306
+4 268 306 267 262
+4 268 267 306 310
+4 223 224 225 394
+4 223 390 224 394
+4 392 394 390 391
+4 225 227 226 394
+4 225 394 226 391
+4 228 227 224 394
+4 225 224 227 394
+4 228 224 263 394
+4 263 224 390 394
+4 264 263 390 394
+4 264 390 392 394
+4 223 394 225 391
+4 223 390 394 391
+4 227 312 226 394
+4 312 307 226 391
+4 312 226 394 391
+4 228 263 269 394
+4 269 312 227 394
+4 228 269 227 394
+4 263 264 269 394
+4 229 227 228 269
+4 229 226 227 312
+4 229 227 269 312
+4 264 265 270 392
+4 264 392 270 394
+4 269 264 270 394
+4 313 312 394 391
+4 309 313 392 391
+4 270 392 313 394
+4 313 394 392 391
+4 309 307 313 391
+4 313 307 312 391
+4 308 392 314 393
+4 314 308 309 392
+4 270 314 313 392
+4 313 314 309 392
+4 311 308 314 393
+4 270 265 271 392
+4 270 271 314 392
+4 271 314 392 393
+4 266 267 271 393
+4 271 265 266 393
+4 271 392 265 393
+4 272 267 268 310
+4 272 393 310 311
+4 272 311 314 393
+4 272 310 393 267
+4 272 314 271 393
+4 272 271 267 393
+4 270 313 273 394
+4 229 269 273 312
+4 273 312 269 394
+4 269 270 273 394
+4 273 313 312 394
+4 273 270 274 313
+4 274 271 272 314
+4 270 271 274 314
+4 270 274 313 314
+
+CELL_TYPES 1312
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
diff --git a/src/UnitTests/Meshes/data/tetrahedrons/cube1m_1.vtu b/src/UnitTests/Meshes/data/tetrahedrons/cube1m_1.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..a4a47f0304c71c3a7e77f980c9094697332d2099
--- /dev/null
+++ b/src/UnitTests/Meshes/data/tetrahedrons/cube1m_1.vtu
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+<UnstructuredGrid>
+<Piece NumberOfPoints="395" NumberOfCells="1312">
+<Points>
+<DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary">
+AQAAAAAAAAAIJQAAAAAAAAglAAAAAAAALA4AAAAAAAA=eJyVWXdcVFcWxgRxjR0RC1iIgNhiQkDQ6H4LmkBwbRFUFCsSsRFIwAZYk4AY0LAaE2NWQYzokqhI1Kjg0IuENnQGHJjGFNwRjGJEWWTmzvu9++Ztdu8/7/cOd8499TvffZiYsNcGn1crFyb/19Jy9idffrVUBvmyXr2/YGXvs42zf3GvvIoj1+2XGeRze9/T9Xpaqf1cO/j8IfaQJ9uOcmT32n+bknPtI/vI79h/Ff+pP8btpP3QcuS6/b/p46A2yK/12lMBXfzllB6BXt7Cket+V8+Td9qPMtDyseP3/GGVX4M3rYJ+ss5n9O8ILVkcYl2jj08dpUeBn3rPTTXISX3QeaHrib20MJ4fLej8O2SWz4+TVOCHe5v+Gt6/wiCXiL/sK3WtRmpNZ1OIdb5Bfrb33CKQJ5HrzmvUvwso+yX6/Vkce4z7oeXEk8jpetH9XqOXKzhxo/tL964EebLlChB9bP0qTr2x40vXp5gjZ9tN66nj1O38maJVs+Ia9O9MX4sODz0+I+EBjh2b8yJWIuE5l4lbk/TrjySupP7KDHJ2fTPymdcEK0LVTdjvmBdVd7+OioMcpJ/YfqlB+o9tj4anvzSc/vrg1JqxbXYSkL5h72/l+GWe8dQlcIYcIcHZr316Rk7Z2cKJm7X9mCTxZAmyAxNbzFc9MMiLcketzA+RgtQp+1wpiL1E0tvPHmJd/P01nH4iy7ic9F8mJVfr+/sa248pXL/Jovfr9JZycJf0nfFzc3hwgsF98k7yzIcrxudDHUfOxoMiqh4rePzl9j2R03rYOF9G7ReD4C9tJy1n1wN3/uj6r9kgH/ij/6kQ65s8djL4Qt5JXPhwnMYtNv7Tc49vTjL2sv2t4plvZWDjOFkC/Rxj+oPMBeN6SN3Wcvr+buHEC3khTP+RPjJuPxdH+fCYxJ2Nd8y81f1OapB/MsT9bxmfN/HMhzbeuaSTt1L71Rz8IHLaHnZ86DoXg+AvkWTKrecMHyOBU12A7POdDM6FvYx/prGr4Mwx0g/0HGP3s4Y6l+SJ8YvkleAykffirbVUr5/mrQoOz2K/M/pJXNj5NzEh9UHPQxJfPp6qW2nYbTnptMS1jOM3jUN8/Juvnwge07hL7KL161aOfp7ReJmBqa/y+YTpMz4ez8er+HgYH28jvzc+j7n8VbcqQfQRCR9vkG0cmCLpFONonx1mw+tpXsjHk9Q8c4nLU/n4PdlPzyU+XkXqkY4be77R9xZSn7VUHLj3Ct3va2Ab8e9PytYyfax4Ve+3qvB0gql0QTLTTzqe14R+a3aGpZ2i508LdH+vos4V6XiPNX2f4eIl+53ObysHv4VJFqHhhWro7GVwmuY9xs9l9C+zmT9+9CgpjgW5jna/00T5xeXB/pXH1qdL2yBNKKyVfEvXJ3f+K7Jjg04dlyK03fNSiIjZr5vLSn1eJFTeubyQj/frFpf/EXvo+cB33+CbV3z3lrxEpWZTsAK+Fx7/fcY1GaWfe29h62X0G8dJLVKXDHa3zif4VWaQs3EzzSA3jjN0PQkM8qWHzh+xzs8E3ffG8Zbuc8YPNm7mGORsPKo0yI3jsxbG8ZmcQ+OP9k/sEnPixr6vK6j9AopPaQ33YOP8sozqR60BRwiusO2j8ZDGQS07Phzc02Kg6qL57tn1+ng3UnGj8ZDoo/FQy3s+8ZPNr7Uwjp9aRCtrA6zzhXp5M0/8xdR5NM7T++n+oHFPiyvr3aLkF2WwfXh07QQr5lyCd2zeSuujz+nhcbMVF13jGJwj34Eiy+fn2qUxeV+803dWwgs5Hk29Wj9kgJQTN9ov4/jJ5Mt4XXF/R+JOx1/3VFD8jtHP5r90famo/TQecvf92ZPGLz5cI+ewvzMx9UHL2d8rKgxy0s/s73NM37L7nYkXrZ/kgX0OE0fdd7dKSo+Y+r7C9AmZ+0RO+qSXR99i6k+Hv9n6dymlX8DRT/Kvuw/Vceyn40DsZ3+fYvqK+EH75SnI8gs4wMhJP+h4DNNv/nanp3/gVU/xVAYf2fOSyYtuP93/OZz49PblYDVPfOjvVYxf5DsRHR/dk5GTe6Xunekrgn/s+a3l5IM8yfzp3V9Fz8tSThzYfEJJ2amEZ2fTg3PpzH5dXGRU3ph8sfmQllMHbHkVp8/Z92gNJVcY4s22n447P47z4QiNc3y8w/j/KfjxhY8f6Z6E/zDzkI838fEa0rfkPsDWz+UFfDyC3Q90Xis4uM7Hp7x91yd6V1Xjy975J+LJh4BHXkblg8u/+OY8Hy/43+Y8Uydtt5p3CX8SQ/e9nMkLH09k9zfFK43wJt2Tyx8TFjo5PzGX6vPcwIkDn/3/K1/QPbn85b/zNe48n75affTzmQrceVTgWBPRwvHXOC/g8j6Cp3Td8s1/Ph5B85dtD0pDbvTJhMOdoMLJv96F+fMp8kFjNRg19L2Yy9/cw+Glzb9/2ZqD6OHfLlLfkGOv5eRZxXNuYK7ThdFXfijAa8k9tHZrOuY8HL/Hp+pXXM+pWb5N/BumPR60bpZPLZR2b9U/WVKE+pGpj04tzMKi29Fe+8aXYv/bSVd319Si84OD6W7vZmHvofJN+9oE+Pnsy+vy/DyMiXsiGLJYiBhpX7V5qwpFKZ4Ovj31WurywunDqCzYWynHr3jR45dpbJnZqTu4uGf48rmfVUG1u71arpEg6m7MOz5VhShyTdh2+1kuAgtPzX1yrglrGgNSJjrVo8K/xdHrs0wkJ/+85f6PDZjik6iZLqtB1Zkf5i3ZnoF164YpkzZJ8PyPbdmfnqyAvHhzZ8lmIRRxtX1UYimiB6+O7T4pRfmKK2rx5HT4Jt+Js9iRAcvEsV75M9Twi/m2O/L6Dez5oKPN65YAQZnF3ytS7iFmV/Gyt+fW4LvTpp94nm9A8o7AT04WZ6DqjWexZ9pbodkcGuasyEKR++YxJ63zkWXx3Y+/J9Viqt/7zg3386BcYBmQVCyE98GTAwvjKyBwizm0wa0SHauK58abFOLvXbu2Wm2XQPPNoyDprBykxS+PmNcsxvHu3z96Nj4fp2sdS00WlkGlFppucm/B2vSYrwZ7luF65+uVMXYCuAV0Pf9qQC1aSrs7IkoqcOfmm++4DUrH2uwk2fT5mTDfuj6j9L4atzOG9Ou/lPTRA0ybazNyd1EBxhYOqLYrI/WWA9mBNQv/mdqKHeM2TA23UyNWvvhp45Ic3Cq5t+aJ+gEmWhys8T7cisa03/aOK6zGxatmI9wf1+Dh2oIXNsdVqJujDRyzIA/O/U0nFYSJ4X8quWnMymZ05vlNG+9XD6l8tKOPohJ3/YYmBdxsxKphzuWK81LYLHhb3pmaiZdPMgeeaxdh0NGlNfXPVRhqtkEUbp+F5fsvP3V7XYOMLZXLu/+QovaIv9cws2Isrf7wuK2VCl932FaXRjdj5LXqaZ99U4orkX3SgxUSiAOHz86KqINtmcUkaXADliy7X/1HogymlyzeG9NPBV+rDPFby3Nga/m94/DAChx5+K6bokCFsw6H/MwEJYjdfeLgbOtsfNRjjfcINda6rJ4xR1aE9pKEgT7vNCLOpj4htKuHV3g7zT98KBfXbcfc/NdWKX7+9ITp5Gf58M5qk4TXNWNU6bmE/YdqUPxFa12Yaw4mv948tuOEEqc9vGIlp+vwy7Dk4+nBZYhU7XtvZ7oK4jCPoZ2DirEuMnpCc5wIFu7TO+bF9+Rxy7uL5nln4/2hg3Z/aamEQ6XQQzykDv8S+fjaJQqwYvKR7kU76tEeGXLJa3UTXn/D8cSFwGI03jyQfsVFhssHwv+JHdXQJESmiF2EqH00/LHplXqMmH3EqkgiQ9+Bovv53dl4r2DYSvstzQhevXr32il1OOG/ovurXRl6XC/E9qvB8fIhcsQotvdJ+F2CqxvmzHomEcLadusx06gePLJf1vd8fAuiZ2+UXFUJ0fHzXsGcTSrsOuw+UnFIiZ+e57uH9uTLum37L6HttchM2Tk7soe3LIpya3bKLcXRC54Z5p4SHLhxxTJ1oQZvSYeJPOsaMHVRQ4ri6xZM2lY5z+m2ErK/dLzjuFqM/snBPSltxt1+rRlnfMUo1p4NOvc3OTrCRr8UDqpBbP8BfYRdYvi86oscJczOLb39eEYtWs+FlIRFKTE4cEiCy2syuGS/G7fPRgx0VW9YlytDTMrqKX5dKnxs2WY6OLwBHtapB0OvVcOm1DsswkaDwPu/Wqw42YCEDNwa4dOCzQcGpAY8E2FKbuDbEwarcH5l0BZn21rckqedGC1SYrj2/bio8ma8dPxM9Hl1Pi57HWzflCRF+JYYk4u71Gj6IbntokcuhNvqPE74SzHi0hsTjnW0IMnuL+Eus4vx12sO3TsuqXEpWvjhjdtqLLyc1vV05C2UV2z41n7/A8QXq8YGRamQOa4tfsFOKUIK04W7vn4AU5M2p3s9fo7d2bcg/eOee9ZG9bTYdgmUHbtEjdpmrGhdU6p6qkaXzyrfX/Yp8WnUpJJN5i14OLHx7tp+Gnx4NmJzQowMPj9mjH7TQo6BNooX+88oUO7uIBrlIIPZF5tnFPT053xnO9+oiWJkLkvs7rRrhXpcnZ/zYikmPRt2b2OsGCGXj50+0tXDD16czY7YI4Fqz5qUkzvluH12j73NvjZYZmRUX8iTwDen69/fVzUgsSL6u8hxarzceLxE+A8lPD4KjHzoUIZh0r0PR+bJsF4asHBasAYbGyJmfpGsxMm3JrYI+/fMY9ey5a4iBY6OHDBPGtpzXlN/yQl7NZ6b2bvEpKiwNbHUY/QjGQRzS8/OnKKBs1tlpEmFCvO8m0u1H4uxf5FVa9pBNfoeyV95oFCDSdHiC5mrNPgP0grqxw==
+</DataArray>
+</Points>
+<Cells>
+<DataArray type="Int32" Name="connectivity" format="binary">
+AQAAAAAAAAAAUgAAAAAAAABSAAAAAAAAeBcAAAAAAAA=eJxtmAe4mEWVhmcIxRBCNSbUNDokhCQEEiAF0isJgZDkpgPphdz0npsesLCAoKAoqyKigqKIIiiiywZ0RZe1IQZdFVhFQLBS3P/zf7+dc++z//PMM+c7bc7U/8w8kFJqVZUDqnIg9aVVGVyVBygHoCPewVU5BDwk1V/bqhxUlWHgQ+EZj4AnnKHNF24Nb0OQjwhY9CVg6R5WlTZV2Rj40tkEFj08YNEjwe7nkaF/F+a6P+arProFX/Qhwc68BxgL0YPhH9LCXvWQVOwl+1KQDwn2RyJzXHEujFWPgj861bT4X6Z+ANr6o6C/jEz+H4T3YCp84YOYuzHMl+b73cQ+FjwWPCQV/XbYSP4ebMYibwdP8gnYDQ79mBDwMfiW/UW5tCNa8qORHwPP2PIJ0B5Tx21/MXbjIanYvauqj6/KCVXZnGp8ErzfpiLfHLDoLeCrqjK5KlOqsrUqQ6syCX5Tar7WL851GZbKmpe8Ddhy7522yDeiI1lrfG1MRXdE8O99sg18GLT5naDNN7a+cOfQXmfiODS01wYdYck6Muf9K9wefCy4Hbg9OK6d/sR3eFW6VGU7dacQXxfo7WDN03FVOaIqOxjvnYx5E3gmWPyRYOsp5gHMwQjiMG4LT/Q4+KonVmUG2PvEshHoDocXz6IBYb4H0Pfh6Ntf5yDzeDomjU/HIO/MWLYN8hn0T34H5rq/qocHvmMRf2fQm8n42HYTcQ0P+urPLvCmsNZ24Xcb62oX8Y9A13gX8g0Bb6K9AcG/5Z4zyXcjc2y7W8g2sQ60HvawHrSWurJu9oD3hPVl/a5BfkTAN9COx+myqp6T6nP3K6nGV8MTPjs1P+NPrsrpVTmtKi+Aj4InfBa0eF8NteVfC/wX8C/f5+D/bOiHwJLpbByU6/PsQfgPwTua2v8fYekNyuV/8KVUsP2eA+8c/PcIOLYZY3MMlwT/Ou8v4ZwW1rjNTs35l+Ryno9Cbv4cdB9Ozf0KP8g8PBzmZ3TQ97w9DO/LxPgwsVySi67/lw+j5/+l/6Vu/0HG9uv4+noqsQzif6Z/j867S3P5b70b7DE6BtyBsYz6HRhvY4+9cA/k5yJXEd0Tvs4qnS+XV2VwLv/Bwei2J752yPWf1j9xDLgdsQzmfDHf5038r9p+TPA3gdrrwHyf92Noz/GNw954LP7tR/3xWev22tEHY+ce9jcgxD2WtRTHY3Au4629rD39KOtnfFUWVmVRVR6hfhT+I+iKXgxfdfSxCLllV1ZlAT6/kerzdQjjqb7NgzcRvv8LQzh/JxL7FciNh+QyPvYnHGVDc3PboYyr9tfQXPaf6NnoeZzMH9xC73LG8wrwPGJfGuK7IuBIDwUvg+d2lwV/w3I5n+J+GUYcw3JZX5eG+Gw3OOjKn8b/WubgmFzm4xsBi/4meHpVN1SlUesqlzxiZlWG5zrHeC884euqenlVZoGVC04KWHng1lTbDc8lT9kZ5OJNBvu/4/Zm4X9ywJNCPM4/twbchI7jUS0fI6p6Kv4aA56citx57OSARU8FN/w/tm7bctUev2mp9iHd97eg7f/9+Ij27fCvItr60+A1wJ+GvfXMl67b/wA67ZhfxbaC+KZDt0f/mtSc1w5+B3zq3FBuq7N2ZK6Lz8tLWXsjc/Pz9lh0+8PrCe6ArGfwp7o99KXBl/PnjsicX/fGh/nn4e/YgEX3Bp+f6vuN7i661/RJdT4k/qhc50Gq98CPudUo7H8LfTx2x+FLPOfn1pf/rvAsP74F3tzCfgc8t7E5tCn6xlTuX5vRvxH5jYEvfGJVn1KVvlV5MdW4L3G/GPotm5cYmxPhvwT9YsDu/0lg2b4YZDdCO17HKf7/ELfo94Gj7CX4wjfBex/078A3p3qveD80gcXXHoy05cLvhae98C9VuaUq78l1fn19qvP40bnk+qJ9H7TsYvgjWYdaf12Qb0enY7DvH+y7IFdbe4NPlc7YdGStjc4lX++V6rVre9HS6wTem8rdcDTrdi+075O9g77t3Y/Rudx5O+JnV4v++p52cYi3U2ouH0N/R0I7f/J/2fIhQX8gteOwfEyw8z1Ge2hsLvcUra2xyLsyTsK9wH3AfYLdKORd4Hm8PLZjcxn/vehoLWp/3ZrKuXBraN+x3Iqe8pdxuf4/qX+zUk2Lp/WnfEH/zFnwZqTmOvPAMwK23pBQj2P8xoUxE46+h4c4jLUPLsvl/3sz2PtDte6AO+HfkMq9+bJQD8TfP++Iwb/0x+f6DjkQrDW/G77Xyy6w9e3Hcy+98UHPd97rwz4dH3jGvi+Px884fNrHAGiPl8dxPO1r3m8L6+N6sPeUsePT/H+INeH1sBfe2ODP+MPEe0Po/4dTaf968G1B/l54nifN2e3g25F5Xn1efiTVZ6bPumMr2QfBon3+nZrqO7ru67+HfiFg/TsuSPU/42XwqfCM/W95Gf5FVbmwKhNyc13h05BfEOQv05bx72nf+LSg73z58opekso7xNXwJFfuK1r5r+/HwpcE/BV45g/LJR8XT23YXr7Ndzu+38xGviTIH4X+Cvyr0RVvFfFbf06LuB8L/mX/GLX74PcTvZFMzGWeRMfxFT6DsRN9EeN3ZlUPDDrx7WUicsnOCP5fQMf49CBXPGcG+cXYDwz+zgjyuLYsl49vgQfiz7h7aq7TPTXX+Sr1Weh3S+WN6HHKQ6m853QzjSzqSq8btOTfpr1utPlt6EEBD6T9b4d4I1++vpPKe9RDYL+fvMBY/AF7194PT4Rxk+yJVN7JIvZcPhHGZSL2X0NHvH9PhSd75fnK+Y+rdNeBRYun/H99Va+uytyqnABfeuvBc7Ff30Iu+rhc7OTjxNz8Liq8IDWXXUtb5g1kvLWursi8BTFnV7DeBkJ7/UneI8hFnwv2vNte+17zIFr3jSgbBBb9nVTe/3oEefR9aW7OF9Y8X5nr/eu3t8fg+e3syrDvvxNkg8DyeSV+H2Pt/Bt6w5C5XfvzueZ2rwTbj98ILs/Fj/CT+P56iEMxPAnun+r7le5Vkxhf1RqDAanc784N/ElhfPujd26wjzq+vykntL1wf3R8J+wZbCYRv++fk3K5P/od6Cpk+u87f7qKMjLYDYY3FL0hYOe0Y4KN31pGwhNW/uW8bXJoR34mw59flZXIpT8vYP0f1qIjPB9sufNB+9M70qqgL/nSFngIesJTcr33vpnqdx8VvevtS7VsIftTtGQLoR9JzbF0FqGrfbo62D8CbflqdM0TXhP8+C3K2GeD8D78PRrsVT8Kf2ou745T2B/+/06lrEGuf/AS6jWpyBeFeJZAr0K+hHoVPvfh/7EgXwwtud9FjfcFPCW05/xhCnPxFOOwD92nwhzsSwVrHpcRX0MucTbQnt8aG1gfy1KROfdoyOX9sSGX9TE0+HE+1ADtPbE0tDs57I/Y3uVg23v9+33T59M0sM+3aaG9KLePqC96Ui772lhr56Swfjy+5k9hbMU7KYz998Aqor8LX/9DvQ1qn07P9T/x+Fy/hwmvRMdyFen7/cHngfjDg53f5zpQt4ffSHvTg73ocYyv3+lWpOb6Ef/f2x52l4X2r+MsmZ7L+RNjbgS/m/Z1R2hHnDPwNSP4011EbzEz0I93C/H03tIO+v2p2Fn/5lT8DkdH9uZ/gPoW2jFuR2x+l5we2rsFnfcQj/Vs51hGQLsffnftEOJzPjQzl/xI9HHMRXvo49Hx+pgO9tlte+dF6+DFubD99Fza8fqK/syfTB3j0tm1lvNhVi55lNqdhVy89ci1t3y+We4zRfjEXPxMyeXcmUXMq+nT+mA/K5fzbj3xrAnxWG8K/ZmMv5khDvPXBbw+lTGclQtem4q99U8Ad6Senpvv247McQf4HeF3gD4WuehO+JDe7FznKMpH+qUai3Y+pHokepOonR8I6/2tF/qzkestwe9gveBLbzS4X9A3f3bQHxv8SK93KvILW8TZJ5U2+oFnBz/Ob2wvud515+T6nUv38AvBE+CJ9htxH2Sy9/vbHOhRxOO2xX+Z2m8IfpfuC9/xzcGmL+3br98W7MP9tfx8bKL+HOIQ/4IQh/rjd5yrc3lP91u0eH6Hvgl8K7Xf3/2OfSP8m6Ct5/fyObTh2uOj8hJjYL9X5/LW/kqI1zqvpOLzVeL7HbKraU86r6byVv8q8lfB7t9HU3kn6pxrWnvBWPKPodM59P8a+mq/av8a5KrvYMxeQ8fym0Kswh9B7+PwXd8U/Hw84I8EvT9C/5F2JI98Yf0brs3lPeyD9OdO+PoP3NICq/Z7m9/Srs3lv/TBoK9yWS7/r465tDcjl3H7GPq3hHZm0M7NwZ/HvzN+tD/nsr+0T/WuOJf1cxt0fPOcjf4Yzoe51H5f9D41fwz2c/EffY9u4Uf28+ivx8O5jviTqWMeYr7/Z5Y7r5hHu+OCvfvk/s7PZZ/OD+MxNpd31rnI5lBbPp/a+076d7A/7fcaZC3b8X6/A535xLcgzPs8Yl2Qy7v4eOJZEMZdb7a2WxDWl+2t73G+DX3b+b349sCP7bl99e8u1sVt0NK1ndfPXfT/Lvr3oYDnhvaFb0slDvn5V/wK3wm+nfUback/yX77KPtAbdydSrvC96SadwflHva39791vP+1v++tyuupxvfCk80nAu916s/AF/b+7JLrfXYstPeb4vxUquPuSvwfhZaO/iN6z9C/dWGu3zP0DiVa76AXwxfP71HCygUGIFd9USo2tp8AlvxC5Ob7H+b/qfj9gx+/v/cP8km5+PE/VfS0XN5R/J6zEJ77NQC+3iX173kD/3pD/H3A/hcvIs6FueQKi5Crtv4rqbnNG+BX0PsTvo3V3uJc3kUX5zK+E8CLwji9gd3iXOJ9IzXHi4P9n1NzncdS/R62JNd31Ceh/f7m97Mludxfp4Ivp56ay/teQ+BPg78k+HF7/wFfte7/4k8F22Zqbr62luby9jwR7HdR8Zai7/4K+73R9tKTj0GpYNGW+z3beBD6j6eCHw/y74d5Mtb7tOfv+9h/K+AnwpxY7nifpP2niftx5E+n4v9peO6fdR3/0/gQ/gFj7TlWrTZ+ANZ7udbED1kXkV6M/IfE7Pd44e+HdfoHeML/CW2/avuZVN59nglzL7wP+VPIT871fcT3zZOhjwtY9AkB+74krPvcKeApQW7eKej4reSEFjY+F5blMn5PMqbLwv5YFmTLctk/tp+Wm/OXwbMfz5dp28S2zL8yxLMQ2utN+/gvjLV4f+Is+SvnwjJsrsO/audMVwW+z8/rcjk/jf3+ZXvZzgv2ztWivt+rludyl54Jdt4zM8j9vtaAj+Wh3ata2C0P7VjPeVdjVX7EmvIbV2OY7wZsGnO5x88CS/4M+l6Pp2Br+VPBdyP8Jbmci9L9bvDRmMv75azgN7a3JBc9x3UK8hW5rDefv430YQXj0BBwQy7+LF8R7K2/Arwk2E0LfVUfToU+lTEVz2+HP0b+Y/CPwO7/98AeP/vyO8Q/33igV4b1INp58rXUXg8rse+CzFh2ncD25Te85eCVubyXrMwln3c8btd6q7BdDu3zxfNjvs8N0SeDrd8Iz3KfV6tyeXNZGWSdwjw2Bp+nIVsFvbIFPj30/3TGx/30+87pYN+nV+f6nvpXzovX4K3O5Q6+COwcZzY24ik3fS2Ve/drwec12Pl+Hn1eB3bO5jxNvPmhnhNsncctQn91LufQ7GDnO5Htrgl99XmoOP9Ov8V/E/xawKtzuV8rz34zFayceE0u99tPp5pW3iy+7gN3QkuuPD/y1uSyRiX3fcF+7wR/Gv1PIuuKXPy7g7/OzHfXEJf9OO9fmUs8XXKxE36d/qmfa3O5P7wO/niq7yL3gn3vWMv4vp7K/WQt476WeZD8nuDH7xX3hvbeDHYeb/NtPz+X9jSW63K5j60L878W+bXwF4B9/1rHfKyDvwY9r8m5YK9Br6e7GQO3dVcqfhzfOtr3ebUu+PM5tqBFu45zTW5+3tnO/ZvXYt045pW53F9jbG5b9p9nPj9XlfW5rNP7WGOfRXYfcum/hY3wW6wPrwfJP4H8rVD7vvkWetH+dfTW0v4Zub5zqs1PEcN98B3fGcRo/TW53E8/BU842qq9+8O8aI7uD3O3NsjvTmU/3Z8Kvo/6fsZHa/ULIf7PgD2eUbae/XMPOm7vC6nsg8+BPd5d2ZNn0kfX3rdnQvv87grvrFzOk66M11mMx9m5xPdZxuZs4vsisVvvi9Rvw/889dup6Efe54K+18vbzLuw8tENuc5JF4OVk/4Fvor5i3LJN5ch8/1NtOQ6p/+Gjw1gy7RP/4Tc/lv6sZ3bWx3k3vcLW7S3CCxb32eUX79DO++AN+ZyD/oh2P1THFEuemkYlw3wrLc4yP8cbGLbxpK5fd/vlMdtyiXvM3buZ+x737KA/wsfwqKfCdj5qbHz3WfAP0mlH0vB8mn/P0mlj8a632hcor7vPD9BtjH4Ez/efzUGbvenxP+DEM9PAxb9M3SENZ/P4uMd6meDP/OfBf8cWnb/gH4nYPnenIt/1b5/bGa8noFn7FzZeDPzZPvNYXxtvxn5c/TF7T6Hb9uJ7p6L/+fAbv8Xqc7Zzf8x9hGfGvycgq9ziEV1zHNPhnca+BxkjQH3CHLN5Rb23gZo79uNQe71ch14GWO0gn5tQW6+ccLW54HOhhSwaeloHjO8vyHXebA1l/+FckNh54t/BVvXuaR4B+Tan3wdgJ+cSxz2swGZ9f4WfKi/TbnkIavAOvuXQ/v+u5J+N4XxFO1cwXmC7VZQe9y3glcHe7e/BX3H0YT+6tCOx8ntrwzt+H60JZf1vY31sI01sYq6CXpbaLcp6DdCS+fUFjzfKzeDvT6ivHto1/uie9Dflst6bQp836+65fr/ux3cA56x73DG/ldvhz4z4B6hHcu7oWP5acHfqjCu23PJD+zPa2MN+O+s01bMTyt4b7bgO18+AHnU9z1I8gOhnde1Ah+IvfOcHbn+/zsX2IHtDvScHxyYi1x8r58dtO/8zHLlGs5tdgR+q+C/FbytjMOOXPJHFcV4P23eB229ddjZ79voOV7bx/6dHfp7JnTMx84IPLfrPN/Y42Z7z19TwB4bx7o9jIfbvy+V/q6nTfk8F51Ie/10g7edumcY356Mq8fB9dlBr2cuY3AQ2OOifNH0QRRh6RwcdA8E+/zVmbITWrVzKeF/8M8V/53wH7b+xlxkW6CdX/n83Qrf596GYKPa/3uV/cGP8oL9/Iudb+zn/+t8YxM2P8XHllxs9vNv9f96P/XPgtxn5Cbi2B/yEfdzf8Dq//Pwfw5t/rPg/cifhy+9QxjLQ3Kx/zX6lr8LHc+DsO2EfW4q3l25nLtbwGpX9XOp5B+7sNsc+rsrYOv8MhV7j7/zEvF6ofOrVNPiiVZO80t4v8BfxN3x0ys3l8m+dy7/oO3gJnjbwNoj3YK8G3Lhc+jbeehHehd07+CvO/04L8h75PJ/Et4d7HczFsb+725B1tRCx3yvd/vr3UK+E3+tg24G72bevb9aB9yaeit6KdjZh/4ph+byPzk0l3zI/NboSq5zZA98+22C14radr3BPr96B92It8Fzv3eDPba2cX+3hnZaB7wj6Po/sSeX9XJu0BPW+dYml3+T/0/mtQr6bXI5b0UfHMZrDzz574PejoB3BB376xPaN5b++dAet97whA+jXZ/jhwUfB4Mdp3zs57z4ZVX25ubnzF7Gcm8u60t6/82e3ZuL3a/Y579G/nyQPw9vby7n0yH4jWeXsM+niHeGOPYHv7tCvHuJT+1ckEt8onuF+KLM8aq9tvhoi06Mt23APlOt/xv6Zr3fMDaOw3L7la3W4+G57MvdYLf/roD7Yud4z4O3G2w/fYP+3iA/j/73BfcFX5DLeSndfqyffvB8zhwOr29op1+Qn4++7Q+nf0cE+yOQ725Be3+2gb+HunUue8Z+WoOPRF/ruA94D/T54PNDPEfmslfagPuF9o6E9r47nD4eFea3LfiCUMf1cnjQP6rFnB2F/Gj4R9Oe4/D4HB2wdYX/F+t5l+M=
+</DataArray>
+<DataArray type="Int32" Name="offsets" format="binary">
+AQAAAAAAAACAFAAAAAAAAIAUAAAAAAAARAYAAAAAAAA=eJwl2KH7OewVwOHvtt8222yzTRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRCE3e/1Xtdz/wGf9Jxzfv38/AQIEiJMhCgx4iRIkiJNhiw58hQoUqJMhSo16jRo0qJNhy49+gwYMmLMhCkz5ixYsmLNhi079hw4cuLMhSs37jx48uLNhy8/f/j5+UWAICHCRIgSI06CJCnSZMiSI0+BIiXKVKhSo06DJi3adOjSo8+AISPGTJgyY86CJSvWbNiyY8+BIyfOXLhy486DJy/efPjy80f9BAgSIkyEKDHiJEiSIk2GLDnyFChSokyFKjXqNGjSok2HLj36DBgyYsyEKTPmLFiyYs2GLTv2HDhy4syFKzfuPHjy4s2HLz9/0k+AICHCRIgSI06CJCnSZMiSI0+BIiXKVKhSo06DJi3adOjSo8+AISPGTJgyY86CJSvWbNiyY8+BIyfOXLhy486DJy/efPjy88sjQJAQYSJEiREnQZIUaTJkyZGnQJESZSpUqVGnQZMWbTp06dFnwJARYyZMmTFnwZIVazZs2bHnwJETZy5cuXHnwZMXbz58+fmzfgIECREmQpQYcRIkSZEmQ5YceQoUKVGmQpUadRo0adGmQ5cefQYMGTFmwpQZcxYsWbFmw5Ydew4cOXHmwpUbdx48efHmw5efv+gnQJAQYSJEiREnQZIUaTJkyZGnQJESZSpUqVGnQZMWbTp06dFnwJARYyZMmTFnwZIVazZs2bHnwJETZy5cuXHnwZMXbz58+fmrfgIECREmQpQYcRIkSZEmQ5YceQoUKVGmQpUadRo0adGmQ5cefQYMGTFmwpQZcxYsWbFmw5Ydew4cOXHmwpUbdx48efHmw/evv3/8vwgQJESYCFFixEmQJEWaDFly5ClQpESZClVq1GnQpEWbDl169BkwZMSYCVNmzFmwZMWaDVt27Dlw5MSZC1du3Hnw5MWbD9/fhp6/6SdAkBBhIkSJESdBkhRpMmTJkadAkRJlKlSpUadBkxZtOnTp0WfAkBFjJkyZMWfBkhVrNmzZsefAkRNnLly5cefBkxdvPnz5+bt+AgQJESZClBhxEiRJkSZDlhx5ChQpUaZClRp1GjRp0aZDlx59BgwZMWbClBlzFixZsWbDlh17Dhw5cebClRt3Hjx58ebDl59/6CdAkBBhIkSJESdBkhRpMmTJkadAkRJlKlSpUadBkxZtOnTp0WfAkBFjJkyZMWfBkhVrNmzZsefAkRNnLly5cefBkxdvPnz/8fvQ/4sAQUKEiRAlRpwESVKkyZAlR54CRUqUqVClRp0GTVq06dClR58BQ0aMmTBlxpwFS1as2bBlx54DR06cuXDlxp0HT168+fD9beH5p34CBAkRJkKUGHESJEmRJkOWHHkKFClRpkKVGnUaNGnRpkOXHn0GDBkxZsKUGXMWLFmxZsOWHXsOHDlx5sKVG3cePHnx5sOXn3/pJ0CQEGEiRIkRJ0GSFGkyZMmRp0CREmUqVKlRp0GTFm06dOnRZ8CQEWMmTJkxZ8GSFWs2bNmx58CRE2cuXLlx58GTF28+fPn5t34CBAkRJkKUGHESJEmRJkOWHHkKFClRpkKVGnUaNGnRpkOXHn0GDBkxZsKUGXMWLFmxZsOWHXsOHDlx5sKVG3cePHnx5sP3378v/L8IECREmAhRYsRJkCRFmgxZcuQpUKREmQpVatRp0KRFmw5devQZMGTEmAlTZsxZsGTFmg1bduw5cOTEmQtXbtx58OTFmw/f344d/9FPgCAhwkSIEiNOgiQp0mTIkiNPgSIlylSoUqNOgyYt2nTo0qPPgCEjxkyYMmPOgiUr1mzYsmPPgSMnzly4cuPOgycv3nz48vNf/QQIEiJMhCgx4iRIkiJNhiw58hQoUqJMhSo16jRo0qJNhy49+gwYMmLMhCkz5ixYsmLNhi079hw4cuLMhSs37jx48uLNhy8//9NPgCAhwkSIEiNOgiQp0mTIkiNPgSIlylSoUqNOgyYt2nTo0qPPgCEjxkyYMmPOgiUr1mzYsmPPgSMnzly4cuPOgycv3nz4/u/3Y98vAgQJESZClBhxEiRJkSZDlhx5ChQpUaZClRp1GjRp0aZDlx7/B1awsHM=
+</DataArray>
+<DataArray type="UInt8" Name="types" format="binary">
+AQAAAAAAAAAgBQAAAAAAACAFAAAAAAAAFAAAAAAAAAA=eJzj4hoFo2AUjIJRgA0AAHptM0E=
+</DataArray>
+</Cells>
+</Piece>
+</UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/tetrahedrons/netgen_cube.geo b/src/UnitTests/Meshes/data/tetrahedrons/netgen_cube.geo
new file mode 100644
index 0000000000000000000000000000000000000000..8fb3e84d74cbad14a0a247fdfdf4693f4cd57ddd
--- /dev/null
+++ b/src/UnitTests/Meshes/data/tetrahedrons/netgen_cube.geo
@@ -0,0 +1,4 @@
+# A cube
+algebraic3d
+solid cube = orthobrick (0, 0, 0; 1, 1, 1);
+tlo cube;
diff --git a/src/UnitTests/Meshes/data/tetrahedrons/netgen_cube.ng b/src/UnitTests/Meshes/data/tetrahedrons/netgen_cube.ng
new file mode 100644
index 0000000000000000000000000000000000000000..206ee5f23cbe2d716fe1d1f8baa8a2de80e17660
--- /dev/null
+++ b/src/UnitTests/Meshes/data/tetrahedrons/netgen_cube.ng
@@ -0,0 +1,32564 @@
+4913
+  0.000000  0.000000  0.000000
+  0.000000  0.000000  1.000000
+  1.000000  0.000000  0.000000
+  0.000000  1.000000  0.000000
+  1.000000  0.000000  1.000000
+  0.000000  1.000000  1.000000
+  1.000000  1.000000  0.000000
+  1.000000  1.000000  1.000000
+  0.000000  0.000000  0.500000
+  0.500000  0.000000  0.000000
+  0.000000  0.500000  0.000000
+  0.500000  0.500000  0.000000
+  0.500000  0.000000  0.500000
+  0.000000  0.500000  0.500000
+  0.500000  0.000000  1.000000
+  0.000000  0.500000  1.000000
+  0.500000  0.500000  0.500000
+  0.500000  0.500000  1.000000
+  1.000000  0.000000  0.500000
+  1.000000  0.500000  0.000000
+  0.000000  1.000000  0.500000
+  0.500000  1.000000  0.000000
+  0.500000  1.000000  0.500000
+  1.000000  0.500000  0.500000
+  1.000000  0.500000  1.000000
+  0.500000  1.000000  1.000000
+  1.000000  1.000000  0.500000
+  0.000000  0.000000  0.250000
+  0.250000  0.000000  0.000000
+  0.000000  0.250000  0.000000
+  0.250000  0.250000  0.000000
+  0.000000  0.000000  0.750000
+  0.250000  0.000000  0.750000
+  0.000000  0.250000  0.750000
+  0.250000  0.000000  1.000000
+  0.000000  0.250000  1.000000
+  0.250000  0.250000  0.750000
+  0.250000  0.250000  1.000000
+  0.750000  0.000000  0.000000
+  0.750000  0.000000  0.250000
+  1.000000  0.000000  0.250000
+  1.000000  0.250000  0.000000
+  0.000000  0.750000  0.000000
+  0.000000  0.750000  0.250000
+  0.000000  1.000000  0.250000
+  0.250000  1.000000  0.000000
+  0.250000  1.000000  0.250000
+  0.750000  0.000000  1.000000
+  1.000000  0.000000  0.750000
+  1.000000  0.250000  0.750000
+  1.000000  0.250000  1.000000
+  0.000000  0.750000  1.000000
+  0.000000  1.000000  0.750000
+  0.250000  1.000000  1.000000
+  0.750000  0.750000  0.000000
+  0.750000  0.750000  0.250000
+  1.000000  0.750000  0.000000
+  0.750000  1.000000  0.000000
+  1.000000  0.750000  0.250000
+  1.000000  1.000000  0.250000
+  0.750000  0.750000  1.000000
+  0.750000  1.000000  0.750000
+  1.000000  0.750000  1.000000
+  0.750000  1.000000  1.000000
+  1.000000  1.000000  0.750000
+  0.250000  0.000000  0.250000
+  0.000000  0.250000  0.250000
+  0.250000  0.250000  0.250000
+  0.250000  0.000000  0.500000
+  0.000000  0.250000  0.500000
+  0.250000  0.250000  0.500000
+  0.500000  0.250000  0.000000
+  0.500000  0.000000  0.250000
+  0.750000  0.250000  0.000000
+  0.250000  0.500000  0.000000
+  0.000000  0.500000  0.250000
+  0.250000  0.500000  0.250000
+  0.250000  0.750000  0.000000
+  0.500000  0.250000  0.250000
+  0.500000  0.500000  0.250000
+  0.750000  0.500000  0.000000
+  0.500000  0.750000  0.000000
+  0.500000  0.000000  0.750000
+  0.500000  0.250000  0.500000
+  0.750000  0.000000  0.500000
+  0.750000  0.250000  0.250000
+  0.000000  0.500000  0.750000
+  0.250000  0.500000  0.500000
+  0.250000  0.500000  0.750000
+  0.000000  0.750000  0.500000
+  0.250000  0.750000  0.250000
+  0.250000  0.750000  0.500000
+  0.500000  0.250000  0.750000
+  0.500000  0.250000  1.000000
+  0.750000  0.000000  0.750000
+  0.750000  0.250000  0.500000
+  0.750000  0.250000  0.750000
+  0.750000  0.250000  1.000000
+  0.250000  0.500000  1.000000
+  0.000000  0.750000  0.750000
+  0.250000  0.750000  1.000000
+  0.500000  0.500000  0.750000
+  0.750000  0.500000  0.250000
+  0.500000  0.750000  0.250000
+  0.500000  0.750000  0.500000
+  0.750000  0.500000  0.500000
+  0.750000  0.750000  0.500000
+  0.250000  0.750000  0.750000
+  0.500000  0.750000  0.750000
+  0.750000  0.500000  0.750000
+  0.750000  0.500000  1.000000
+  0.500000  0.750000  1.000000
+  0.750000  0.750000  0.750000
+  1.000000  0.250000  0.250000
+  1.000000  0.250000  0.500000
+  1.000000  0.500000  0.250000
+  0.250000  1.000000  0.500000
+  0.250000  1.000000  0.750000
+  0.500000  1.000000  0.250000
+  0.750000  1.000000  0.250000
+  0.500000  1.000000  0.750000
+  0.750000  1.000000  0.500000
+  1.000000  0.500000  0.750000
+  1.000000  0.750000  0.500000
+  1.000000  0.750000  0.750000
+  0.000000  0.000000  0.125000
+  0.125000  0.000000  0.000000
+  0.000000  0.125000  0.000000
+  0.125000  0.125000  0.000000
+  0.000000  0.000000  0.875000
+  0.125000  0.000000  0.875000
+  0.000000  0.125000  0.875000
+  0.125000  0.000000  1.000000
+  0.000000  0.125000  1.000000
+  0.125000  0.125000  0.875000
+  0.125000  0.125000  1.000000
+  0.875000  0.000000  0.000000
+  0.875000  0.000000  0.125000
+  1.000000  0.000000  0.125000
+  1.000000  0.125000  0.000000
+  0.000000  0.875000  0.000000
+  0.000000  0.875000  0.125000
+  0.000000  1.000000  0.125000
+  0.125000  1.000000  0.000000
+  0.125000  1.000000  0.125000
+  0.875000  0.000000  1.000000
+  1.000000  0.000000  0.875000
+  1.000000  0.125000  0.875000
+  1.000000  0.125000  1.000000
+  0.000000  0.875000  1.000000
+  0.000000  1.000000  0.875000
+  0.125000  1.000000  1.000000
+  0.875000  0.875000  0.000000
+  0.875000  0.875000  0.125000
+  1.000000  0.875000  0.000000
+  0.875000  1.000000  0.000000
+  1.000000  0.875000  0.125000
+  1.000000  1.000000  0.125000
+  0.875000  0.875000  1.000000
+  0.875000  1.000000  0.875000
+  1.000000  0.875000  1.000000
+  0.875000  1.000000  1.000000
+  1.000000  1.000000  0.875000
+  0.000000  0.000000  0.375000
+  0.000000  0.000000  0.625000
+  0.125000  0.000000  0.375000
+  0.000000  0.125000  0.375000
+  0.125000  0.125000  0.375000
+  0.125000  0.000000  0.500000
+  0.000000  0.125000  0.500000
+  0.125000  0.125000  0.500000
+  0.375000  0.000000  0.000000
+  0.625000  0.000000  0.000000
+  0.375000  0.000000  0.125000
+  0.500000  0.125000  0.000000
+  0.500000  0.000000  0.125000
+  0.625000  0.125000  0.000000
+  0.000000  0.375000  0.000000
+  0.000000  0.625000  0.000000
+  0.000000  0.375000  0.125000
+  0.125000  0.500000  0.000000
+  0.000000  0.500000  0.125000
+  0.125000  0.500000  0.125000
+  0.125000  0.625000  0.000000
+  0.375000  0.375000  0.000000
+  0.625000  0.625000  0.000000
+  0.375000  0.375000  0.125000
+  0.500000  0.375000  0.000000
+  0.375000  0.500000  0.000000
+  0.500000  0.375000  0.125000
+  0.500000  0.500000  0.125000
+  0.625000  0.500000  0.000000
+  0.500000  0.625000  0.000000
+  0.375000  0.000000  0.625000
+  0.625000  0.000000  0.375000
+  0.375000  0.000000  0.500000
+  0.500000  0.000000  0.375000
+  0.500000  0.125000  0.375000
+  0.500000  0.000000  0.625000
+  0.500000  0.125000  0.500000
+  0.625000  0.000000  0.500000
+  0.625000  0.125000  0.375000
+  0.000000  0.375000  0.625000
+  0.000000  0.625000  0.375000
+  0.000000  0.375000  0.500000
+  0.000000  0.500000  0.375000
+  0.000000  0.500000  0.625000
+  0.125000  0.500000  0.500000
+  0.125000  0.500000  0.625000
+  0.000000  0.625000  0.500000
+  0.125000  0.625000  0.375000
+  0.125000  0.625000  0.500000
+  0.375000  0.000000  1.000000
+  0.625000  0.000000  1.000000
+  0.500000  0.000000  0.875000
+  0.500000  0.125000  0.875000
+  0.500000  0.125000  1.000000
+  0.625000  0.000000  0.875000
+  0.625000  0.125000  0.750000
+  0.625000  0.125000  0.875000
+  0.625000  0.125000  1.000000
+  0.000000  0.375000  1.000000
+  0.000000  0.625000  1.000000
+  0.000000  0.500000  0.875000
+  0.125000  0.500000  1.000000
+  0.000000  0.625000  0.875000
+  0.125000  0.625000  1.000000
+  0.375000  0.375000  0.625000
+  0.625000  0.625000  0.375000
+  0.375000  0.375000  0.500000
+  0.375000  0.500000  0.375000
+  0.500000  0.500000  0.375000
+  0.500000  0.375000  0.500000
+  0.375000  0.500000  0.500000
+  0.500000  0.375000  0.625000
+  0.500000  0.500000  0.625000
+  0.625000  0.500000  0.375000
+  0.500000  0.625000  0.375000
+  0.500000  0.625000  0.500000
+  0.625000  0.500000  0.500000
+  0.625000  0.625000  0.500000
+  0.375000  0.375000  1.000000
+  0.625000  0.625000  1.000000
+  0.375000  0.500000  0.875000
+  0.500000  0.375000  1.000000
+  0.375000  0.500000  1.000000
+  0.500000  0.500000  0.875000
+  0.375000  0.625000  0.875000
+  0.500000  0.625000  0.875000
+  0.625000  0.500000  0.875000
+  0.625000  0.500000  1.000000
+  0.500000  0.625000  1.000000
+  0.625000  0.625000  0.875000
+  1.000000  0.000000  0.375000
+  1.000000  0.000000  0.625000
+  0.875000  0.000000  0.500000
+  0.875000  0.000000  0.625000
+  1.000000  0.125000  0.375000
+  1.000000  0.125000  0.500000
+  1.000000  0.375000  0.000000
+  1.000000  0.625000  0.000000
+  0.875000  0.375000  0.000000
+  0.875000  0.500000  0.000000
+  0.875000  0.375000  0.125000
+  0.875000  0.375000  0.250000
+  0.875000  0.500000  0.125000
+  1.000000  0.375000  0.125000
+  1.000000  0.500000  0.125000
+  0.000000  1.000000  0.375000
+  0.000000  1.000000  0.625000
+  0.000000  0.875000  0.500000
+  0.000000  0.875000  0.625000
+  0.125000  0.875000  0.625000
+  0.125000  1.000000  0.500000
+  0.125000  1.000000  0.625000
+  0.375000  1.000000  0.000000
+  0.625000  1.000000  0.000000
+  0.375000  0.875000  0.000000
+  0.500000  0.875000  0.000000
+  0.375000  0.875000  0.125000
+  0.500000  0.875000  0.125000
+  0.500000  1.000000  0.125000
+  0.625000  1.000000  0.125000
+  0.375000  1.000000  0.375000
+  0.625000  1.000000  0.625000
+  0.375000  0.875000  0.500000
+  0.500000  0.875000  0.500000
+  0.500000  0.875000  0.625000
+  0.375000  1.000000  0.500000
+  0.500000  1.000000  0.375000
+  0.500000  1.000000  0.625000
+  0.625000  1.000000  0.500000
+  1.000000  0.375000  0.625000
+  1.000000  0.625000  0.375000
+  0.875000  0.375000  0.625000
+  0.875000  0.500000  0.500000
+  0.875000  0.500000  0.625000
+  1.000000  0.375000  0.500000
+  1.000000  0.500000  0.375000
+  1.000000  0.500000  0.625000
+  1.000000  0.625000  0.500000
+  1.000000  0.375000  1.000000
+  1.000000  0.625000  1.000000
+  0.875000  0.375000  1.000000
+  0.875000  0.500000  1.000000
+  1.000000  0.500000  0.875000
+  1.000000  0.625000  0.875000
+  0.375000  1.000000  1.000000
+  0.625000  1.000000  1.000000
+  0.375000  0.875000  1.000000
+  0.500000  0.875000  1.000000
+  0.375000  1.000000  0.875000
+  0.500000  1.000000  0.875000
+  1.000000  1.000000  0.375000
+  1.000000  1.000000  0.625000
+  0.875000  0.875000  0.500000
+  0.875000  0.875000  0.625000
+  0.875000  1.000000  0.375000
+  0.875000  1.000000  0.500000
+  1.000000  0.875000  0.500000
+  1.000000  0.875000  0.625000
+  0.125000  0.000000  0.125000
+  0.000000  0.125000  0.125000
+  0.125000  0.125000  0.125000
+  0.125000  0.000000  0.250000
+  0.000000  0.125000  0.250000
+  0.125000  0.125000  0.250000
+  0.250000  0.125000  0.000000
+  0.250000  0.000000  0.125000
+  0.375000  0.125000  0.000000
+  0.125000  0.250000  0.000000
+  0.000000  0.250000  0.125000
+  0.125000  0.250000  0.125000
+  0.125000  0.375000  0.000000
+  0.250000  0.125000  0.125000
+  0.250000  0.250000  0.125000
+  0.375000  0.250000  0.000000
+  0.250000  0.375000  0.000000
+  0.125000  0.000000  0.750000
+  0.000000  0.125000  0.750000
+  0.125000  0.125000  0.750000
+  0.125000  0.000000  0.625000
+  0.000000  0.125000  0.625000
+  0.125000  0.125000  0.625000
+  0.250000  0.000000  0.875000
+  0.250000  0.125000  0.750000
+  0.250000  0.000000  0.625000
+  0.250000  0.125000  0.625000
+  0.375000  0.000000  0.750000
+  0.375000  0.125000  0.625000
+  0.000000  0.250000  0.875000
+  0.125000  0.250000  0.750000
+  0.125000  0.250000  0.875000
+  0.000000  0.250000  0.625000
+  0.000000  0.375000  0.750000
+  0.125000  0.375000  0.625000
+  0.125000  0.375000  0.750000
+  0.250000  0.125000  0.875000
+  0.250000  0.125000  1.000000
+  0.375000  0.000000  0.875000
+  0.375000  0.125000  0.750000
+  0.375000  0.125000  0.875000
+  0.375000  0.125000  1.000000
+  0.125000  0.250000  1.000000
+  0.000000  0.375000  0.875000
+  0.125000  0.375000  1.000000
+  0.250000  0.250000  0.875000
+  0.125000  0.250000  0.625000
+  0.250000  0.250000  0.625000
+  0.375000  0.250000  0.625000
+  0.250000  0.375000  0.625000
+  0.250000  0.375000  0.750000
+  0.375000  0.250000  0.750000
+  0.375000  0.375000  0.750000
+  0.125000  0.375000  0.875000
+  0.250000  0.375000  0.875000
+  0.375000  0.250000  0.875000
+  0.375000  0.250000  1.000000
+  0.250000  0.375000  1.000000
+  0.375000  0.375000  0.875000
+  0.750000  0.000000  0.125000
+  0.875000  0.125000  0.000000
+  0.625000  0.000000  0.125000
+  0.750000  0.125000  0.000000
+  0.875000  0.000000  0.250000
+  0.875000  0.125000  0.125000
+  0.625000  0.000000  0.250000
+  0.750000  0.125000  0.125000
+  0.750000  0.000000  0.375000
+  0.750000  0.125000  0.250000
+  1.000000  0.125000  0.125000
+  0.875000  0.000000  0.375000
+  1.000000  0.125000  0.250000
+  0.875000  0.250000  0.000000
+  0.875000  0.125000  0.250000
+  0.875000  0.250000  0.125000
+  1.000000  0.250000  0.125000
+  0.000000  0.750000  0.125000
+  0.125000  0.875000  0.000000
+  0.000000  0.625000  0.125000
+  0.125000  0.750000  0.000000
+  0.125000  0.750000  0.125000
+  0.000000  0.875000  0.250000
+  0.125000  0.875000  0.125000
+  0.125000  0.875000  0.250000
+  0.000000  0.625000  0.250000
+  0.000000  0.750000  0.375000
+  0.125000  0.750000  0.250000
+  0.125000  0.750000  0.375000
+  0.125000  1.000000  0.250000
+  0.000000  0.875000  0.375000
+  0.125000  0.875000  0.375000
+  0.125000  1.000000  0.375000
+  0.250000  1.000000  0.125000
+  0.250000  0.875000  0.000000
+  0.250000  0.875000  0.125000
+  0.375000  1.000000  0.125000
+  0.250000  0.875000  0.250000
+  0.250000  0.875000  0.375000
+  0.250000  1.000000  0.375000
+  0.375000  1.000000  0.250000
+  0.875000  0.000000  0.875000
+  0.875000  0.125000  0.875000
+  0.875000  0.125000  1.000000
+  0.750000  0.000000  0.875000
+  0.750000  0.125000  0.875000
+  0.750000  0.125000  1.000000
+  0.875000  0.125000  0.750000
+  1.000000  0.125000  0.750000
+  0.875000  0.000000  0.750000
+  1.000000  0.125000  0.625000
+  1.000000  0.250000  0.875000
+  0.875000  0.250000  0.750000
+  0.875000  0.250000  0.875000
+  1.000000  0.250000  0.625000
+  1.000000  0.375000  0.750000
+  0.875000  0.250000  1.000000
+  1.000000  0.375000  0.875000
+  0.000000  0.875000  0.875000
+  0.125000  0.875000  1.000000
+  0.000000  0.750000  0.875000
+  0.125000  0.750000  1.000000
+  0.125000  1.000000  0.875000
+  0.000000  0.875000  0.750000
+  0.125000  0.875000  0.875000
+  0.125000  1.000000  0.750000
+  0.250000  0.875000  1.000000
+  0.250000  1.000000  0.875000
+  0.750000  0.750000  0.125000
+  0.875000  0.750000  0.000000
+  0.750000  0.875000  0.000000
+  0.625000  0.625000  0.125000
+  0.750000  0.625000  0.000000
+  0.625000  0.750000  0.000000
+  0.750000  0.625000  0.125000
+  0.875000  0.750000  0.125000
+  0.750000  0.875000  0.125000
+  0.875000  0.750000  0.250000
+  0.875000  0.875000  0.250000
+  0.625000  0.625000  0.250000
+  0.625000  0.750000  0.125000
+  0.750000  0.625000  0.250000
+  0.625000  0.750000  0.250000
+  0.750000  0.625000  0.375000
+  0.750000  0.750000  0.375000
+  0.750000  0.875000  0.250000
+  1.000000  0.750000  0.125000
+  0.875000  0.625000  0.000000
+  0.875000  0.625000  0.125000
+  0.875000  0.625000  0.250000
+  1.000000  0.625000  0.125000
+  0.875000  1.000000  0.125000
+  0.625000  0.875000  0.000000
+  0.625000  0.875000  0.125000
+  0.750000  1.000000  0.125000
+  1.000000  0.875000  0.250000
+  0.875000  0.625000  0.375000
+  0.875000  0.750000  0.375000
+  1.000000  0.625000  0.250000
+  1.000000  0.750000  0.375000
+  0.875000  0.875000  0.375000
+  0.875000  1.000000  0.250000
+  1.000000  0.875000  0.375000
+  0.750000  0.875000  0.875000
+  0.875000  0.750000  1.000000
+  0.750000  0.875000  1.000000
+  0.875000  0.875000  0.875000
+  0.625000  0.750000  0.875000
+  0.750000  0.625000  1.000000
+  0.625000  0.750000  1.000000
+  0.750000  0.750000  0.875000
+  0.625000  0.875000  0.875000
+  0.875000  0.750000  0.875000
+  0.750000  1.000000  0.875000
+  0.875000  1.000000  0.750000
+  0.625000  0.875000  0.750000
+  0.750000  0.875000  0.750000
+  0.625000  1.000000  0.750000
+  0.750000  1.000000  0.625000
+  1.000000  0.875000  0.875000
+  0.875000  0.625000  1.000000
+  1.000000  0.750000  0.875000
+  0.625000  0.875000  1.000000
+  0.625000  1.000000  0.875000
+  0.875000  0.875000  0.750000
+  0.875000  1.000000  0.625000
+  1.000000  0.875000  0.750000
+  0.250000  0.125000  0.250000
+  0.250000  0.000000  0.375000
+  0.375000  0.125000  0.125000
+  0.375000  0.000000  0.250000
+  0.375000  0.125000  0.250000
+  0.125000  0.250000  0.250000
+  0.000000  0.250000  0.375000
+  0.125000  0.250000  0.375000
+  0.125000  0.375000  0.125000
+  0.000000  0.375000  0.250000
+  0.125000  0.375000  0.250000
+  0.250000  0.125000  0.375000
+  0.250000  0.250000  0.375000
+  0.375000  0.250000  0.125000
+  0.250000  0.375000  0.125000
+  0.250000  0.375000  0.250000
+  0.375000  0.250000  0.250000
+  0.375000  0.375000  0.250000
+  0.250000  0.125000  0.500000
+  0.375000  0.000000  0.375000
+  0.375000  0.125000  0.375000
+  0.375000  0.125000  0.500000
+  0.125000  0.250000  0.500000
+  0.000000  0.375000  0.375000
+  0.125000  0.375000  0.375000
+  0.125000  0.375000  0.500000
+  0.250000  0.375000  0.375000
+  0.375000  0.250000  0.375000
+  0.375000  0.375000  0.375000
+  0.375000  0.250000  0.500000
+  0.250000  0.375000  0.500000
+  0.500000  0.125000  0.125000
+  0.625000  0.250000  0.000000
+  0.500000  0.250000  0.125000
+  0.625000  0.375000  0.000000
+  0.625000  0.125000  0.125000
+  0.500000  0.125000  0.250000
+  0.625000  0.125000  0.250000
+  0.625000  0.250000  0.125000
+  0.750000  0.375000  0.000000
+  0.750000  0.250000  0.125000
+  0.250000  0.500000  0.125000
+  0.250000  0.625000  0.000000
+  0.375000  0.500000  0.125000
+  0.375000  0.625000  0.000000
+  0.125000  0.500000  0.250000
+  0.125000  0.625000  0.125000
+  0.125000  0.500000  0.375000
+  0.125000  0.625000  0.250000
+  0.250000  0.625000  0.125000
+  0.375000  0.500000  0.250000
+  0.375000  0.625000  0.125000
+  0.250000  0.500000  0.375000
+  0.250000  0.625000  0.250000
+  0.375000  0.625000  0.250000
+  0.375000  0.750000  0.000000
+  0.250000  0.750000  0.125000
+  0.375000  0.750000  0.125000
+  0.500000  0.375000  0.250000
+  0.625000  0.375000  0.125000
+  0.500000  0.250000  0.375000
+  0.625000  0.250000  0.250000
+  0.625000  0.375000  0.250000
+  0.625000  0.500000  0.125000
+  0.500000  0.625000  0.125000
+  0.500000  0.375000  0.375000
+  0.625000  0.500000  0.250000
+  0.500000  0.625000  0.250000
+  0.750000  0.375000  0.125000
+  0.750000  0.500000  0.125000
+  0.500000  0.750000  0.125000
+  0.500000  0.125000  0.625000
+  0.625000  0.000000  0.625000
+  0.625000  0.125000  0.500000
+  0.500000  0.125000  0.750000
+  0.625000  0.000000  0.750000
+  0.625000  0.125000  0.625000
+  0.625000  0.250000  0.375000
+  0.500000  0.250000  0.625000
+  0.625000  0.250000  0.500000
+  0.625000  0.375000  0.375000
+  0.750000  0.125000  0.375000
+  0.750000  0.000000  0.625000
+  0.750000  0.125000  0.500000
+  0.875000  0.125000  0.375000
+  0.750000  0.250000  0.375000
+  0.750000  0.375000  0.250000
+  0.875000  0.250000  0.250000
+  0.125000  0.500000  0.750000
+  0.000000  0.625000  0.625000
+  0.125000  0.500000  0.875000
+  0.000000  0.625000  0.750000
+  0.125000  0.625000  0.750000
+  0.250000  0.500000  0.625000
+  0.250000  0.625000  0.375000
+  0.250000  0.625000  0.500000
+  0.375000  0.500000  0.625000
+  0.375000  0.625000  0.375000
+  0.375000  0.625000  0.500000
+  0.125000  0.625000  0.625000
+  0.250000  0.625000  0.625000
+  0.250000  0.500000  0.875000
+  0.375000  0.500000  0.750000
+  0.375000  0.625000  0.625000
+  0.250000  0.625000  0.750000
+  0.375000  0.625000  0.750000
+  0.125000  0.750000  0.500000
+  0.000000  0.750000  0.625000
+  0.125000  0.750000  0.625000
+  0.125000  0.875000  0.500000
+  0.250000  0.750000  0.375000
+  0.375000  0.750000  0.250000
+  0.375000  0.750000  0.375000
+  0.375000  0.875000  0.250000
+  0.375000  0.750000  0.500000
+  0.250000  0.750000  0.625000
+  0.375000  0.750000  0.625000
+  0.250000  0.875000  0.500000
+  0.375000  0.875000  0.375000
+  0.500000  0.250000  0.875000
+  0.625000  0.250000  0.625000
+  0.625000  0.250000  0.750000
+  0.500000  0.375000  0.750000
+  0.625000  0.375000  0.500000
+  0.625000  0.375000  0.625000
+  0.625000  0.375000  0.750000
+  0.625000  0.250000  0.875000
+  0.625000  0.250000  1.000000
+  0.500000  0.375000  0.875000
+  0.625000  0.375000  0.875000
+  0.625000  0.375000  1.000000
+  0.750000  0.125000  0.625000
+  0.750000  0.125000  0.750000
+  0.875000  0.125000  0.500000
+  0.875000  0.125000  0.625000
+  0.750000  0.250000  0.625000
+  0.750000  0.375000  0.375000
+  0.750000  0.375000  0.500000
+  0.875000  0.250000  0.375000
+  0.875000  0.250000  0.500000
+  0.875000  0.375000  0.375000
+  0.750000  0.250000  0.875000
+  0.750000  0.375000  0.625000
+  0.750000  0.375000  0.750000
+  0.875000  0.250000  0.625000
+  0.875000  0.375000  0.500000
+  0.875000  0.375000  0.750000
+  0.750000  0.375000  0.875000
+  0.750000  0.375000  1.000000
+  0.875000  0.375000  0.875000
+  0.125000  0.625000  0.875000
+  0.250000  0.625000  1.000000
+  0.250000  0.625000  0.875000
+  0.375000  0.625000  1.000000
+  0.125000  0.750000  0.875000
+  0.125000  0.750000  0.750000
+  0.125000  0.875000  0.750000
+  0.250000  0.750000  0.875000
+  0.375000  0.750000  1.000000
+  0.250000  0.875000  0.875000
+  0.500000  0.625000  0.625000
+  0.625000  0.500000  0.625000
+  0.625000  0.625000  0.625000
+  0.500000  0.625000  0.750000
+  0.625000  0.500000  0.750000
+  0.625000  0.625000  0.750000
+  0.750000  0.500000  0.375000
+  0.875000  0.500000  0.250000
+  0.500000  0.750000  0.375000
+  0.625000  0.750000  0.375000
+  0.500000  0.875000  0.250000
+  0.625000  0.875000  0.250000
+  0.625000  0.750000  0.500000
+  0.500000  0.750000  0.625000
+  0.625000  0.750000  0.625000
+  0.500000  0.875000  0.375000
+  0.625000  0.875000  0.375000
+  0.625000  0.875000  0.500000
+  0.750000  0.625000  0.500000
+  0.750000  0.500000  0.625000
+  0.875000  0.500000  0.375000
+  0.875000  0.625000  0.500000
+  0.750000  0.625000  0.625000
+  0.750000  0.750000  0.625000
+  0.750000  0.875000  0.375000
+  0.750000  0.875000  0.500000
+  0.875000  0.750000  0.500000
+  0.375000  0.750000  0.750000
+  0.375000  0.750000  0.875000
+  0.250000  0.875000  0.625000
+  0.250000  0.875000  0.750000
+  0.375000  0.875000  0.750000
+  0.500000  0.750000  0.875000
+  0.625000  0.750000  0.750000
+  0.375000  0.875000  0.625000
+  0.500000  0.875000  0.750000
+  0.625000  0.875000  0.625000
+  0.750000  0.500000  0.875000
+  0.750000  0.625000  0.750000
+  0.875000  0.500000  0.750000
+  0.875000  0.625000  0.625000
+  0.875000  0.625000  0.750000
+  0.750000  0.625000  0.875000
+  0.875000  0.500000  0.875000
+  0.875000  0.625000  0.875000
+  0.375000  0.875000  0.875000
+  0.500000  0.875000  0.875000
+  0.750000  0.875000  0.625000
+  0.875000  0.750000  0.625000
+  0.875000  0.750000  0.750000
+  1.000000  0.250000  0.375000
+  1.000000  0.375000  0.250000
+  1.000000  0.375000  0.375000
+  0.250000  1.000000  0.625000
+  0.375000  1.000000  0.625000
+  0.375000  1.000000  0.750000
+  0.625000  1.000000  0.250000
+  0.625000  1.000000  0.375000
+  0.750000  1.000000  0.375000
+  1.000000  0.625000  0.625000
+  1.000000  0.625000  0.750000
+  1.000000  0.750000  0.625000
+  0.000000  0.000000  0.062500
+  0.062500  0.000000  0.000000
+  0.000000  0.062500  0.000000
+  0.062500  0.062500  0.000000
+  0.000000  0.000000  0.937500
+  0.062500  0.000000  0.937500
+  0.000000  0.062500  0.937500
+  0.062500  0.000000  1.000000
+  0.000000  0.062500  1.000000
+  0.062500  0.062500  0.937500
+  0.062500  0.062500  1.000000
+  0.937500  0.000000  0.000000
+  0.937500  0.000000  0.062500
+  1.000000  0.000000  0.062500
+  1.000000  0.062500  0.000000
+  0.000000  0.937500  0.000000
+  0.000000  0.937500  0.062500
+  0.000000  1.000000  0.062500
+  0.062500  1.000000  0.000000
+  0.062500  1.000000  0.062500
+  0.937500  0.000000  1.000000
+  1.000000  0.000000  0.937500
+  1.000000  0.062500  0.937500
+  1.000000  0.062500  1.000000
+  0.000000  0.937500  1.000000
+  0.000000  1.000000  0.937500
+  0.062500  1.000000  1.000000
+  0.937500  0.937500  0.000000
+  0.937500  0.937500  0.062500
+  1.000000  0.937500  0.000000
+  0.937500  1.000000  0.000000
+  1.000000  0.937500  0.062500
+  1.000000  1.000000  0.062500
+  0.937500  0.937500  1.000000
+  0.937500  1.000000  0.937500
+  1.000000  0.937500  1.000000
+  0.937500  1.000000  1.000000
+  1.000000  1.000000  0.937500
+  0.000000  0.000000  0.437500
+  0.000000  0.000000  0.562500
+  0.062500  0.000000  0.437500
+  0.000000  0.062500  0.437500
+  0.062500  0.062500  0.437500
+  0.062500  0.000000  0.500000
+  0.000000  0.062500  0.500000
+  0.062500  0.062500  0.500000
+  0.437500  0.000000  0.000000
+  0.562500  0.000000  0.000000
+  0.437500  0.000000  0.062500
+  0.500000  0.062500  0.000000
+  0.500000  0.000000  0.062500
+  0.562500  0.062500  0.000000
+  0.000000  0.437500  0.000000
+  0.000000  0.562500  0.000000
+  0.000000  0.437500  0.062500
+  0.062500  0.500000  0.000000
+  0.000000  0.500000  0.062500
+  0.062500  0.500000  0.062500
+  0.062500  0.562500  0.000000
+  0.437500  0.437500  0.000000
+  0.562500  0.562500  0.000000
+  0.437500  0.437500  0.062500
+  0.500000  0.437500  0.000000
+  0.437500  0.500000  0.000000
+  0.500000  0.437500  0.062500
+  0.500000  0.500000  0.062500
+  0.562500  0.500000  0.000000
+  0.500000  0.562500  0.000000
+  0.437500  0.000000  0.562500
+  0.562500  0.000000  0.437500
+  0.437500  0.000000  0.500000
+  0.500000  0.000000  0.437500
+  0.500000  0.062500  0.437500
+  0.500000  0.000000  0.562500
+  0.500000  0.062500  0.500000
+  0.562500  0.000000  0.500000
+  0.562500  0.062500  0.437500
+  0.000000  0.437500  0.562500
+  0.000000  0.562500  0.437500
+  0.000000  0.437500  0.500000
+  0.000000  0.500000  0.437500
+  0.000000  0.500000  0.562500
+  0.062500  0.500000  0.500000
+  0.062500  0.500000  0.562500
+  0.000000  0.562500  0.500000
+  0.062500  0.562500  0.437500
+  0.062500  0.562500  0.500000
+  0.437500  0.000000  1.000000
+  0.562500  0.000000  1.000000
+  0.500000  0.000000  0.937500
+  0.500000  0.062500  0.937500
+  0.500000  0.062500  1.000000
+  0.562500  0.000000  0.937500
+  0.562500  0.062500  0.875000
+  0.562500  0.062500  0.937500
+  0.562500  0.062500  1.000000
+  0.000000  0.437500  1.000000
+  0.000000  0.562500  1.000000
+  0.000000  0.500000  0.937500
+  0.062500  0.500000  1.000000
+  0.000000  0.562500  0.937500
+  0.062500  0.562500  1.000000
+  0.437500  0.437500  0.562500
+  0.562500  0.562500  0.437500
+  0.437500  0.437500  0.500000
+  0.437500  0.500000  0.437500
+  0.500000  0.500000  0.437500
+  0.500000  0.437500  0.500000
+  0.437500  0.500000  0.500000
+  0.500000  0.437500  0.562500
+  0.500000  0.500000  0.562500
+  0.562500  0.500000  0.437500
+  0.500000  0.562500  0.437500
+  0.500000  0.562500  0.500000
+  0.562500  0.500000  0.500000
+  0.562500  0.562500  0.500000
+  0.437500  0.437500  1.000000
+  0.562500  0.562500  1.000000
+  0.437500  0.500000  0.937500
+  0.500000  0.437500  1.000000
+  0.437500  0.500000  1.000000
+  0.500000  0.500000  0.937500
+  0.437500  0.562500  0.937500
+  0.500000  0.562500  0.937500
+  0.562500  0.500000  0.937500
+  0.562500  0.500000  1.000000
+  0.500000  0.562500  1.000000
+  0.562500  0.562500  0.937500
+  1.000000  0.000000  0.437500
+  1.000000  0.000000  0.562500
+  0.937500  0.000000  0.500000
+  0.937500  0.000000  0.562500
+  1.000000  0.062500  0.437500
+  1.000000  0.062500  0.500000
+  1.000000  0.437500  0.000000
+  1.000000  0.562500  0.000000
+  0.937500  0.437500  0.000000
+  0.937500  0.500000  0.000000
+  0.937500  0.437500  0.062500
+  0.937500  0.437500  0.125000
+  0.937500  0.500000  0.062500
+  1.000000  0.437500  0.062500
+  1.000000  0.500000  0.062500
+  0.000000  1.000000  0.437500
+  0.000000  1.000000  0.562500
+  0.000000  0.937500  0.500000
+  0.000000  0.937500  0.562500
+  0.062500  0.937500  0.562500
+  0.062500  1.000000  0.500000
+  0.062500  1.000000  0.562500
+  0.437500  1.000000  0.000000
+  0.562500  1.000000  0.000000
+  0.437500  0.937500  0.000000
+  0.500000  0.937500  0.000000
+  0.437500  0.937500  0.062500
+  0.500000  0.937500  0.062500
+  0.500000  1.000000  0.062500
+  0.562500  1.000000  0.062500
+  0.437500  1.000000  0.437500
+  0.562500  1.000000  0.562500
+  0.437500  0.937500  0.500000
+  0.500000  0.937500  0.500000
+  0.500000  0.937500  0.562500
+  0.437500  1.000000  0.500000
+  0.500000  1.000000  0.437500
+  0.500000  1.000000  0.562500
+  0.562500  1.000000  0.500000
+  1.000000  0.437500  0.562500
+  1.000000  0.562500  0.437500
+  0.937500  0.437500  0.562500
+  0.937500  0.500000  0.500000
+  0.937500  0.500000  0.562500
+  1.000000  0.437500  0.500000
+  1.000000  0.500000  0.437500
+  1.000000  0.500000  0.562500
+  1.000000  0.562500  0.500000
+  1.000000  0.437500  1.000000
+  1.000000  0.562500  1.000000
+  0.937500  0.437500  1.000000
+  0.937500  0.500000  1.000000
+  1.000000  0.500000  0.937500
+  1.000000  0.562500  0.937500
+  0.437500  1.000000  1.000000
+  0.562500  1.000000  1.000000
+  0.437500  0.937500  1.000000
+  0.500000  0.937500  1.000000
+  0.437500  1.000000  0.937500
+  0.500000  1.000000  0.937500
+  1.000000  1.000000  0.437500
+  1.000000  1.000000  0.562500
+  0.937500  0.937500  0.500000
+  0.937500  0.937500  0.562500
+  0.937500  1.000000  0.437500
+  0.937500  1.000000  0.500000
+  1.000000  0.937500  0.500000
+  1.000000  0.937500  0.562500
+  0.000000  0.000000  0.187500
+  0.000000  0.000000  0.312500
+  0.062500  0.000000  0.187500
+  0.000000  0.062500  0.187500
+  0.062500  0.062500  0.187500
+  0.062500  0.000000  0.250000
+  0.000000  0.062500  0.250000
+  0.062500  0.062500  0.250000
+  0.187500  0.000000  0.000000
+  0.312500  0.000000  0.000000
+  0.187500  0.000000  0.062500
+  0.250000  0.062500  0.000000
+  0.250000  0.000000  0.062500
+  0.312500  0.062500  0.000000
+  0.000000  0.187500  0.000000
+  0.000000  0.312500  0.000000
+  0.000000  0.187500  0.062500
+  0.062500  0.250000  0.000000
+  0.000000  0.250000  0.062500
+  0.062500  0.250000  0.062500
+  0.062500  0.312500  0.000000
+  0.187500  0.187500  0.000000
+  0.312500  0.312500  0.000000
+  0.187500  0.187500  0.062500
+  0.250000  0.187500  0.000000
+  0.187500  0.250000  0.000000
+  0.250000  0.187500  0.062500
+  0.250000  0.250000  0.062500
+  0.312500  0.250000  0.000000
+  0.250000  0.312500  0.000000
+  0.000000  0.000000  0.812500
+  0.000000  0.000000  0.687500
+  0.062500  0.000000  0.750000
+  0.000000  0.062500  0.750000
+  0.062500  0.062500  0.750000
+  0.062500  0.000000  0.687500
+  0.000000  0.062500  0.687500
+  0.062500  0.062500  0.687500
+  0.187500  0.000000  0.812500
+  0.312500  0.000000  0.687500
+  0.187500  0.000000  0.750000
+  0.250000  0.000000  0.812500
+  0.250000  0.062500  0.750000
+  0.250000  0.000000  0.687500
+  0.250000  0.062500  0.687500
+  0.312500  0.000000  0.750000
+  0.312500  0.062500  0.687500
+  0.000000  0.187500  0.812500
+  0.000000  0.312500  0.687500
+  0.000000  0.187500  0.750000
+  0.000000  0.250000  0.812500
+  0.062500  0.250000  0.750000
+  0.062500  0.250000  0.812500
+  0.000000  0.250000  0.687500
+  0.000000  0.312500  0.750000
+  0.062500  0.312500  0.687500
+  0.062500  0.312500  0.750000
+  0.187500  0.000000  1.000000
+  0.312500  0.000000  1.000000
+  0.250000  0.000000  0.937500
+  0.250000  0.062500  0.937500
+  0.250000  0.062500  1.000000
+  0.312500  0.000000  0.937500
+  0.312500  0.062500  0.875000
+  0.312500  0.062500  0.937500
+  0.312500  0.062500  1.000000
+  0.000000  0.187500  1.000000
+  0.000000  0.312500  1.000000
+  0.000000  0.250000  0.937500
+  0.062500  0.250000  1.000000
+  0.000000  0.312500  0.937500
+  0.062500  0.312500  1.000000
+  0.187500  0.187500  0.812500
+  0.312500  0.312500  0.687500
+  0.187500  0.187500  0.750000
+  0.250000  0.187500  0.750000
+  0.187500  0.250000  0.750000
+  0.250000  0.187500  0.812500
+  0.250000  0.250000  0.812500
+  0.187500  0.250000  0.687500
+  0.250000  0.250000  0.687500
+  0.312500  0.250000  0.687500
+  0.250000  0.312500  0.687500
+  0.250000  0.312500  0.750000
+  0.312500  0.250000  0.750000
+  0.312500  0.312500  0.750000
+  0.187500  0.187500  1.000000
+  0.312500  0.312500  1.000000
+  0.187500  0.250000  0.937500
+  0.250000  0.187500  1.000000
+  0.187500  0.250000  1.000000
+  0.250000  0.250000  0.937500
+  0.187500  0.312500  0.937500
+  0.250000  0.312500  0.937500
+  0.312500  0.250000  0.937500
+  0.312500  0.250000  1.000000
+  0.250000  0.312500  1.000000
+  0.312500  0.312500  0.937500
+  0.812500  0.000000  0.000000
+  0.687500  0.000000  0.000000
+  0.750000  0.000000  0.062500
+  0.812500  0.062500  0.000000
+  0.687500  0.000000  0.062500
+  0.750000  0.062500  0.000000
+  0.812500  0.000000  0.187500
+  0.687500  0.000000  0.312500
+  0.750000  0.000000  0.187500
+  0.812500  0.000000  0.250000
+  0.812500  0.062500  0.187500
+  0.687500  0.000000  0.250000
+  0.750000  0.062500  0.187500
+  0.750000  0.000000  0.312500
+  0.750000  0.062500  0.250000
+  1.000000  0.000000  0.187500
+  1.000000  0.000000  0.312500
+  0.937500  0.000000  0.250000
+  1.000000  0.062500  0.187500
+  0.937500  0.000000  0.312500
+  1.000000  0.062500  0.250000
+  1.000000  0.187500  0.000000
+  1.000000  0.312500  0.000000
+  0.937500  0.187500  0.000000
+  0.937500  0.187500  0.062500
+  1.000000  0.187500  0.062500
+  0.937500  0.250000  0.000000
+  0.937500  0.187500  0.125000
+  0.937500  0.250000  0.062500
+  1.000000  0.250000  0.062500
+  0.000000  0.812500  0.000000
+  0.000000  0.687500  0.000000
+  0.000000  0.750000  0.062500
+  0.062500  0.812500  0.000000
+  0.000000  0.687500  0.062500
+  0.062500  0.750000  0.000000
+  0.062500  0.750000  0.062500
+  0.000000  0.812500  0.187500
+  0.000000  0.687500  0.312500
+  0.000000  0.750000  0.187500
+  0.000000  0.812500  0.250000
+  0.062500  0.812500  0.187500
+  0.062500  0.812500  0.250000
+  0.000000  0.687500  0.250000
+  0.000000  0.750000  0.312500
+  0.062500  0.750000  0.250000
+  0.062500  0.750000  0.312500
+  0.000000  1.000000  0.187500
+  0.000000  1.000000  0.312500
+  0.000000  0.937500  0.250000
+  0.062500  1.000000  0.250000
+  0.000000  0.937500  0.312500
+  0.062500  0.937500  0.312500
+  0.062500  1.000000  0.312500
+  0.187500  1.000000  0.000000
+  0.312500  1.000000  0.000000
+  0.187500  0.937500  0.000000
+  0.187500  0.937500  0.062500
+  0.250000  1.000000  0.062500
+  0.250000  0.937500  0.000000
+  0.250000  0.937500  0.062500
+  0.312500  1.000000  0.062500
+  0.187500  1.000000  0.187500
+  0.312500  1.000000  0.312500
+  0.187500  0.937500  0.250000
+  0.187500  1.000000  0.250000
+  0.250000  1.000000  0.187500
+  0.250000  0.937500  0.250000
+  0.250000  0.937500  0.312500
+  0.250000  1.000000  0.312500
+  0.312500  1.000000  0.250000
+  0.812500  0.000000  1.000000
+  0.687500  0.000000  1.000000
+  0.812500  0.000000  0.937500
+  0.812500  0.062500  0.937500
+  0.812500  0.062500  1.000000
+  0.750000  0.000000  0.937500
+  0.750000  0.062500  0.937500
+  0.750000  0.062500  1.000000
+  0.812500  0.062500  0.875000
+  1.000000  0.000000  0.812500
+  1.000000  0.000000  0.687500
+  0.937500  0.000000  0.812500
+  1.000000  0.062500  0.750000
+  0.937500  0.000000  0.750000
+  1.000000  0.062500  0.687500
+  1.000000  0.187500  0.812500
+  1.000000  0.312500  0.687500
+  0.937500  0.187500  0.812500
+  1.000000  0.187500  0.750000
+  1.000000  0.250000  0.812500
+  0.937500  0.250000  0.750000
+  0.937500  0.250000  0.812500
+  1.000000  0.250000  0.687500
+  1.000000  0.312500  0.750000
+  1.000000  0.187500  1.000000
+  1.000000  0.312500  1.000000
+  0.937500  0.187500  1.000000
+  1.000000  0.250000  0.937500
+  0.937500  0.250000  1.000000
+  1.000000  0.312500  0.937500
+  0.000000  0.812500  1.000000
+  0.000000  0.687500  1.000000
+  0.000000  0.812500  0.937500
+  0.062500  0.812500  1.000000
+  0.000000  0.750000  0.937500
+  0.062500  0.750000  1.000000
+  0.000000  1.000000  0.812500
+  0.000000  1.000000  0.687500
+  0.000000  0.937500  0.812500
+  0.062500  1.000000  0.812500
+  0.000000  0.937500  0.750000
+  0.062500  0.937500  0.812500
+  0.062500  1.000000  0.750000
+  0.187500  1.000000  1.000000
+  0.312500  1.000000  1.000000
+  0.187500  0.937500  1.000000
+  0.187500  1.000000  0.937500
+  0.250000  0.937500  1.000000
+  0.250000  1.000000  0.937500
+  0.812500  0.812500  0.000000
+  0.687500  0.687500  0.000000
+  0.750000  0.750000  0.062500
+  0.812500  0.750000  0.000000
+  0.750000  0.812500  0.000000
+  0.687500  0.687500  0.062500
+  0.750000  0.687500  0.000000
+  0.687500  0.750000  0.000000
+  0.750000  0.687500  0.062500
+  0.812500  0.812500  0.187500
+  0.687500  0.687500  0.312500
+  0.750000  0.750000  0.187500
+  0.812500  0.750000  0.187500
+  0.750000  0.812500  0.187500
+  0.812500  0.750000  0.250000
+  0.812500  0.812500  0.250000
+  0.687500  0.687500  0.250000
+  0.687500  0.750000  0.187500
+  0.750000  0.687500  0.250000
+  0.687500  0.750000  0.250000
+  0.750000  0.687500  0.312500
+  0.750000  0.750000  0.312500
+  0.750000  0.812500  0.250000
+  1.000000  0.812500  0.000000
+  1.000000  0.687500  0.000000
+  0.937500  0.750000  0.000000
+  0.937500  0.750000  0.062500
+  1.000000  0.750000  0.062500
+  0.937500  0.687500  0.000000
+  0.937500  0.687500  0.062500
+  0.937500  0.687500  0.125000
+  1.000000  0.687500  0.062500
+  0.812500  1.000000  0.000000
+  0.687500  1.000000  0.000000
+  0.750000  0.937500  0.000000
+  0.750000  0.937500  0.062500
+  0.812500  1.000000  0.062500
+  0.687500  0.937500  0.000000
+  0.687500  0.937500  0.062500
+  0.750000  1.000000  0.062500
+  1.000000  0.812500  0.187500
+  1.000000  0.687500  0.312500
+  0.937500  0.750000  0.250000
+  1.000000  0.750000  0.187500
+  1.000000  0.812500  0.250000
+  0.937500  0.687500  0.312500
+  0.937500  0.750000  0.312500
+  1.000000  0.687500  0.250000
+  1.000000  0.750000  0.312500
+  1.000000  1.000000  0.187500
+  1.000000  1.000000  0.312500
+  0.937500  0.937500  0.250000
+  0.937500  1.000000  0.187500
+  1.000000  0.937500  0.250000
+  0.937500  0.937500  0.312500
+  0.937500  1.000000  0.250000
+  1.000000  0.937500  0.312500
+  0.812500  0.812500  1.000000
+  0.687500  0.687500  1.000000
+  0.750000  0.812500  0.937500
+  0.812500  0.750000  1.000000
+  0.750000  0.812500  1.000000
+  0.812500  0.812500  0.937500
+  0.687500  0.750000  0.937500
+  0.750000  0.687500  1.000000
+  0.687500  0.750000  1.000000
+  0.750000  0.750000  0.937500
+  0.687500  0.812500  0.937500
+  0.812500  0.750000  0.937500
+  0.812500  1.000000  0.812500
+  0.687500  1.000000  0.687500
+  0.750000  0.937500  0.812500
+  0.750000  1.000000  0.812500
+  0.812500  1.000000  0.750000
+  0.687500  0.937500  0.750000
+  0.750000  0.937500  0.750000
+  0.687500  1.000000  0.750000
+  0.750000  1.000000  0.687500
+  1.000000  0.812500  1.000000
+  1.000000  0.687500  1.000000
+  0.937500  0.750000  1.000000
+  1.000000  0.812500  0.937500
+  0.937500  0.687500  1.000000
+  1.000000  0.750000  0.937500
+  0.812500  1.000000  1.000000
+  0.687500  1.000000  1.000000
+  0.750000  0.937500  1.000000
+  0.750000  1.000000  0.937500
+  0.687500  0.937500  1.000000
+  0.687500  1.000000  0.937500
+  1.000000  1.000000  0.812500
+  1.000000  1.000000  0.687500
+  0.937500  0.937500  0.812500
+  0.937500  1.000000  0.750000
+  1.000000  0.937500  0.812500
+  0.937500  0.937500  0.750000
+  0.937500  1.000000  0.687500
+  1.000000  0.937500  0.750000
+  0.187500  0.000000  0.312500
+  0.312500  0.000000  0.187500
+  0.187500  0.000000  0.250000
+  0.250000  0.000000  0.187500
+  0.250000  0.062500  0.187500
+  0.250000  0.062500  0.250000
+  0.250000  0.000000  0.312500
+  0.312500  0.062500  0.187500
+  0.312500  0.000000  0.250000
+  0.312500  0.062500  0.250000
+  0.000000  0.187500  0.312500
+  0.000000  0.312500  0.187500
+  0.000000  0.187500  0.250000
+  0.000000  0.250000  0.187500
+  0.062500  0.250000  0.250000
+  0.000000  0.250000  0.312500
+  0.062500  0.250000  0.312500
+  0.062500  0.312500  0.187500
+  0.000000  0.312500  0.250000
+  0.062500  0.312500  0.250000
+  0.187500  0.187500  0.312500
+  0.312500  0.312500  0.187500
+  0.187500  0.187500  0.250000
+  0.187500  0.250000  0.187500
+  0.250000  0.250000  0.187500
+  0.250000  0.187500  0.250000
+  0.187500  0.250000  0.250000
+  0.250000  0.187500  0.312500
+  0.250000  0.250000  0.312500
+  0.312500  0.250000  0.187500
+  0.250000  0.312500  0.187500
+  0.250000  0.312500  0.250000
+  0.312500  0.250000  0.250000
+  0.312500  0.312500  0.250000
+  0.187500  0.000000  0.500000
+  0.312500  0.000000  0.500000
+  0.187500  0.000000  0.562500
+  0.250000  0.000000  0.562500
+  0.250000  0.000000  0.437500
+  0.250000  0.062500  0.437500
+  0.250000  0.062500  0.500000
+  0.312500  0.000000  0.437500
+  0.312500  0.062500  0.437500
+  0.312500  0.062500  0.500000
+  0.000000  0.187500  0.500000
+  0.000000  0.312500  0.500000
+  0.000000  0.187500  0.562500
+  0.000000  0.250000  0.562500
+  0.062500  0.250000  0.562500
+  0.000000  0.250000  0.437500
+  0.062500  0.250000  0.500000
+  0.000000  0.312500  0.437500
+  0.062500  0.312500  0.437500
+  0.062500  0.312500  0.500000
+  0.187500  0.187500  0.500000
+  0.312500  0.312500  0.500000
+  0.187500  0.187500  0.562500
+  0.250000  0.187500  0.562500
+  0.250000  0.250000  0.562500
+  0.187500  0.250000  0.437500
+  0.250000  0.250000  0.437500
+  0.250000  0.187500  0.500000
+  0.187500  0.250000  0.500000
+  0.250000  0.312500  0.437500
+  0.312500  0.250000  0.437500
+  0.312500  0.312500  0.437500
+  0.312500  0.250000  0.500000
+  0.250000  0.312500  0.500000
+  0.500000  0.187500  0.000000
+  0.500000  0.312500  0.000000
+  0.437500  0.187500  0.000000
+  0.437500  0.250000  0.000000
+  0.437500  0.187500  0.062500
+  0.437500  0.250000  0.062500
+  0.500000  0.187500  0.062500
+  0.562500  0.250000  0.000000
+  0.500000  0.250000  0.062500
+  0.562500  0.312500  0.000000
+  0.500000  0.000000  0.187500
+  0.500000  0.000000  0.312500
+  0.562500  0.000000  0.187500
+  0.562500  0.000000  0.250000
+  0.437500  0.000000  0.250000
+  0.437500  0.000000  0.312500
+  0.500000  0.062500  0.187500
+  0.562500  0.062500  0.187500
+  0.500000  0.062500  0.250000
+  0.562500  0.062500  0.250000
+  0.687500  0.187500  0.000000
+  0.812500  0.312500  0.000000
+  0.750000  0.187500  0.000000
+  0.750000  0.187500  0.062500
+  0.812500  0.250000  0.000000
+  0.687500  0.250000  0.000000
+  0.687500  0.187500  0.062500
+  0.687500  0.250000  0.062500
+  0.750000  0.312500  0.000000
+  0.750000  0.250000  0.062500
+  0.187500  0.500000  0.000000
+  0.312500  0.500000  0.000000
+  0.187500  0.437500  0.000000
+  0.250000  0.437500  0.000000
+  0.187500  0.437500  0.062500
+  0.250000  0.437500  0.062500
+  0.250000  0.500000  0.062500
+  0.250000  0.562500  0.000000
+  0.312500  0.500000  0.062500
+  0.312500  0.562500  0.000000
+  0.000000  0.500000  0.187500
+  0.000000  0.500000  0.312500
+  0.000000  0.562500  0.187500
+  0.000000  0.562500  0.250000
+  0.000000  0.437500  0.250000
+  0.000000  0.437500  0.312500
+  0.062500  0.500000  0.250000
+  0.062500  0.562500  0.187500
+  0.062500  0.500000  0.312500
+  0.062500  0.562500  0.250000
+  0.187500  0.500000  0.187500
+  0.312500  0.500000  0.312500
+  0.187500  0.437500  0.250000
+  0.250000  0.437500  0.250000
+  0.187500  0.437500  0.312500
+  0.250000  0.437500  0.312500
+  0.250000  0.500000  0.187500
+  0.187500  0.500000  0.250000
+  0.250000  0.562500  0.187500
+  0.312500  0.500000  0.250000
+  0.312500  0.562500  0.187500
+  0.250000  0.500000  0.312500
+  0.250000  0.562500  0.250000
+  0.312500  0.562500  0.250000
+  0.187500  0.687500  0.000000
+  0.312500  0.812500  0.000000
+  0.187500  0.750000  0.000000
+  0.250000  0.812500  0.000000
+  0.250000  0.687500  0.000000
+  0.187500  0.687500  0.062500
+  0.250000  0.687500  0.062500
+  0.312500  0.750000  0.000000
+  0.250000  0.750000  0.062500
+  0.312500  0.750000  0.062500
+  0.500000  0.312500  0.187500
+  0.500000  0.187500  0.312500
+  0.437500  0.187500  0.250000
+  0.437500  0.250000  0.250000
+  0.437500  0.187500  0.312500
+  0.437500  0.250000  0.312500
+  0.500000  0.250000  0.187500
+  0.500000  0.187500  0.250000
+  0.562500  0.250000  0.187500
+  0.500000  0.312500  0.250000
+  0.562500  0.312500  0.187500
+  0.500000  0.250000  0.312500
+  0.562500  0.250000  0.250000
+  0.562500  0.312500  0.250000
+  0.500000  0.500000  0.187500
+  0.500000  0.500000  0.312500
+  0.562500  0.562500  0.187500
+  0.562500  0.562500  0.250000
+  0.437500  0.437500  0.250000
+  0.437500  0.437500  0.312500
+  0.437500  0.500000  0.187500
+  0.437500  0.500000  0.250000
+  0.500000  0.437500  0.250000
+  0.562500  0.500000  0.187500
+  0.500000  0.562500  0.187500
+  0.500000  0.437500  0.312500
+  0.562500  0.500000  0.250000
+  0.500000  0.562500  0.250000
+  0.687500  0.500000  0.000000
+  0.812500  0.500000  0.000000
+  0.750000  0.562500  0.000000
+  0.812500  0.562500  0.000000
+  0.687500  0.437500  0.000000
+  0.750000  0.437500  0.000000
+  0.687500  0.437500  0.062500
+  0.687500  0.500000  0.062500
+  0.750000  0.437500  0.062500
+  0.750000  0.500000  0.062500
+  0.500000  0.687500  0.000000
+  0.500000  0.812500  0.000000
+  0.562500  0.750000  0.000000
+  0.562500  0.750000  0.062500
+  0.562500  0.812500  0.000000
+  0.437500  0.687500  0.000000
+  0.437500  0.687500  0.062500
+  0.437500  0.750000  0.000000
+  0.500000  0.687500  0.062500
+  0.500000  0.750000  0.062500
+  0.500000  0.000000  0.687500
+  0.500000  0.000000  0.812500
+  0.437500  0.000000  0.750000
+  0.437500  0.000000  0.812500
+  0.500000  0.062500  0.687500
+  0.562500  0.000000  0.687500
+  0.562500  0.062500  0.625000
+  0.500000  0.062500  0.750000
+  0.562500  0.000000  0.750000
+  0.562500  0.062500  0.687500
+  0.500000  0.187500  0.500000
+  0.500000  0.312500  0.500000
+  0.437500  0.187500  0.562500
+  0.437500  0.187500  0.625000
+  0.437500  0.250000  0.562500
+  0.437500  0.187500  0.500000
+  0.437500  0.250000  0.500000
+  0.500000  0.250000  0.437500
+  0.500000  0.312500  0.437500
+  0.500000  0.187500  0.562500
+  0.562500  0.250000  0.437500
+  0.500000  0.250000  0.562500
+  0.562500  0.250000  0.500000
+  0.562500  0.312500  0.437500
+  0.687500  0.000000  0.500000
+  0.812500  0.000000  0.500000
+  0.750000  0.000000  0.437500
+  0.812500  0.000000  0.437500
+  0.812500  0.062500  0.375000
+  0.687500  0.000000  0.562500
+  0.750000  0.062500  0.437500
+  0.750000  0.000000  0.562500
+  0.750000  0.062500  0.500000
+  0.812500  0.062500  0.437500
+  0.687500  0.187500  0.312500
+  0.812500  0.312500  0.187500
+  0.750000  0.187500  0.250000
+  0.812500  0.250000  0.187500
+  0.687500  0.187500  0.250000
+  0.750000  0.250000  0.187500
+  0.687500  0.250000  0.250000
+  0.750000  0.312500  0.187500
+  0.687500  0.187500  0.375000
+  0.687500  0.250000  0.312500
+  0.750000  0.187500  0.312500
+  0.750000  0.250000  0.312500
+  0.750000  0.312500  0.250000
+  0.812500  0.250000  0.250000
+  0.000000  0.500000  0.687500
+  0.000000  0.500000  0.812500
+  0.000000  0.437500  0.750000
+  0.000000  0.437500  0.812500
+  0.062500  0.437500  0.812500
+  0.062500  0.500000  0.750000
+  0.000000  0.562500  0.687500
+  0.062500  0.500000  0.812500
+  0.000000  0.562500  0.750000
+  0.062500  0.562500  0.750000
+  0.187500  0.500000  0.500000
+  0.312500  0.500000  0.500000
+  0.187500  0.437500  0.562500
+  0.250000  0.437500  0.562500
+  0.187500  0.437500  0.500000
+  0.250000  0.437500  0.500000
+  0.187500  0.500000  0.437500
+  0.250000  0.500000  0.437500
+  0.250000  0.500000  0.562500
+  0.250000  0.562500  0.437500
+  0.250000  0.562500  0.500000
+  0.312500  0.500000  0.562500
+  0.312500  0.562500  0.437500
+  0.312500  0.562500  0.500000
+  0.187500  0.500000  0.687500
+  0.312500  0.500000  0.812500
+  0.187500  0.437500  0.750000
+  0.250000  0.437500  0.750000
+  0.250000  0.437500  0.812500
+  0.187500  0.500000  0.750000
+  0.250000  0.500000  0.687500
+  0.187500  0.562500  0.687500
+  0.250000  0.562500  0.687500
+  0.250000  0.500000  0.812500
+  0.312500  0.500000  0.750000
+  0.312500  0.562500  0.687500
+  0.250000  0.562500  0.750000
+  0.312500  0.562500  0.750000
+  0.000000  0.687500  0.500000
+  0.000000  0.812500  0.500000
+  0.000000  0.750000  0.437500
+  0.000000  0.812500  0.437500
+  0.000000  0.687500  0.562500
+  0.062500  0.687500  0.562500
+  0.062500  0.750000  0.500000
+  0.000000  0.750000  0.562500
+  0.062500  0.750000  0.562500
+  0.062500  0.812500  0.500000
+  0.187500  0.687500  0.312500
+  0.312500  0.812500  0.187500
+  0.187500  0.750000  0.187500
+  0.187500  0.750000  0.250000
+  0.250000  0.812500  0.187500
+  0.250000  0.812500  0.250000
+  0.187500  0.687500  0.250000
+  0.250000  0.687500  0.250000
+  0.250000  0.750000  0.187500
+  0.250000  0.687500  0.312500
+  0.250000  0.750000  0.312500
+  0.312500  0.750000  0.250000
+  0.312500  0.750000  0.312500
+  0.312500  0.812500  0.250000
+  0.187500  0.687500  0.500000
+  0.312500  0.812500  0.500000
+  0.187500  0.750000  0.437500
+  0.187500  0.812500  0.437500
+  0.250000  0.812500  0.437500
+  0.250000  0.687500  0.500000
+  0.250000  0.687500  0.562500
+  0.187500  0.750000  0.500000
+  0.250000  0.750000  0.437500
+  0.312500  0.750000  0.500000
+  0.250000  0.750000  0.562500
+  0.312500  0.750000  0.562500
+  0.250000  0.812500  0.500000
+  0.312500  0.812500  0.437500
+  0.500000  0.187500  0.812500
+  0.500000  0.312500  0.687500
+  0.437500  0.187500  0.812500
+  0.437500  0.250000  0.750000
+  0.437500  0.250000  0.812500
+  0.500000  0.187500  0.750000
+  0.500000  0.250000  0.687500
+  0.500000  0.250000  0.812500
+  0.562500  0.250000  0.687500
+  0.562500  0.250000  0.750000
+  0.500000  0.312500  0.750000
+  0.562500  0.312500  0.625000
+  0.562500  0.312500  0.687500
+  0.562500  0.312500  0.750000
+  0.500000  0.187500  1.000000
+  0.500000  0.312500  1.000000
+  0.437500  0.187500  1.000000
+  0.437500  0.250000  1.000000
+  0.500000  0.250000  0.937500
+  0.562500  0.250000  0.937500
+  0.562500  0.250000  1.000000
+  0.500000  0.312500  0.937500
+  0.562500  0.312500  0.937500
+  0.562500  0.312500  1.000000
+  0.687500  0.000000  0.812500
+  0.812500  0.000000  0.687500
+  0.750000  0.000000  0.812500
+  0.812500  0.000000  0.750000
+  0.687500  0.000000  0.750000
+  0.750000  0.000000  0.687500
+  0.750000  0.062500  0.687500
+  0.750000  0.062500  0.750000
+  0.812500  0.062500  0.625000
+  0.812500  0.062500  0.687500
+  0.687500  0.187500  0.625000
+  0.812500  0.312500  0.375000
+  0.687500  0.187500  0.562500
+  0.687500  0.250000  0.500000
+  0.750000  0.187500  0.500000
+  0.750000  0.250000  0.437500
+  0.687500  0.250000  0.562500
+  0.750000  0.187500  0.562500
+  0.750000  0.250000  0.562500
+  0.750000  0.312500  0.437500
+  0.750000  0.312500  0.500000
+  0.812500  0.250000  0.437500
+  0.812500  0.250000  0.500000
+  0.812500  0.312500  0.437500
+  0.687500  0.187500  0.812500
+  0.812500  0.312500  0.687500
+  0.750000  0.187500  0.812500
+  0.812500  0.250000  0.750000
+  0.687500  0.250000  0.750000
+  0.687500  0.250000  0.812500
+  0.750000  0.187500  0.750000
+  0.750000  0.250000  0.687500
+  0.750000  0.250000  0.812500
+  0.750000  0.312500  0.687500
+  0.750000  0.312500  0.750000
+  0.812500  0.250000  0.687500
+  0.812500  0.312500  0.625000
+  0.812500  0.312500  0.750000
+  0.687500  0.187500  1.000000
+  0.812500  0.312500  1.000000
+  0.750000  0.187500  1.000000
+  0.812500  0.250000  0.937500
+  0.812500  0.250000  1.000000
+  0.687500  0.250000  1.000000
+  0.750000  0.250000  0.937500
+  0.750000  0.312500  0.937500
+  0.750000  0.312500  1.000000
+  0.812500  0.312500  0.937500
+  0.187500  0.500000  1.000000
+  0.312500  0.500000  1.000000
+  0.187500  0.437500  1.000000
+  0.250000  0.437500  1.000000
+  0.187500  0.500000  0.937500
+  0.250000  0.500000  0.937500
+  0.187500  0.562500  0.937500
+  0.250000  0.562500  1.000000
+  0.250000  0.562500  0.937500
+  0.312500  0.562500  1.000000
+  0.000000  0.687500  0.812500
+  0.000000  0.812500  0.687500
+  0.000000  0.750000  0.812500
+  0.000000  0.812500  0.750000
+  0.000000  0.687500  0.750000
+  0.000000  0.750000  0.687500
+  0.062500  0.687500  0.812500
+  0.062500  0.750000  0.812500
+  0.062500  0.750000  0.750000
+  0.062500  0.812500  0.750000
+  0.187500  0.687500  1.000000
+  0.312500  0.812500  1.000000
+  0.187500  0.750000  1.000000
+  0.187500  0.812500  0.937500
+  0.250000  0.812500  1.000000
+  0.250000  0.687500  1.000000
+  0.187500  0.750000  0.937500
+  0.250000  0.750000  0.937500
+  0.312500  0.750000  1.000000
+  0.250000  0.812500  0.937500
+  0.500000  0.500000  0.687500
+  0.500000  0.500000  0.812500
+  0.437500  0.437500  0.750000
+  0.437500  0.437500  0.812500
+  0.437500  0.500000  0.687500
+  0.437500  0.500000  0.750000
+  0.500000  0.437500  0.750000
+  0.500000  0.437500  0.812500
+  0.500000  0.562500  0.687500
+  0.562500  0.500000  0.687500
+  0.562500  0.562500  0.687500
+  0.500000  0.562500  0.750000
+  0.562500  0.500000  0.750000
+  0.562500  0.562500  0.750000
+  0.687500  0.500000  0.312500
+  0.812500  0.500000  0.187500
+  0.750000  0.562500  0.187500
+  0.750000  0.562500  0.250000
+  0.812500  0.562500  0.187500
+  0.687500  0.437500  0.250000
+  0.687500  0.500000  0.250000
+  0.750000  0.500000  0.187500
+  0.687500  0.437500  0.312500
+  0.750000  0.437500  0.250000
+  0.687500  0.437500  0.375000
+  0.750000  0.437500  0.312500
+  0.750000  0.500000  0.312500
+  0.812500  0.500000  0.250000
+  0.500000  0.687500  0.312500
+  0.500000  0.812500  0.187500
+  0.562500  0.750000  0.250000
+  0.562500  0.812500  0.187500
+  0.437500  0.687500  0.250000
+  0.437500  0.750000  0.187500
+  0.500000  0.687500  0.250000
+  0.500000  0.750000  0.187500
+  0.437500  0.687500  0.312500
+  0.437500  0.750000  0.250000
+  0.500000  0.750000  0.312500
+  0.562500  0.750000  0.312500
+  0.500000  0.812500  0.250000
+  0.562500  0.812500  0.250000
+  0.500000  0.687500  0.500000
+  0.500000  0.812500  0.500000
+  0.437500  0.687500  0.500000
+  0.437500  0.687500  0.562500
+  0.437500  0.750000  0.437500
+  0.437500  0.750000  0.500000
+  0.500000  0.687500  0.562500
+  0.500000  0.750000  0.437500
+  0.562500  0.750000  0.500000
+  0.500000  0.750000  0.562500
+  0.562500  0.750000  0.562500
+  0.500000  0.812500  0.437500
+  0.562500  0.812500  0.437500
+  0.562500  0.812500  0.500000
+  0.687500  0.500000  0.500000
+  0.812500  0.500000  0.500000
+  0.750000  0.562500  0.437500
+  0.812500  0.562500  0.375000
+  0.812500  0.562500  0.437500
+  0.687500  0.437500  0.562500
+  0.750000  0.437500  0.500000
+  0.750000  0.437500  0.562500
+  0.687500  0.500000  0.562500
+  0.750000  0.500000  0.437500
+  0.750000  0.562500  0.500000
+  0.750000  0.500000  0.562500
+  0.812500  0.500000  0.437500
+  0.812500  0.562500  0.500000
+  0.687500  0.687500  0.500000
+  0.812500  0.812500  0.500000
+  0.750000  0.750000  0.437500
+  0.812500  0.750000  0.437500
+  0.812500  0.812500  0.437500
+  0.687500  0.687500  0.562500
+  0.687500  0.750000  0.437500
+  0.687500  0.750000  0.500000
+  0.750000  0.687500  0.500000
+  0.750000  0.687500  0.562500
+  0.750000  0.750000  0.562500
+  0.750000  0.812500  0.437500
+  0.750000  0.812500  0.500000
+  0.812500  0.750000  0.500000
+  0.312500  0.687500  0.812500
+  0.187500  0.812500  0.687500
+  0.187500  0.687500  0.750000
+  0.250000  0.687500  0.750000
+  0.187500  0.750000  0.687500
+  0.250000  0.750000  0.687500
+  0.250000  0.687500  0.812500
+  0.187500  0.750000  0.750000
+  0.250000  0.750000  0.812500
+  0.312500  0.750000  0.750000
+  0.312500  0.750000  0.812500
+  0.250000  0.812500  0.687500
+  0.250000  0.812500  0.750000
+  0.312500  0.812500  0.750000
+  0.500000  0.687500  0.812500
+  0.500000  0.812500  0.687500
+  0.562500  0.750000  0.812500
+  0.562500  0.812500  0.750000
+  0.437500  0.687500  0.750000
+  0.437500  0.750000  0.687500
+  0.500000  0.687500  0.750000
+  0.500000  0.750000  0.687500
+  0.437500  0.750000  0.750000
+  0.500000  0.750000  0.812500
+  0.562500  0.750000  0.750000
+  0.437500  0.812500  0.687500
+  0.500000  0.812500  0.750000
+  0.562500  0.812500  0.687500
+  0.687500  0.500000  0.812500
+  0.812500  0.500000  0.687500
+  0.687500  0.437500  0.750000
+  0.687500  0.437500  0.812500
+  0.750000  0.437500  0.750000
+  0.750000  0.437500  0.812500
+  0.687500  0.500000  0.750000
+  0.750000  0.500000  0.687500
+  0.750000  0.562500  0.687500
+  0.750000  0.500000  0.812500
+  0.750000  0.562500  0.750000
+  0.812500  0.500000  0.750000
+  0.812500  0.562500  0.687500
+  0.812500  0.562500  0.750000
+  0.687500  0.500000  1.000000
+  0.812500  0.500000  1.000000
+  0.750000  0.562500  1.000000
+  0.812500  0.562500  1.000000
+  0.687500  0.437500  1.000000
+  0.750000  0.437500  1.000000
+  0.750000  0.500000  0.937500
+  0.750000  0.562500  0.937500
+  0.812500  0.500000  0.937500
+  0.812500  0.562500  0.937500
+  0.500000  0.687500  1.000000
+  0.500000  0.812500  1.000000
+  0.562500  0.750000  1.000000
+  0.562500  0.812500  1.000000
+  0.437500  0.687500  1.000000
+  0.437500  0.750000  1.000000
+  0.437500  0.750000  0.937500
+  0.500000  0.750000  0.937500
+  0.437500  0.812500  0.937500
+  0.500000  0.812500  0.937500
+  0.687500  0.687500  0.812500
+  0.812500  0.812500  0.687500
+  0.750000  0.750000  0.812500
+  0.750000  0.812500  0.750000
+  0.812500  0.812500  0.750000
+  0.687500  0.687500  0.750000
+  0.687500  0.750000  0.687500
+  0.750000  0.750000  0.687500
+  0.687500  0.750000  0.750000
+  0.750000  0.687500  0.750000
+  0.750000  0.687500  0.812500
+  0.750000  0.812500  0.687500
+  0.812500  0.750000  0.687500
+  0.812500  0.750000  0.750000
+  1.000000  0.187500  0.312500
+  1.000000  0.312500  0.187500
+  1.000000  0.187500  0.250000
+  1.000000  0.250000  0.187500
+  0.937500  0.187500  0.312500
+  0.937500  0.250000  0.250000
+  0.937500  0.187500  0.375000
+  0.937500  0.250000  0.312500
+  1.000000  0.250000  0.312500
+  1.000000  0.312500  0.250000
+  1.000000  0.187500  0.500000
+  1.000000  0.312500  0.500000
+  0.937500  0.187500  0.625000
+  1.000000  0.187500  0.562500
+  1.000000  0.250000  0.562500
+  0.937500  0.187500  0.562500
+  0.937500  0.250000  0.500000
+  0.937500  0.250000  0.562500
+  1.000000  0.250000  0.437500
+  1.000000  0.312500  0.437500
+  1.000000  0.500000  0.187500
+  1.000000  0.500000  0.312500
+  1.000000  0.562500  0.187500
+  1.000000  0.562500  0.250000
+  0.937500  0.437500  0.312500
+  0.937500  0.437500  0.375000
+  0.937500  0.500000  0.250000
+  0.937500  0.500000  0.312500
+  1.000000  0.437500  0.250000
+  1.000000  0.437500  0.312500
+  0.187500  1.000000  0.500000
+  0.312500  1.000000  0.500000
+  0.187500  1.000000  0.437500
+  0.250000  1.000000  0.437500
+  0.187500  0.937500  0.500000
+  0.250000  0.937500  0.500000
+  0.250000  0.937500  0.562500
+  0.312500  0.937500  0.562500
+  0.250000  1.000000  0.562500
+  0.312500  1.000000  0.562500
+  0.187500  1.000000  0.687500
+  0.312500  1.000000  0.812500
+  0.187500  1.000000  0.750000
+  0.250000  1.000000  0.812500
+  0.187500  0.937500  0.750000
+  0.250000  0.937500  0.812500
+  0.250000  0.937500  0.750000
+  0.312500  0.937500  0.812500
+  0.250000  1.000000  0.687500
+  0.312500  1.000000  0.750000
+  0.500000  1.000000  0.187500
+  0.500000  1.000000  0.312500
+  0.437500  1.000000  0.187500
+  0.437500  1.000000  0.250000
+  0.437500  0.937500  0.250000
+  0.437500  0.937500  0.312500
+  0.500000  0.937500  0.250000
+  0.500000  0.937500  0.312500
+  0.562500  1.000000  0.250000
+  0.562500  1.000000  0.312500
+  0.687500  1.000000  0.187500
+  0.812500  1.000000  0.312500
+  0.750000  0.937500  0.250000
+  0.750000  1.000000  0.187500
+  0.812500  1.000000  0.250000
+  0.687500  0.937500  0.250000
+  0.687500  0.937500  0.312500
+  0.750000  0.937500  0.312500
+  0.687500  1.000000  0.250000
+  0.750000  1.000000  0.312500
+  0.500000  1.000000  0.687500
+  0.500000  1.000000  0.812500
+  0.562500  0.937500  0.812500
+  0.562500  1.000000  0.750000
+  0.562500  1.000000  0.812500
+  0.437500  0.937500  0.750000
+  0.500000  0.937500  0.750000
+  0.500000  0.937500  0.812500
+  0.437500  1.000000  0.687500
+  0.437500  1.000000  0.750000
+  0.687500  1.000000  0.500000
+  0.812500  1.000000  0.500000
+  0.750000  1.000000  0.562500
+  0.812500  1.000000  0.562500
+  0.687500  0.937500  0.500000
+  0.750000  0.937500  0.500000
+  0.687500  0.937500  0.562500
+  0.750000  0.937500  0.562500
+  0.687500  1.000000  0.437500
+  0.750000  1.000000  0.437500
+  1.000000  0.500000  0.687500
+  1.000000  0.500000  0.812500
+  1.000000  0.437500  0.750000
+  1.000000  0.437500  0.812500
+  0.937500  0.437500  0.750000
+  0.937500  0.437500  0.812500
+  0.937500  0.500000  0.750000
+  0.937500  0.500000  0.812500
+  1.000000  0.562500  0.687500
+  1.000000  0.562500  0.750000
+  1.000000  0.687500  0.500000
+  1.000000  0.812500  0.500000
+  1.000000  0.750000  0.437500
+  1.000000  0.812500  0.437500
+  0.937500  0.687500  0.500000
+  0.937500  0.750000  0.500000
+  0.937500  0.687500  0.562500
+  0.937500  0.750000  0.562500
+  1.000000  0.687500  0.562500
+  1.000000  0.750000  0.562500
+  1.000000  0.687500  0.812500
+  1.000000  0.812500  0.687500
+  0.937500  0.750000  0.812500
+  1.000000  0.750000  0.812500
+  1.000000  0.812500  0.750000
+  0.937500  0.687500  0.750000
+  0.937500  0.687500  0.812500
+  0.937500  0.750000  0.750000
+  1.000000  0.687500  0.750000
+  1.000000  0.750000  0.687500
+  0.062500  0.000000  0.062500
+  0.000000  0.062500  0.062500
+  0.062500  0.062500  0.062500
+  0.062500  0.000000  0.125000
+  0.000000  0.062500  0.125000
+  0.062500  0.062500  0.125000
+  0.125000  0.062500  0.000000
+  0.125000  0.000000  0.062500
+  0.187500  0.062500  0.000000
+  0.062500  0.125000  0.000000
+  0.000000  0.125000  0.062500
+  0.062500  0.125000  0.062500
+  0.062500  0.187500  0.000000
+  0.125000  0.062500  0.062500
+  0.125000  0.125000  0.062500
+  0.187500  0.125000  0.000000
+  0.125000  0.187500  0.000000
+  0.062500  0.000000  0.875000
+  0.000000  0.062500  0.875000
+  0.062500  0.062500  0.875000
+  0.062500  0.000000  0.812500
+  0.000000  0.062500  0.812500
+  0.062500  0.062500  0.812500
+  0.125000  0.000000  0.937500
+  0.125000  0.062500  0.875000
+  0.125000  0.000000  0.812500
+  0.125000  0.062500  0.812500
+  0.187500  0.000000  0.875000
+  0.187500  0.062500  0.812500
+  0.000000  0.125000  0.937500
+  0.062500  0.125000  0.875000
+  0.062500  0.125000  0.937500
+  0.000000  0.125000  0.812500
+  0.000000  0.187500  0.875000
+  0.062500  0.187500  0.812500
+  0.062500  0.187500  0.875000
+  0.125000  0.062500  0.937500
+  0.125000  0.062500  1.000000
+  0.187500  0.000000  0.937500
+  0.187500  0.062500  0.875000
+  0.187500  0.062500  0.937500
+  0.187500  0.062500  1.000000
+  0.062500  0.125000  1.000000
+  0.000000  0.187500  0.937500
+  0.062500  0.187500  1.000000
+  0.125000  0.125000  0.937500
+  0.062500  0.125000  0.812500
+  0.125000  0.125000  0.812500
+  0.187500  0.125000  0.812500
+  0.125000  0.187500  0.812500
+  0.125000  0.187500  0.875000
+  0.187500  0.125000  0.875000
+  0.187500  0.187500  0.875000
+  0.062500  0.187500  0.937500
+  0.125000  0.187500  0.937500
+  0.187500  0.125000  0.937500
+  0.187500  0.125000  1.000000
+  0.125000  0.187500  1.000000
+  0.187500  0.187500  0.937500
+  0.875000  0.000000  0.062500
+  0.937500  0.062500  0.000000
+  0.812500  0.000000  0.062500
+  0.875000  0.062500  0.000000
+  0.937500  0.000000  0.125000
+  0.937500  0.062500  0.062500
+  0.812500  0.000000  0.125000
+  0.875000  0.062500  0.062500
+  0.875000  0.000000  0.187500
+  0.875000  0.062500  0.125000
+  1.000000  0.062500  0.062500
+  0.937500  0.000000  0.187500
+  1.000000  0.062500  0.125000
+  0.937500  0.125000  0.000000
+  0.937500  0.062500  0.125000
+  0.937500  0.125000  0.062500
+  1.000000  0.125000  0.062500
+  0.000000  0.875000  0.062500
+  0.062500  0.937500  0.000000
+  0.000000  0.812500  0.062500
+  0.062500  0.875000  0.000000
+  0.062500  0.875000  0.062500
+  0.000000  0.937500  0.125000
+  0.062500  0.937500  0.062500
+  0.062500  0.937500  0.125000
+  0.000000  0.812500  0.125000
+  0.000000  0.875000  0.187500
+  0.062500  0.875000  0.125000
+  0.062500  0.875000  0.187500
+  0.062500  1.000000  0.125000
+  0.000000  0.937500  0.187500
+  0.062500  0.937500  0.187500
+  0.062500  1.000000  0.187500
+  0.125000  1.000000  0.062500
+  0.125000  0.937500  0.000000
+  0.125000  0.937500  0.062500
+  0.187500  1.000000  0.062500
+  0.125000  0.937500  0.125000
+  0.125000  0.937500  0.187500
+  0.125000  1.000000  0.187500
+  0.187500  1.000000  0.125000
+  0.937500  0.000000  0.937500
+  0.937500  0.062500  0.937500
+  0.937500  0.062500  1.000000
+  0.875000  0.000000  0.937500
+  0.875000  0.062500  0.937500
+  0.875000  0.062500  1.000000
+  0.937500  0.062500  0.875000
+  1.000000  0.062500  0.875000
+  0.937500  0.000000  0.875000
+  1.000000  0.062500  0.812500
+  1.000000  0.125000  0.937500
+  0.937500  0.125000  0.875000
+  0.937500  0.125000  0.937500
+  1.000000  0.125000  0.812500
+  1.000000  0.187500  0.875000
+  0.937500  0.125000  1.000000
+  1.000000  0.187500  0.937500
+  0.000000  0.937500  0.937500
+  0.062500  0.937500  1.000000
+  0.000000  0.875000  0.937500
+  0.062500  0.875000  1.000000
+  0.062500  1.000000  0.937500
+  0.000000  0.937500  0.875000
+  0.062500  0.937500  0.937500
+  0.062500  1.000000  0.875000
+  0.125000  0.937500  1.000000
+  0.125000  1.000000  0.937500
+  0.875000  0.875000  0.062500
+  0.937500  0.875000  0.000000
+  0.875000  0.937500  0.000000
+  0.812500  0.812500  0.062500
+  0.875000  0.812500  0.000000
+  0.812500  0.875000  0.000000
+  0.875000  0.812500  0.062500
+  0.937500  0.875000  0.062500
+  0.875000  0.937500  0.062500
+  0.937500  0.875000  0.125000
+  0.937500  0.937500  0.125000
+  0.812500  0.812500  0.125000
+  0.812500  0.875000  0.062500
+  0.875000  0.812500  0.125000
+  0.812500  0.875000  0.125000
+  0.875000  0.812500  0.187500
+  0.875000  0.875000  0.187500
+  0.875000  0.937500  0.125000
+  1.000000  0.875000  0.062500
+  0.937500  0.812500  0.000000
+  0.937500  0.812500  0.062500
+  0.937500  0.812500  0.125000
+  1.000000  0.812500  0.062500
+  0.937500  1.000000  0.062500
+  0.812500  0.937500  0.000000
+  0.812500  0.937500  0.062500
+  0.875000  1.000000  0.062500
+  1.000000  0.937500  0.125000
+  0.937500  0.812500  0.187500
+  0.937500  0.875000  0.187500
+  1.000000  0.812500  0.125000
+  1.000000  0.875000  0.187500
+  0.937500  0.937500  0.187500
+  0.937500  1.000000  0.125000
+  1.000000  0.937500  0.187500
+  0.875000  0.937500  0.937500
+  0.937500  0.875000  1.000000
+  0.875000  0.937500  1.000000
+  0.937500  0.937500  0.937500
+  0.812500  0.875000  0.937500
+  0.875000  0.812500  1.000000
+  0.812500  0.875000  1.000000
+  0.875000  0.875000  0.937500
+  0.812500  0.937500  0.937500
+  0.937500  0.875000  0.937500
+  0.875000  1.000000  0.937500
+  0.937500  1.000000  0.875000
+  0.812500  0.937500  0.875000
+  0.875000  0.937500  0.875000
+  0.812500  1.000000  0.875000
+  0.875000  1.000000  0.812500
+  1.000000  0.937500  0.937500
+  0.937500  0.812500  1.000000
+  1.000000  0.875000  0.937500
+  0.812500  0.937500  1.000000
+  0.812500  1.000000  0.937500
+  0.937500  0.937500  0.875000
+  0.937500  1.000000  0.812500
+  1.000000  0.937500  0.875000
+  0.062500  0.000000  0.375000
+  0.000000  0.062500  0.375000
+  0.062500  0.062500  0.375000
+  0.062500  0.000000  0.312500
+  0.000000  0.062500  0.312500
+  0.062500  0.062500  0.312500
+  0.062500  0.000000  0.562500
+  0.000000  0.062500  0.562500
+  0.062500  0.062500  0.562500
+  0.062500  0.000000  0.625000
+  0.000000  0.062500  0.625000
+  0.062500  0.062500  0.625000
+  0.125000  0.062500  0.375000
+  0.125000  0.000000  0.437500
+  0.125000  0.000000  0.312500
+  0.125000  0.062500  0.312500
+  0.187500  0.062500  0.312500
+  0.187500  0.000000  0.375000
+  0.187500  0.062500  0.375000
+  0.062500  0.125000  0.375000
+  0.000000  0.125000  0.437500
+  0.062500  0.125000  0.437500
+  0.000000  0.125000  0.312500
+  0.062500  0.187500  0.312500
+  0.000000  0.187500  0.375000
+  0.062500  0.187500  0.375000
+  0.125000  0.062500  0.437500
+  0.125000  0.125000  0.437500
+  0.062500  0.125000  0.312500
+  0.125000  0.125000  0.312500
+  0.187500  0.125000  0.312500
+  0.125000  0.187500  0.312500
+  0.125000  0.187500  0.375000
+  0.187500  0.125000  0.375000
+  0.187500  0.187500  0.375000
+  0.125000  0.062500  0.500000
+  0.125000  0.000000  0.562500
+  0.187500  0.000000  0.437500
+  0.187500  0.062500  0.437500
+  0.187500  0.062500  0.500000
+  0.062500  0.125000  0.500000
+  0.000000  0.125000  0.562500
+  0.062500  0.125000  0.562500
+  0.000000  0.187500  0.437500
+  0.062500  0.187500  0.437500
+  0.062500  0.187500  0.500000
+  0.125000  0.062500  0.562500
+  0.125000  0.125000  0.562500
+  0.125000  0.187500  0.437500
+  0.187500  0.125000  0.437500
+  0.187500  0.187500  0.437500
+  0.187500  0.125000  0.500000
+  0.125000  0.187500  0.500000
+  0.375000  0.000000  0.062500
+  0.437500  0.062500  0.000000
+  0.312500  0.000000  0.062500
+  0.375000  0.062500  0.000000
+  0.562500  0.000000  0.062500
+  0.625000  0.062500  0.000000
+  0.625000  0.000000  0.062500
+  0.687500  0.062500  0.000000
+  0.437500  0.062500  0.062500
+  0.437500  0.000000  0.125000
+  0.312500  0.000000  0.125000
+  0.375000  0.062500  0.062500
+  0.375000  0.062500  0.125000
+  0.375000  0.000000  0.187500
+  0.437500  0.062500  0.125000
+  0.500000  0.062500  0.062500
+  0.562500  0.125000  0.000000
+  0.437500  0.125000  0.000000
+  0.437500  0.125000  0.062500
+  0.500000  0.125000  0.062500
+  0.562500  0.187500  0.000000
+  0.562500  0.062500  0.062500
+  0.562500  0.000000  0.125000
+  0.437500  0.000000  0.187500
+  0.500000  0.062500  0.125000
+  0.562500  0.062500  0.125000
+  0.625000  0.062500  0.062500
+  0.687500  0.125000  0.000000
+  0.562500  0.125000  0.062500
+  0.625000  0.187500  0.000000
+  0.625000  0.125000  0.062500
+  0.000000  0.375000  0.062500
+  0.062500  0.437500  0.000000
+  0.000000  0.312500  0.062500
+  0.062500  0.375000  0.000000
+  0.062500  0.375000  0.062500
+  0.000000  0.562500  0.062500
+  0.062500  0.625000  0.000000
+  0.000000  0.625000  0.062500
+  0.062500  0.687500  0.000000
+  0.062500  0.625000  0.062500
+  0.062500  0.437500  0.062500
+  0.000000  0.437500  0.125000
+  0.062500  0.437500  0.125000
+  0.000000  0.312500  0.125000
+  0.062500  0.375000  0.125000
+  0.000000  0.375000  0.187500
+  0.062500  0.375000  0.187500
+  0.125000  0.500000  0.062500
+  0.125000  0.562500  0.000000
+  0.125000  0.437500  0.000000
+  0.125000  0.437500  0.062500
+  0.187500  0.500000  0.062500
+  0.187500  0.562500  0.000000
+  0.062500  0.500000  0.125000
+  0.062500  0.562500  0.062500
+  0.000000  0.562500  0.125000
+  0.000000  0.437500  0.187500
+  0.062500  0.500000  0.187500
+  0.062500  0.562500  0.125000
+  0.125000  0.562500  0.062500
+  0.125000  0.437500  0.125000
+  0.062500  0.437500  0.187500
+  0.125000  0.437500  0.187500
+  0.187500  0.500000  0.125000
+  0.187500  0.562500  0.062500
+  0.125000  0.500000  0.187500
+  0.125000  0.562500  0.125000
+  0.187500  0.562500  0.125000
+  0.125000  0.687500  0.000000
+  0.187500  0.625000  0.000000
+  0.125000  0.625000  0.062500
+  0.187500  0.625000  0.062500
+  0.375000  0.375000  0.062500
+  0.437500  0.375000  0.000000
+  0.375000  0.437500  0.000000
+  0.312500  0.312500  0.062500
+  0.375000  0.312500  0.000000
+  0.312500  0.375000  0.000000
+  0.375000  0.312500  0.062500
+  0.562500  0.562500  0.062500
+  0.625000  0.562500  0.000000
+  0.562500  0.625000  0.000000
+  0.625000  0.625000  0.062500
+  0.687500  0.625000  0.000000
+  0.625000  0.687500  0.000000
+  0.625000  0.562500  0.062500
+  0.437500  0.375000  0.062500
+  0.375000  0.437500  0.062500
+  0.437500  0.375000  0.125000
+  0.437500  0.437500  0.125000
+  0.312500  0.312500  0.125000
+  0.312500  0.375000  0.062500
+  0.375000  0.312500  0.125000
+  0.312500  0.375000  0.125000
+  0.375000  0.312500  0.187500
+  0.375000  0.375000  0.187500
+  0.375000  0.437500  0.125000
+  0.500000  0.375000  0.062500
+  0.562500  0.437500  0.000000
+  0.437500  0.312500  0.000000
+  0.437500  0.312500  0.062500
+  0.500000  0.312500  0.062500
+  0.562500  0.375000  0.000000
+  0.437500  0.500000  0.062500
+  0.437500  0.562500  0.000000
+  0.312500  0.437500  0.000000
+  0.312500  0.437500  0.062500
+  0.375000  0.500000  0.062500
+  0.375000  0.562500  0.000000
+  0.500000  0.437500  0.125000
+  0.562500  0.437500  0.062500
+  0.437500  0.312500  0.125000
+  0.437500  0.312500  0.187500
+  0.437500  0.375000  0.187500
+  0.500000  0.312500  0.125000
+  0.562500  0.375000  0.062500
+  0.500000  0.375000  0.187500
+  0.562500  0.375000  0.125000
+  0.562500  0.437500  0.125000
+  0.562500  0.500000  0.062500
+  0.500000  0.562500  0.062500
+  0.562500  0.562500  0.125000
+  0.437500  0.437500  0.187500
+  0.437500  0.500000  0.125000
+  0.500000  0.437500  0.187500
+  0.562500  0.500000  0.125000
+  0.500000  0.562500  0.125000
+  0.687500  0.562500  0.000000
+  0.625000  0.437500  0.000000
+  0.625000  0.437500  0.062500
+  0.625000  0.500000  0.062500
+  0.562500  0.625000  0.062500
+  0.562500  0.687500  0.000000
+  0.437500  0.562500  0.062500
+  0.437500  0.625000  0.000000
+  0.500000  0.625000  0.062500
+  0.375000  0.000000  0.562500
+  0.437500  0.000000  0.625000
+  0.437500  0.062500  0.562500
+  0.312500  0.000000  0.625000
+  0.375000  0.000000  0.687500
+  0.375000  0.062500  0.625000
+  0.375000  0.062500  0.562500
+  0.562500  0.000000  0.375000
+  0.625000  0.000000  0.437500
+  0.625000  0.062500  0.375000
+  0.625000  0.000000  0.312500
+  0.687500  0.000000  0.375000
+  0.687500  0.062500  0.312500
+  0.625000  0.062500  0.312500
+  0.437500  0.000000  0.437500
+  0.437500  0.062500  0.437500
+  0.437500  0.062500  0.500000
+  0.312500  0.000000  0.562500
+  0.375000  0.000000  0.437500
+  0.375000  0.062500  0.437500
+  0.375000  0.062500  0.500000
+  0.500000  0.062500  0.375000
+  0.562500  0.062500  0.375000
+  0.562500  0.000000  0.312500
+  0.437500  0.000000  0.375000
+  0.500000  0.062500  0.312500
+  0.562500  0.062500  0.312500
+  0.500000  0.125000  0.437500
+  0.562500  0.125000  0.375000
+  0.437500  0.062500  0.375000
+  0.437500  0.125000  0.375000
+  0.437500  0.125000  0.437500
+  0.500000  0.125000  0.312500
+  0.562500  0.125000  0.312500
+  0.500000  0.187500  0.375000
+  0.562500  0.187500  0.312500
+  0.562500  0.187500  0.375000
+  0.500000  0.062500  0.562500
+  0.562500  0.000000  0.562500
+  0.562500  0.062500  0.500000
+  0.437500  0.000000  0.687500
+  0.500000  0.062500  0.625000
+  0.562500  0.000000  0.625000
+  0.562500  0.062500  0.562500
+  0.562500  0.125000  0.437500
+  0.437500  0.062500  0.625000
+  0.437500  0.125000  0.562500
+  0.437500  0.125000  0.500000
+  0.500000  0.187500  0.437500
+  0.500000  0.125000  0.562500
+  0.562500  0.125000  0.500000
+  0.562500  0.187500  0.437500
+  0.625000  0.062500  0.437500
+  0.687500  0.000000  0.437500
+  0.687500  0.062500  0.375000
+  0.625000  0.000000  0.562500
+  0.625000  0.062500  0.500000
+  0.687500  0.062500  0.437500
+  0.687500  0.125000  0.312500
+  0.625000  0.125000  0.312500
+  0.625000  0.187500  0.312500
+  0.625000  0.125000  0.437500
+  0.625000  0.187500  0.375000
+  0.687500  0.125000  0.375000
+  0.000000  0.375000  0.562500
+  0.000000  0.437500  0.625000
+  0.062500  0.437500  0.562500
+  0.062500  0.437500  0.625000
+  0.000000  0.312500  0.625000
+  0.000000  0.375000  0.687500
+  0.062500  0.375000  0.625000
+  0.062500  0.375000  0.687500
+  0.000000  0.562500  0.375000
+  0.000000  0.625000  0.437500
+  0.062500  0.625000  0.375000
+  0.062500  0.625000  0.437500
+  0.000000  0.625000  0.312500
+  0.000000  0.687500  0.375000
+  0.062500  0.687500  0.312500
+  0.062500  0.687500  0.375000
+  0.000000  0.437500  0.437500
+  0.062500  0.437500  0.500000
+  0.000000  0.312500  0.562500
+  0.062500  0.375000  0.562500
+  0.000000  0.375000  0.437500
+  0.062500  0.375000  0.500000
+  0.062500  0.437500  0.437500
+  0.062500  0.500000  0.437500
+  0.062500  0.562500  0.375000
+  0.000000  0.562500  0.312500
+  0.000000  0.437500  0.375000
+  0.062500  0.500000  0.375000
+  0.062500  0.562500  0.312500
+  0.062500  0.500000  0.625000
+  0.000000  0.562500  0.562500
+  0.000000  0.437500  0.687500
+  0.062500  0.437500  0.687500
+  0.062500  0.500000  0.687500
+  0.000000  0.562500  0.625000
+  0.062500  0.562500  0.625000
+  0.125000  0.500000  0.562500
+  0.125000  0.562500  0.437500
+  0.125000  0.562500  0.500000
+  0.125000  0.437500  0.562500
+  0.125000  0.437500  0.500000
+  0.125000  0.500000  0.437500
+  0.187500  0.500000  0.562500
+  0.187500  0.562500  0.437500
+  0.187500  0.562500  0.500000
+  0.062500  0.562500  0.562500
+  0.125000  0.562500  0.562500
+  0.125000  0.437500  0.625000
+  0.125000  0.437500  0.687500
+  0.125000  0.500000  0.687500
+  0.187500  0.500000  0.625000
+  0.187500  0.562500  0.562500
+  0.125000  0.562500  0.625000
+  0.187500  0.562500  0.625000
+  0.062500  0.625000  0.500000
+  0.000000  0.687500  0.437500
+  0.000000  0.625000  0.562500
+  0.062500  0.625000  0.562500
+  0.062500  0.687500  0.500000
+  0.125000  0.625000  0.437500
+  0.062500  0.625000  0.312500
+  0.125000  0.687500  0.312500
+  0.125000  0.687500  0.375000
+  0.125000  0.562500  0.375000
+  0.125000  0.625000  0.312500
+  0.187500  0.625000  0.375000
+  0.187500  0.625000  0.437500
+  0.187500  0.687500  0.375000
+  0.062500  0.687500  0.437500
+  0.125000  0.687500  0.437500
+  0.187500  0.625000  0.500000
+  0.125000  0.625000  0.562500
+  0.187500  0.625000  0.562500
+  0.125000  0.687500  0.500000
+  0.187500  0.687500  0.437500
+  0.437500  0.000000  0.937500
+  0.437500  0.062500  0.937500
+  0.437500  0.062500  1.000000
+  0.375000  0.000000  0.937500
+  0.375000  0.062500  0.937500
+  0.375000  0.062500  1.000000
+  0.437500  0.062500  0.875000
+  0.625000  0.000000  0.937500
+  0.625000  0.062500  0.937500
+  0.625000  0.062500  1.000000
+  0.687500  0.000000  0.937500
+  0.687500  0.062500  0.937500
+  0.687500  0.062500  1.000000
+  0.687500  0.062500  0.875000
+  0.500000  0.062500  0.875000
+  0.562500  0.000000  0.875000
+  0.562500  0.062500  0.812500
+  0.437500  0.000000  0.875000
+  0.500000  0.062500  0.812500
+  0.562500  0.000000  0.812500
+  0.562500  0.062500  0.750000
+  0.500000  0.125000  0.937500
+  0.562500  0.125000  0.812500
+  0.562500  0.125000  0.875000
+  0.437500  0.125000  0.875000
+  0.437500  0.125000  0.937500
+  0.500000  0.125000  0.812500
+  0.500000  0.187500  0.875000
+  0.562500  0.187500  0.750000
+  0.562500  0.187500  0.812500
+  0.562500  0.187500  0.875000
+  0.562500  0.125000  0.937500
+  0.562500  0.125000  1.000000
+  0.437500  0.125000  1.000000
+  0.500000  0.187500  0.937500
+  0.562500  0.187500  0.937500
+  0.562500  0.187500  1.000000
+  0.625000  0.062500  0.812500
+  0.625000  0.062500  0.875000
+  0.687500  0.000000  0.875000
+  0.625000  0.000000  0.812500
+  0.687500  0.062500  0.750000
+  0.687500  0.062500  0.812500
+  0.625000  0.125000  0.812500
+  0.562500  0.125000  0.750000
+  0.625000  0.062500  0.750000
+  0.625000  0.125000  0.687500
+  0.625000  0.187500  0.687500
+  0.625000  0.187500  0.750000
+  0.687500  0.125000  0.687500
+  0.687500  0.125000  0.750000
+  0.687500  0.187500  0.687500
+  0.625000  0.125000  0.937500
+  0.687500  0.125000  0.875000
+  0.625000  0.187500  0.812500
+  0.625000  0.187500  0.875000
+  0.687500  0.125000  0.812500
+  0.687500  0.187500  0.750000
+  0.687500  0.187500  0.875000
+  0.687500  0.125000  0.937500
+  0.687500  0.125000  1.000000
+  0.625000  0.187500  0.937500
+  0.625000  0.187500  1.000000
+  0.687500  0.187500  0.937500
+  0.000000  0.437500  0.937500
+  0.062500  0.437500  1.000000
+  0.000000  0.375000  0.937500
+  0.062500  0.375000  1.000000
+  0.000000  0.625000  0.937500
+  0.062500  0.625000  1.000000
+  0.000000  0.687500  0.937500
+  0.062500  0.687500  1.000000
+  0.062500  0.500000  0.937500
+  0.000000  0.562500  0.875000
+  0.000000  0.437500  0.875000
+  0.062500  0.437500  0.937500
+  0.062500  0.500000  0.875000
+  0.000000  0.562500  0.812500
+  0.062500  0.562500  0.875000
+  0.062500  0.562500  0.937500
+  0.125000  0.562500  1.000000
+  0.125000  0.437500  1.000000
+  0.125000  0.500000  0.937500
+  0.125000  0.562500  0.937500
+  0.187500  0.562500  1.000000
+  0.062500  0.625000  0.937500
+  0.000000  0.687500  0.875000
+  0.000000  0.625000  0.812500
+  0.062500  0.625000  0.875000
+  0.062500  0.687500  0.875000
+  0.062500  0.687500  0.937500
+  0.125000  0.687500  1.000000
+  0.125000  0.625000  0.937500
+  0.187500  0.625000  1.000000
+  0.125000  0.687500  0.937500
+  0.375000  0.375000  0.562500
+  0.437500  0.375000  0.562500
+  0.375000  0.437500  0.562500
+  0.437500  0.375000  0.625000
+  0.437500  0.437500  0.625000
+  0.312500  0.312500  0.625000
+  0.375000  0.312500  0.625000
+  0.312500  0.375000  0.625000
+  0.375000  0.312500  0.687500
+  0.375000  0.375000  0.687500
+  0.312500  0.375000  0.562500
+  0.375000  0.437500  0.625000
+  0.562500  0.562500  0.375000
+  0.625000  0.562500  0.375000
+  0.562500  0.625000  0.375000
+  0.625000  0.562500  0.437500
+  0.625000  0.625000  0.437500
+  0.625000  0.625000  0.312500
+  0.687500  0.625000  0.312500
+  0.625000  0.687500  0.312500
+  0.687500  0.625000  0.375000
+  0.687500  0.687500  0.375000
+  0.562500  0.625000  0.312500
+  0.625000  0.687500  0.375000
+  0.375000  0.437500  0.437500
+  0.437500  0.437500  0.437500
+  0.437500  0.375000  0.500000
+  0.375000  0.437500  0.500000
+  0.312500  0.312500  0.562500
+  0.375000  0.312500  0.562500
+  0.312500  0.375000  0.437500
+  0.375000  0.375000  0.437500
+  0.375000  0.312500  0.500000
+  0.312500  0.375000  0.500000
+  0.437500  0.375000  0.437500
+  0.437500  0.500000  0.375000
+  0.375000  0.500000  0.437500
+  0.437500  0.562500  0.375000
+  0.312500  0.437500  0.375000
+  0.375000  0.437500  0.375000
+  0.312500  0.437500  0.437500
+  0.375000  0.500000  0.312500
+  0.312500  0.500000  0.375000
+  0.375000  0.562500  0.312500
+  0.437500  0.562500  0.312500
+  0.375000  0.562500  0.375000
+  0.500000  0.437500  0.437500
+  0.562500  0.500000  0.375000
+  0.500000  0.562500  0.375000
+  0.562500  0.562500  0.312500
+  0.437500  0.437500  0.375000
+  0.437500  0.500000  0.312500
+  0.500000  0.437500  0.375000
+  0.562500  0.500000  0.312500
+  0.500000  0.562500  0.312500
+  0.500000  0.375000  0.562500
+  0.562500  0.437500  0.437500
+  0.437500  0.312500  0.562500
+  0.437500  0.312500  0.625000
+  0.437500  0.312500  0.500000
+  0.500000  0.375000  0.437500
+  0.500000  0.312500  0.562500
+  0.562500  0.375000  0.437500
+  0.562500  0.375000  0.500000
+  0.437500  0.500000  0.562500
+  0.437500  0.562500  0.437500
+  0.437500  0.562500  0.500000
+  0.312500  0.437500  0.562500
+  0.312500  0.437500  0.500000
+  0.312500  0.500000  0.437500
+  0.375000  0.500000  0.562500
+  0.375000  0.562500  0.437500
+  0.375000  0.562500  0.500000
+  0.500000  0.437500  0.625000
+  0.562500  0.437500  0.500000
+  0.562500  0.437500  0.562500
+  0.437500  0.312500  0.687500
+  0.437500  0.375000  0.687500
+  0.500000  0.312500  0.625000
+  0.500000  0.375000  0.687500
+  0.562500  0.375000  0.562500
+  0.562500  0.375000  0.625000
+  0.562500  0.437500  0.625000
+  0.500000  0.562500  0.562500
+  0.562500  0.500000  0.562500
+  0.562500  0.562500  0.562500
+  0.437500  0.437500  0.687500
+  0.437500  0.500000  0.625000
+  0.500000  0.437500  0.687500
+  0.500000  0.562500  0.625000
+  0.562500  0.500000  0.625000
+  0.562500  0.562500  0.625000
+  0.625000  0.500000  0.437500
+  0.625000  0.562500  0.312500
+  0.687500  0.562500  0.312500
+  0.562500  0.437500  0.375000
+  0.625000  0.500000  0.312500
+  0.625000  0.437500  0.375000
+  0.625000  0.437500  0.437500
+  0.687500  0.500000  0.375000
+  0.500000  0.625000  0.437500
+  0.562500  0.625000  0.437500
+  0.562500  0.687500  0.312500
+  0.437500  0.625000  0.312500
+  0.500000  0.625000  0.312500
+  0.437500  0.625000  0.375000
+  0.500000  0.687500  0.375000
+  0.562500  0.687500  0.375000
+  0.562500  0.625000  0.500000
+  0.437500  0.562500  0.562500
+  0.437500  0.625000  0.437500
+  0.437500  0.625000  0.500000
+  0.500000  0.625000  0.562500
+  0.562500  0.625000  0.562500
+  0.500000  0.687500  0.437500
+  0.562500  0.687500  0.437500
+  0.562500  0.687500  0.500000
+  0.625000  0.562500  0.500000
+  0.687500  0.562500  0.375000
+  0.687500  0.562500  0.437500
+  0.625000  0.437500  0.500000
+  0.625000  0.437500  0.562500
+  0.625000  0.500000  0.562500
+  0.687500  0.500000  0.437500
+  0.687500  0.562500  0.500000
+  0.687500  0.625000  0.437500
+  0.687500  0.687500  0.437500
+  0.625000  0.562500  0.562500
+  0.625000  0.625000  0.562500
+  0.625000  0.687500  0.437500
+  0.625000  0.687500  0.500000
+  0.687500  0.625000  0.500000
+  0.375000  0.437500  0.937500
+  0.437500  0.375000  1.000000
+  0.375000  0.437500  1.000000
+  0.437500  0.437500  0.937500
+  0.312500  0.375000  0.937500
+  0.375000  0.312500  1.000000
+  0.312500  0.375000  1.000000
+  0.375000  0.375000  0.937500
+  0.312500  0.437500  0.937500
+  0.437500  0.375000  0.937500
+  0.562500  0.625000  0.937500
+  0.625000  0.562500  1.000000
+  0.562500  0.625000  1.000000
+  0.625000  0.625000  0.937500
+  0.625000  0.687500  0.937500
+  0.687500  0.625000  1.000000
+  0.625000  0.687500  1.000000
+  0.687500  0.687500  0.937500
+  0.562500  0.687500  0.937500
+  0.687500  0.625000  0.937500
+  0.375000  0.500000  0.937500
+  0.437500  0.500000  0.875000
+  0.375000  0.562500  0.875000
+  0.437500  0.562500  0.875000
+  0.312500  0.437500  0.875000
+  0.375000  0.437500  0.875000
+  0.312500  0.500000  0.875000
+  0.375000  0.500000  0.812500
+  0.312500  0.562500  0.812500
+  0.375000  0.562500  0.812500
+  0.437500  0.562500  0.812500
+  0.500000  0.437500  0.937500
+  0.562500  0.437500  0.937500
+  0.562500  0.437500  1.000000
+  0.437500  0.312500  1.000000
+  0.500000  0.375000  0.937500
+  0.562500  0.375000  0.937500
+  0.562500  0.375000  1.000000
+  0.375000  0.562500  0.937500
+  0.437500  0.562500  1.000000
+  0.312500  0.437500  1.000000
+  0.312500  0.500000  0.937500
+  0.312500  0.562500  0.937500
+  0.375000  0.562500  1.000000
+  0.500000  0.562500  0.875000
+  0.562500  0.500000  0.875000
+  0.562500  0.562500  0.875000
+  0.437500  0.437500  0.875000
+  0.437500  0.500000  0.812500
+  0.500000  0.437500  0.875000
+  0.500000  0.562500  0.812500
+  0.562500  0.500000  0.812500
+  0.562500  0.562500  0.812500
+  0.437500  0.625000  0.875000
+  0.437500  0.625000  0.937500
+  0.312500  0.562500  0.875000
+  0.312500  0.625000  0.812500
+  0.375000  0.625000  0.812500
+  0.312500  0.625000  0.875000
+  0.375000  0.625000  0.937500
+  0.375000  0.687500  0.812500
+  0.375000  0.687500  0.875000
+  0.437500  0.687500  0.875000
+  0.500000  0.625000  0.937500
+  0.562500  0.625000  0.875000
+  0.562500  0.687500  0.875000
+  0.437500  0.625000  0.812500
+  0.500000  0.625000  0.812500
+  0.437500  0.687500  0.812500
+  0.500000  0.687500  0.875000
+  0.562500  0.687500  0.812500
+  0.625000  0.500000  0.937500
+  0.625000  0.562500  0.875000
+  0.562500  0.437500  0.875000
+  0.625000  0.437500  0.875000
+  0.625000  0.437500  0.937500
+  0.625000  0.500000  0.812500
+  0.625000  0.562500  0.812500
+  0.687500  0.500000  0.875000
+  0.687500  0.562500  0.812500
+  0.687500  0.562500  0.875000
+  0.625000  0.562500  0.937500
+  0.687500  0.562500  1.000000
+  0.625000  0.437500  1.000000
+  0.687500  0.500000  0.937500
+  0.687500  0.562500  0.937500
+  0.562500  0.687500  1.000000
+  0.437500  0.625000  1.000000
+  0.437500  0.687500  0.937500
+  0.500000  0.687500  0.937500
+  0.625000  0.687500  0.875000
+  0.687500  0.687500  0.875000
+  0.562500  0.625000  0.812500
+  0.625000  0.625000  0.812500
+  0.625000  0.687500  0.812500
+  0.687500  0.625000  0.812500
+  0.687500  0.625000  0.875000
+  0.937500  0.000000  0.437500
+  1.000000  0.062500  0.375000
+  0.937500  0.000000  0.375000
+  1.000000  0.062500  0.312500
+  0.937500  0.000000  0.625000
+  1.000000  0.062500  0.562500
+  0.937500  0.000000  0.687500
+  1.000000  0.062500  0.625000
+  0.875000  0.000000  0.562500
+  0.937500  0.062500  0.437500
+  0.875000  0.000000  0.437500
+  0.937500  0.062500  0.375000
+  0.812500  0.000000  0.562500
+  0.875000  0.062500  0.437500
+  0.875000  0.062500  0.500000
+  0.937500  0.062500  0.500000
+  0.937500  0.062500  0.562500
+  0.875000  0.000000  0.687500
+  0.812500  0.000000  0.625000
+  0.875000  0.062500  0.562500
+  0.875000  0.062500  0.625000
+  1.000000  0.125000  0.437500
+  1.000000  0.125000  0.312500
+  0.937500  0.125000  0.375000
+  0.937500  0.125000  0.437500
+  1.000000  0.187500  0.375000
+  0.937500  0.062500  0.625000
+  1.000000  0.125000  0.562500
+  0.937500  0.125000  0.500000
+  0.937500  0.125000  0.562500
+  1.000000  0.187500  0.437500
+  0.937500  0.375000  0.000000
+  0.937500  0.375000  0.062500
+  1.000000  0.375000  0.062500
+  0.937500  0.312500  0.000000
+  0.937500  0.312500  0.062500
+  1.000000  0.312500  0.062500
+  0.937500  0.312500  0.125000
+  0.937500  0.562500  0.000000
+  0.937500  0.562500  0.062500
+  1.000000  0.562500  0.062500
+  0.937500  0.625000  0.000000
+  0.937500  0.625000  0.062500
+  1.000000  0.625000  0.062500
+  0.937500  0.562500  0.125000
+  0.875000  0.437500  0.000000
+  0.875000  0.375000  0.062500
+  0.875000  0.312500  0.000000
+  0.875000  0.312500  0.062500
+  0.812500  0.375000  0.000000
+  0.812500  0.312500  0.062500
+  0.812500  0.375000  0.062500
+  0.875000  0.437500  0.062500
+  0.875000  0.500000  0.062500
+  0.875000  0.562500  0.000000
+  0.812500  0.437500  0.000000
+  0.812500  0.437500  0.062500
+  0.812500  0.500000  0.062500
+  0.875000  0.375000  0.187500
+  0.875000  0.437500  0.125000
+  0.937500  0.375000  0.125000
+  0.875000  0.312500  0.125000
+  0.812500  0.312500  0.125000
+  0.812500  0.375000  0.125000
+  0.812500  0.312500  0.250000
+  0.812500  0.375000  0.187500
+  0.875000  0.312500  0.187500
+  0.875000  0.437500  0.187500
+  0.937500  0.375000  0.187500
+  0.937500  0.437500  0.187500
+  0.812500  0.312500  0.312500
+  0.812500  0.375000  0.250000
+  0.875000  0.312500  0.250000
+  0.812500  0.375000  0.312500
+  0.875000  0.312500  0.312500
+  0.875000  0.375000  0.312500
+  0.875000  0.437500  0.250000
+  0.937500  0.375000  0.250000
+  0.937500  0.500000  0.125000
+  0.875000  0.562500  0.062500
+  0.875000  0.562500  0.125000
+  0.812500  0.437500  0.125000
+  0.812500  0.500000  0.125000
+  0.812500  0.437500  0.187500
+  0.812500  0.437500  0.250000
+  0.875000  0.500000  0.187500
+  1.000000  0.437500  0.125000
+  1.000000  0.312500  0.125000
+  0.937500  0.312500  0.187500
+  0.937500  0.312500  0.250000
+  1.000000  0.375000  0.187500
+  1.000000  0.562500  0.125000
+  0.937500  0.437500  0.250000
+  0.937500  0.500000  0.187500
+  1.000000  0.437500  0.187500
+  0.000000  0.937500  0.437500
+  0.062500  1.000000  0.437500
+  0.000000  0.937500  0.375000
+  0.062500  1.000000  0.375000
+  0.062500  0.937500  0.437500
+  0.000000  0.937500  0.625000
+  0.062500  1.000000  0.625000
+  0.000000  0.937500  0.687500
+  0.062500  1.000000  0.687500
+  0.062500  0.937500  0.687500
+  0.000000  0.875000  0.562500
+  0.062500  0.875000  0.562500
+  0.062500  0.937500  0.500000
+  0.000000  0.875000  0.437500
+  0.000000  0.812500  0.562500
+  0.062500  0.812500  0.562500
+  0.062500  0.875000  0.500000
+  0.062500  0.875000  0.625000
+  0.062500  0.937500  0.625000
+  0.000000  0.875000  0.687500
+  0.000000  0.812500  0.625000
+  0.062500  0.812500  0.687500
+  0.062500  0.875000  0.687500
+  0.125000  0.937500  0.562500
+  0.125000  0.937500  0.625000
+  0.062500  0.812500  0.625000
+  0.125000  0.812500  0.625000
+  0.125000  0.875000  0.562500
+  0.125000  0.812500  0.687500
+  0.125000  0.875000  0.687500
+  0.187500  0.875000  0.625000
+  0.187500  0.875000  0.687500
+  0.187500  0.937500  0.625000
+  0.125000  1.000000  0.562500
+  0.125000  1.000000  0.437500
+  0.125000  0.937500  0.500000
+  0.187500  0.937500  0.562500
+  0.187500  1.000000  0.562500
+  0.125000  1.000000  0.687500
+  0.125000  0.937500  0.687500
+  0.187500  0.937500  0.687500
+  0.187500  1.000000  0.625000
+  0.375000  0.937500  0.000000
+  0.375000  0.937500  0.062500
+  0.437500  1.000000  0.062500
+  0.312500  0.937500  0.000000
+  0.312500  0.937500  0.062500
+  0.375000  1.000000  0.062500
+  0.562500  0.937500  0.000000
+  0.562500  0.937500  0.062500
+  0.625000  1.000000  0.062500
+  0.625000  0.937500  0.000000
+  0.625000  0.937500  0.062500
+  0.687500  1.000000  0.062500
+  0.437500  0.875000  0.000000
+  0.375000  0.875000  0.062500
+  0.437500  0.875000  0.062500
+  0.312500  0.875000  0.000000
+  0.375000  0.812500  0.000000
+  0.312500  0.812500  0.062500
+  0.375000  0.812500  0.062500
+  0.500000  0.875000  0.062500
+  0.562500  0.875000  0.000000
+  0.562500  0.875000  0.062500
+  0.437500  0.812500  0.000000
+  0.437500  0.812500  0.062500
+  0.500000  0.812500  0.062500
+  0.437500  0.875000  0.125000
+  0.437500  0.937500  0.125000
+  0.312500  0.875000  0.062500
+  0.312500  0.875000  0.125000
+  0.375000  0.937500  0.125000
+  0.312500  0.812500  0.125000
+  0.375000  0.812500  0.125000
+  0.375000  0.812500  0.187500
+  0.375000  0.875000  0.187500
+  0.437500  0.875000  0.187500
+  0.500000  0.937500  0.125000
+  0.562500  0.937500  0.125000
+  0.562500  0.875000  0.125000
+  0.437500  0.812500  0.125000
+  0.500000  0.812500  0.125000
+  0.437500  0.812500  0.187500
+  0.500000  0.875000  0.187500
+  0.562500  0.875000  0.187500
+  0.562500  1.000000  0.125000
+  0.437500  1.000000  0.125000
+  0.437500  0.937500  0.187500
+  0.500000  0.937500  0.187500
+  0.562500  1.000000  0.187500
+  0.625000  0.937500  0.125000
+  0.687500  1.000000  0.125000
+  0.562500  0.937500  0.187500
+  0.625000  0.937500  0.187500
+  0.625000  1.000000  0.187500
+  0.375000  0.937500  0.437500
+  0.375000  1.000000  0.437500
+  0.437500  1.000000  0.375000
+  0.312500  0.937500  0.375000
+  0.312500  1.000000  0.375000
+  0.375000  1.000000  0.312500
+  0.375000  0.937500  0.375000
+  0.562500  0.937500  0.625000
+  0.562500  1.000000  0.625000
+  0.625000  1.000000  0.562500
+  0.625000  0.937500  0.687500
+  0.625000  1.000000  0.687500
+  0.687500  1.000000  0.625000
+  0.625000  0.937500  0.625000
+  0.437500  0.875000  0.500000
+  0.437500  0.875000  0.562500
+  0.375000  0.937500  0.500000
+  0.437500  0.937500  0.437500
+  0.312500  0.875000  0.437500
+  0.312500  0.937500  0.437500
+  0.375000  0.812500  0.500000
+  0.375000  0.812500  0.562500
+  0.312500  0.875000  0.500000
+  0.375000  0.875000  0.437500
+  0.375000  0.875000  0.562500
+  0.500000  0.875000  0.562500
+  0.500000  0.937500  0.437500
+  0.562500  0.937500  0.500000
+  0.437500  0.812500  0.500000
+  0.437500  0.812500  0.562500
+  0.437500  0.875000  0.437500
+  0.500000  0.812500  0.562500
+  0.500000  0.875000  0.437500
+  0.562500  0.875000  0.500000
+  0.562500  0.875000  0.562500
+  0.562500  0.937500  0.437500
+  0.437500  0.937500  0.562500
+  0.500000  0.937500  0.625000
+  0.562500  0.937500  0.562500
+  0.562500  0.875000  0.687500
+  0.437500  0.812500  0.625000
+  0.500000  0.812500  0.625000
+  0.437500  0.875000  0.625000
+  0.500000  0.875000  0.687500
+  0.562500  0.875000  0.625000
+  0.437500  1.000000  0.562500
+  0.312500  1.000000  0.437500
+  0.312500  0.937500  0.500000
+  0.375000  0.937500  0.562500
+  0.375000  1.000000  0.562500
+  0.562500  1.000000  0.437500
+  0.437500  1.000000  0.312500
+  0.437500  0.937500  0.375000
+  0.500000  0.937500  0.375000
+  0.562500  1.000000  0.375000
+  0.562500  0.937500  0.687500
+  0.562500  1.000000  0.687500
+  0.437500  0.937500  0.625000
+  0.500000  0.937500  0.687500
+  0.437500  1.000000  0.625000
+  0.687500  1.000000  0.562500
+  0.625000  0.937500  0.500000
+  0.625000  0.937500  0.562500
+  0.625000  1.000000  0.437500
+  0.937500  0.375000  0.625000
+  1.000000  0.375000  0.562500
+  1.000000  0.437500  0.625000
+  0.937500  0.312500  0.687500
+  1.000000  0.312500  0.625000
+  1.000000  0.375000  0.687500
+  0.937500  0.375000  0.687500
+  0.937500  0.562500  0.437500
+  1.000000  0.562500  0.375000
+  1.000000  0.625000  0.437500
+  0.937500  0.625000  0.375000
+  1.000000  0.625000  0.312500
+  1.000000  0.687500  0.375000
+  0.937500  0.625000  0.437500
+  0.875000  0.437500  0.562500
+  0.875000  0.437500  0.625000
+  0.937500  0.375000  0.562500
+  0.937500  0.437500  0.500000
+  0.937500  0.437500  0.625000
+  0.875000  0.312500  0.687500
+  0.812500  0.375000  0.625000
+  0.812500  0.375000  0.687500
+  0.875000  0.312500  0.625000
+  0.875000  0.375000  0.562500
+  0.875000  0.375000  0.687500
+  0.875000  0.500000  0.562500
+  0.937500  0.500000  0.437500
+  0.937500  0.562500  0.500000
+  0.875000  0.562500  0.437500
+  0.937500  0.562500  0.375000
+  0.812500  0.437500  0.562500
+  0.875000  0.437500  0.500000
+  0.812500  0.500000  0.562500
+  0.875000  0.500000  0.437500
+  0.875000  0.562500  0.500000
+  0.937500  0.500000  0.625000
+  0.937500  0.562500  0.562500
+  0.812500  0.437500  0.625000
+  0.812500  0.437500  0.687500
+  0.875000  0.437500  0.687500
+  0.812500  0.500000  0.625000
+  0.875000  0.562500  0.562500
+  0.875000  0.500000  0.687500
+  0.875000  0.562500  0.625000
+  0.937500  0.562500  0.625000
+  1.000000  0.437500  0.437500
+  0.937500  0.312500  0.625000
+  1.000000  0.312500  0.562500
+  0.937500  0.312500  0.562500
+  0.937500  0.375000  0.500000
+  1.000000  0.375000  0.437500
+  1.000000  0.562500  0.312500
+  0.937500  0.437500  0.437500
+  0.937500  0.500000  0.375000
+  1.000000  0.437500  0.375000
+  1.000000  0.562500  0.562500
+  1.000000  0.437500  0.687500
+  0.937500  0.437500  0.687500
+  0.937500  0.500000  0.687500
+  1.000000  0.562500  0.625000
+  1.000000  0.687500  0.437500
+  0.937500  0.625000  0.500000
+  0.937500  0.625000  0.562500
+  1.000000  0.625000  0.562500
+  0.937500  0.375000  1.000000
+  1.000000  0.437500  0.937500
+  0.937500  0.312500  1.000000
+  1.000000  0.375000  0.937500
+  0.937500  0.562500  1.000000
+  1.000000  0.625000  0.937500
+  0.937500  0.625000  1.000000
+  1.000000  0.687500  0.937500
+  0.875000  0.437500  1.000000
+  0.937500  0.437500  0.937500
+  0.875000  0.312500  1.000000
+  0.937500  0.375000  0.937500
+  0.812500  0.375000  1.000000
+  0.875000  0.375000  0.937500
+  0.875000  0.437500  0.937500
+  0.937500  0.500000  0.937500
+  0.937500  0.562500  0.937500
+  0.875000  0.562500  1.000000
+  0.812500  0.437500  1.000000
+  0.875000  0.500000  0.937500
+  0.875000  0.562500  0.937500
+  1.000000  0.562500  0.875000
+  1.000000  0.437500  0.875000
+  0.937500  0.437500  0.875000
+  0.937500  0.500000  0.875000
+  1.000000  0.562500  0.812500
+  0.937500  0.625000  0.937500
+  1.000000  0.687500  0.875000
+  0.937500  0.562500  0.875000
+  0.937500  0.625000  0.875000
+  1.000000  0.625000  0.812500
+  0.375000  0.937500  1.000000
+  0.375000  1.000000  0.937500
+  0.312500  0.937500  1.000000
+  0.312500  1.000000  0.937500
+  0.562500  0.937500  1.000000
+  0.562500  1.000000  0.937500
+  0.625000  0.937500  1.000000
+  0.625000  1.000000  0.937500
+  0.437500  0.875000  1.000000
+  0.375000  0.937500  0.937500
+  0.312500  0.875000  1.000000
+  0.312500  0.937500  0.937500
+  0.375000  0.812500  1.000000
+  0.312500  0.875000  0.937500
+  0.375000  0.875000  0.937500
+  0.437500  0.937500  0.937500
+  0.500000  0.937500  0.937500
+  0.562500  0.875000  1.000000
+  0.437500  0.812500  1.000000
+  0.437500  0.875000  0.937500
+  0.500000  0.875000  0.937500
+  0.437500  1.000000  0.875000
+  0.312500  1.000000  0.875000
+  0.312500  0.937500  0.875000
+  0.375000  0.937500  0.875000
+  0.375000  1.000000  0.812500
+  0.562500  0.937500  0.937500
+  0.562500  1.000000  0.875000
+  0.437500  0.937500  0.875000
+  0.500000  0.937500  0.875000
+  0.437500  1.000000  0.812500
+  0.937500  0.937500  0.437500
+  0.937500  1.000000  0.375000
+  1.000000  0.937500  0.437500
+  0.937500  0.937500  0.375000
+  0.937500  1.000000  0.312500
+  1.000000  0.937500  0.375000
+  0.937500  0.937500  0.625000
+  0.937500  1.000000  0.562500
+  1.000000  0.937500  0.625000
+  0.937500  0.937500  0.687500
+  0.937500  1.000000  0.625000
+  1.000000  0.937500  0.687500
+  0.875000  0.875000  0.562500
+  0.875000  0.937500  0.437500
+  0.875000  0.937500  0.500000
+  0.937500  0.875000  0.500000
+  0.875000  0.875000  0.437500
+  0.937500  0.875000  0.437500
+  0.812500  0.812500  0.562500
+  0.812500  0.875000  0.437500
+  0.812500  0.875000  0.500000
+  0.875000  0.812500  0.500000
+  0.875000  0.812500  0.562500
+  0.875000  0.937500  0.562500
+  0.937500  0.875000  0.562500
+  0.937500  0.875000  0.625000
+  0.875000  0.875000  0.687500
+  0.875000  0.937500  0.625000
+  0.812500  0.812500  0.625000
+  0.812500  0.875000  0.562500
+  0.812500  0.875000  0.625000
+  0.875000  0.812500  0.625000
+  0.875000  0.812500  0.687500
+  0.875000  1.000000  0.437500
+  0.875000  0.937500  0.375000
+  0.875000  1.000000  0.312500
+  0.812500  0.937500  0.375000
+  0.812500  0.937500  0.437500
+  0.812500  1.000000  0.375000
+  0.875000  1.000000  0.562500
+  0.812500  0.937500  0.500000
+  0.812500  0.937500  0.562500
+  0.812500  1.000000  0.437500
+  1.000000  0.875000  0.562500
+  1.000000  0.875000  0.437500
+  0.937500  0.812500  0.500000
+  0.937500  0.812500  0.562500
+  1.000000  0.812500  0.562500
+  0.937500  0.875000  0.687500
+  1.000000  0.875000  0.687500
+  0.937500  0.812500  0.625000
+  0.937500  0.812500  0.687500
+  1.000000  0.812500  0.625000
+  0.125000  0.062500  0.125000
+  0.125000  0.000000  0.187500
+  0.187500  0.062500  0.062500
+  0.187500  0.000000  0.125000
+  0.187500  0.062500  0.125000
+  0.062500  0.125000  0.125000
+  0.000000  0.125000  0.187500
+  0.062500  0.125000  0.187500
+  0.062500  0.187500  0.062500
+  0.000000  0.187500  0.125000
+  0.062500  0.187500  0.125000
+  0.125000  0.062500  0.187500
+  0.125000  0.125000  0.187500
+  0.187500  0.125000  0.062500
+  0.125000  0.187500  0.062500
+  0.125000  0.187500  0.125000
+  0.187500  0.125000  0.125000
+  0.187500  0.187500  0.125000
+  0.125000  0.062500  0.250000
+  0.187500  0.000000  0.187500
+  0.187500  0.062500  0.187500
+  0.187500  0.062500  0.250000
+  0.062500  0.125000  0.250000
+  0.000000  0.187500  0.187500
+  0.062500  0.187500  0.187500
+  0.062500  0.187500  0.250000
+  0.125000  0.187500  0.187500
+  0.187500  0.125000  0.187500
+  0.187500  0.187500  0.187500
+  0.187500  0.125000  0.250000
+  0.125000  0.187500  0.250000
+  0.250000  0.062500  0.062500
+  0.312500  0.125000  0.000000
+  0.250000  0.125000  0.062500
+  0.312500  0.187500  0.000000
+  0.312500  0.062500  0.062500
+  0.250000  0.062500  0.125000
+  0.312500  0.062500  0.125000
+  0.312500  0.125000  0.062500
+  0.375000  0.187500  0.000000
+  0.375000  0.125000  0.062500
+  0.125000  0.250000  0.062500
+  0.125000  0.312500  0.000000
+  0.187500  0.250000  0.062500
+  0.187500  0.312500  0.000000
+  0.062500  0.250000  0.125000
+  0.062500  0.312500  0.062500
+  0.062500  0.250000  0.187500
+  0.062500  0.312500  0.125000
+  0.125000  0.312500  0.062500
+  0.187500  0.250000  0.125000
+  0.187500  0.312500  0.062500
+  0.125000  0.250000  0.187500
+  0.125000  0.312500  0.125000
+  0.187500  0.312500  0.125000
+  0.187500  0.375000  0.000000
+  0.125000  0.375000  0.062500
+  0.187500  0.375000  0.062500
+  0.250000  0.187500  0.125000
+  0.312500  0.187500  0.062500
+  0.250000  0.125000  0.187500
+  0.312500  0.125000  0.125000
+  0.312500  0.187500  0.125000
+  0.312500  0.250000  0.062500
+  0.250000  0.312500  0.062500
+  0.250000  0.187500  0.187500
+  0.312500  0.250000  0.125000
+  0.250000  0.312500  0.125000
+  0.375000  0.187500  0.062500
+  0.375000  0.250000  0.062500
+  0.250000  0.375000  0.062500
+  0.125000  0.062500  0.750000
+  0.125000  0.000000  0.687500
+  0.125000  0.062500  0.687500
+  0.187500  0.062500  0.750000
+  0.187500  0.000000  0.687500
+  0.187500  0.062500  0.687500
+  0.062500  0.125000  0.750000
+  0.000000  0.125000  0.687500
+  0.062500  0.187500  0.750000
+  0.000000  0.187500  0.687500
+  0.062500  0.187500  0.687500
+  0.062500  0.125000  0.687500
+  0.125000  0.125000  0.687500
+  0.187500  0.125000  0.750000
+  0.187500  0.125000  0.687500
+  0.125000  0.187500  0.750000
+  0.125000  0.187500  0.687500
+  0.187500  0.187500  0.687500
+  0.125000  0.062500  0.625000
+  0.187500  0.000000  0.625000
+  0.187500  0.062500  0.625000
+  0.187500  0.062500  0.562500
+  0.062500  0.125000  0.625000
+  0.000000  0.187500  0.625000
+  0.062500  0.187500  0.625000
+  0.062500  0.187500  0.562500
+  0.187500  0.125000  0.625000
+  0.125000  0.187500  0.625000
+  0.187500  0.187500  0.625000
+  0.187500  0.125000  0.562500
+  0.125000  0.187500  0.562500
+  0.250000  0.062500  0.812500
+  0.312500  0.000000  0.812500
+  0.312500  0.062500  0.750000
+  0.250000  0.062500  0.875000
+  0.312500  0.000000  0.875000
+  0.312500  0.062500  0.812500
+  0.250000  0.125000  0.687500
+  0.312500  0.125000  0.687500
+  0.250000  0.125000  0.812500
+  0.312500  0.125000  0.750000
+  0.250000  0.187500  0.687500
+  0.312500  0.187500  0.687500
+  0.250000  0.062500  0.625000
+  0.312500  0.062500  0.625000
+  0.250000  0.062500  0.562500
+  0.312500  0.062500  0.562500
+  0.312500  0.125000  0.625000
+  0.250000  0.187500  0.625000
+  0.312500  0.187500  0.625000
+  0.250000  0.125000  0.562500
+  0.312500  0.125000  0.562500
+  0.312500  0.187500  0.562500
+  0.375000  0.062500  0.687500
+  0.375000  0.000000  0.812500
+  0.375000  0.062500  0.750000
+  0.437500  0.062500  0.687500
+  0.375000  0.125000  0.687500
+  0.375000  0.187500  0.625000
+  0.375000  0.125000  0.562500
+  0.375000  0.187500  0.562500
+  0.437500  0.125000  0.625000
+  0.062500  0.250000  0.875000
+  0.000000  0.312500  0.812500
+  0.062500  0.250000  0.937500
+  0.000000  0.312500  0.875000
+  0.062500  0.312500  0.875000
+  0.125000  0.250000  0.812500
+  0.062500  0.250000  0.687500
+  0.125000  0.312500  0.687500
+  0.125000  0.312500  0.750000
+  0.187500  0.250000  0.812500
+  0.125000  0.250000  0.687500
+  0.187500  0.312500  0.687500
+  0.187500  0.312500  0.750000
+  0.062500  0.312500  0.812500
+  0.125000  0.312500  0.812500
+  0.125000  0.250000  0.937500
+  0.187500  0.250000  0.875000
+  0.187500  0.312500  0.812500
+  0.125000  0.312500  0.875000
+  0.187500  0.312500  0.875000
+  0.062500  0.312500  0.625000
+  0.062500  0.250000  0.625000
+  0.062500  0.312500  0.562500
+  0.062500  0.375000  0.750000
+  0.000000  0.375000  0.812500
+  0.062500  0.375000  0.812500
+  0.062500  0.437500  0.750000
+  0.125000  0.375000  0.687500
+  0.125000  0.312500  0.625000
+  0.187500  0.375000  0.625000
+  0.187500  0.375000  0.687500
+  0.125000  0.375000  0.562500
+  0.187500  0.437500  0.625000
+  0.187500  0.375000  0.750000
+  0.125000  0.375000  0.812500
+  0.187500  0.375000  0.812500
+  0.125000  0.437500  0.750000
+  0.187500  0.437500  0.687500
+  0.250000  0.125000  0.937500
+  0.312500  0.125000  0.812500
+  0.312500  0.125000  0.875000
+  0.250000  0.187500  0.875000
+  0.312500  0.187500  0.750000
+  0.312500  0.187500  0.812500
+  0.312500  0.187500  0.875000
+  0.312500  0.125000  0.937500
+  0.312500  0.125000  1.000000
+  0.250000  0.187500  0.937500
+  0.312500  0.187500  0.937500
+  0.312500  0.187500  1.000000
+  0.375000  0.062500  0.812500
+  0.375000  0.062500  0.875000
+  0.437500  0.062500  0.750000
+  0.437500  0.062500  0.812500
+  0.375000  0.125000  0.812500
+  0.375000  0.187500  0.687500
+  0.375000  0.187500  0.750000
+  0.437500  0.125000  0.687500
+  0.437500  0.125000  0.750000
+  0.437500  0.187500  0.687500
+  0.375000  0.125000  0.937500
+  0.375000  0.187500  0.812500
+  0.375000  0.187500  0.875000
+  0.437500  0.125000  0.812500
+  0.437500  0.187500  0.750000
+  0.437500  0.187500  0.875000
+  0.375000  0.187500  0.937500
+  0.375000  0.187500  1.000000
+  0.437500  0.187500  0.937500
+  0.062500  0.312500  0.937500
+  0.125000  0.312500  1.000000
+  0.125000  0.312500  0.937500
+  0.187500  0.312500  1.000000
+  0.062500  0.375000  0.937500
+  0.062500  0.375000  0.875000
+  0.062500  0.437500  0.875000
+  0.125000  0.375000  0.937500
+  0.187500  0.375000  1.000000
+  0.125000  0.437500  0.937500
+  0.250000  0.312500  0.812500
+  0.312500  0.250000  0.812500
+  0.312500  0.312500  0.812500
+  0.250000  0.312500  0.875000
+  0.312500  0.250000  0.875000
+  0.312500  0.312500  0.875000
+  0.187500  0.250000  0.625000
+  0.187500  0.312500  0.625000
+  0.125000  0.250000  0.562500
+  0.125000  0.312500  0.562500
+  0.187500  0.312500  0.562500
+  0.312500  0.250000  0.625000
+  0.250000  0.312500  0.625000
+  0.187500  0.250000  0.562500
+  0.312500  0.250000  0.562500
+  0.250000  0.312500  0.562500
+  0.375000  0.250000  0.687500
+  0.375000  0.250000  0.562500
+  0.437500  0.250000  0.625000
+  0.250000  0.375000  0.687500
+  0.312500  0.375000  0.687500
+  0.187500  0.375000  0.562500
+  0.250000  0.375000  0.562500
+  0.250000  0.437500  0.625000
+  0.312500  0.437500  0.625000
+  0.312500  0.375000  0.750000
+  0.250000  0.375000  0.812500
+  0.312500  0.375000  0.812500
+  0.250000  0.437500  0.687500
+  0.312500  0.437500  0.687500
+  0.312500  0.437500  0.750000
+  0.375000  0.312500  0.750000
+  0.375000  0.250000  0.812500
+  0.437500  0.250000  0.687500
+  0.437500  0.312500  0.750000
+  0.375000  0.312500  0.812500
+  0.375000  0.375000  0.812500
+  0.375000  0.437500  0.687500
+  0.375000  0.437500  0.750000
+  0.437500  0.375000  0.750000
+  0.187500  0.375000  0.875000
+  0.187500  0.375000  0.937500
+  0.125000  0.437500  0.812500
+  0.125000  0.437500  0.875000
+  0.187500  0.437500  0.875000
+  0.250000  0.375000  0.937500
+  0.312500  0.375000  0.875000
+  0.187500  0.437500  0.812500
+  0.250000  0.437500  0.875000
+  0.312500  0.437500  0.812500
+  0.375000  0.250000  0.937500
+  0.375000  0.312500  0.875000
+  0.437500  0.250000  0.875000
+  0.437500  0.312500  0.812500
+  0.437500  0.312500  0.875000
+  0.375000  0.312500  0.937500
+  0.437500  0.250000  0.937500
+  0.437500  0.312500  0.937500
+  0.187500  0.437500  0.937500
+  0.250000  0.437500  0.937500
+  0.375000  0.437500  0.812500
+  0.437500  0.375000  0.812500
+  0.437500  0.375000  0.875000
+  0.812500  0.062500  0.062500
+  0.687500  0.000000  0.125000
+  0.750000  0.062500  0.062500
+  0.812500  0.062500  0.125000
+  0.687500  0.000000  0.187500
+  0.750000  0.062500  0.125000
+  0.812500  0.125000  0.000000
+  0.875000  0.125000  0.062500
+  0.812500  0.125000  0.062500
+  0.875000  0.187500  0.000000
+  0.687500  0.062500  0.062500
+  0.625000  0.000000  0.187500
+  0.687500  0.062500  0.125000
+  0.625000  0.062500  0.125000
+  0.750000  0.125000  0.062500
+  0.812500  0.187500  0.000000
+  0.687500  0.125000  0.062500
+  0.875000  0.062500  0.187500
+  0.812500  0.000000  0.312500
+  0.937500  0.062500  0.187500
+  0.875000  0.000000  0.312500
+  0.875000  0.062500  0.250000
+  0.812500  0.125000  0.125000
+  0.812500  0.062500  0.250000
+  0.812500  0.125000  0.187500
+  0.937500  0.125000  0.125000
+  0.875000  0.187500  0.062500
+  0.875000  0.125000  0.187500
+  0.875000  0.187500  0.125000
+  0.687500  0.062500  0.187500
+  0.687500  0.062500  0.250000
+  0.625000  0.062500  0.187500
+  0.625000  0.062500  0.250000
+  0.750000  0.125000  0.187500
+  0.812500  0.187500  0.062500
+  0.812500  0.187500  0.125000
+  0.687500  0.125000  0.125000
+  0.687500  0.125000  0.187500
+  0.750000  0.187500  0.125000
+  0.750000  0.062500  0.312500
+  0.812500  0.000000  0.375000
+  0.812500  0.062500  0.312500
+  0.750000  0.062500  0.375000
+  0.812500  0.125000  0.250000
+  0.812500  0.187500  0.187500
+  0.687500  0.125000  0.250000
+  0.750000  0.187500  0.187500
+  0.750000  0.125000  0.312500
+  0.937500  0.062500  0.250000
+  1.000000  0.125000  0.187500
+  0.937500  0.125000  0.187500
+  1.000000  0.187500  0.125000
+  0.937500  0.062500  0.312500
+  0.875000  0.062500  0.312500
+  0.875000  0.062500  0.375000
+  0.937500  0.125000  0.250000
+  1.000000  0.187500  0.187500
+  0.937500  0.125000  0.312500
+  0.875000  0.250000  0.062500
+  0.812500  0.250000  0.062500
+  0.875000  0.187500  0.187500
+  0.937500  0.187500  0.187500
+  0.812500  0.125000  0.312500
+  0.875000  0.125000  0.312500
+  0.875000  0.187500  0.250000
+  0.937500  0.250000  0.125000
+  0.812500  0.250000  0.125000
+  0.812500  0.187500  0.250000
+  0.875000  0.250000  0.187500
+  0.937500  0.187500  0.250000
+  0.937500  0.250000  0.187500
+  0.062500  0.812500  0.062500
+  0.000000  0.687500  0.125000
+  0.062500  0.750000  0.125000
+  0.062500  0.812500  0.125000
+  0.000000  0.687500  0.187500
+  0.062500  0.750000  0.187500
+  0.125000  0.812500  0.000000
+  0.125000  0.812500  0.062500
+  0.125000  0.875000  0.062500
+  0.187500  0.875000  0.000000
+  0.187500  0.875000  0.062500
+  0.062500  0.687500  0.062500
+  0.062500  0.687500  0.125000
+  0.000000  0.625000  0.187500
+  0.062500  0.625000  0.125000
+  0.062500  0.625000  0.187500
+  0.125000  0.750000  0.062500
+  0.187500  0.812500  0.000000
+  0.125000  0.687500  0.062500
+  0.187500  0.750000  0.062500
+  0.125000  0.812500  0.125000
+  0.062500  0.687500  0.187500
+  0.125000  0.750000  0.187500
+  0.187500  0.812500  0.062500
+  0.187500  0.812500  0.125000
+  0.125000  0.687500  0.125000
+  0.125000  0.687500  0.187500
+  0.187500  0.750000  0.125000
+  0.062500  0.875000  0.250000
+  0.000000  0.812500  0.312500
+  0.062500  0.812500  0.312500
+  0.062500  0.937500  0.250000
+  0.000000  0.875000  0.312500
+  0.062500  0.875000  0.312500
+  0.125000  0.875000  0.187500
+  0.125000  0.812500  0.187500
+  0.187500  0.937500  0.125000
+  0.187500  0.875000  0.125000
+  0.187500  0.875000  0.187500
+  0.125000  0.812500  0.250000
+  0.125000  0.812500  0.312500
+  0.125000  0.937500  0.250000
+  0.125000  0.875000  0.312500
+  0.187500  0.937500  0.187500
+  0.187500  0.875000  0.250000
+  0.187500  0.875000  0.312500
+  0.062500  0.687500  0.250000
+  0.062500  0.625000  0.250000
+  0.062500  0.750000  0.375000
+  0.000000  0.812500  0.375000
+  0.062500  0.812500  0.375000
+  0.062500  0.750000  0.437500
+  0.125000  0.750000  0.312500
+  0.187500  0.812500  0.187500
+  0.187500  0.812500  0.250000
+  0.125000  0.687500  0.250000
+  0.187500  0.750000  0.312500
+  0.125000  0.812500  0.375000
+  0.187500  0.812500  0.312500
+  0.187500  0.812500  0.375000
+  0.125000  0.750000  0.437500
+  0.187500  0.750000  0.375000
+  0.125000  0.937500  0.312500
+  0.125000  1.000000  0.312500
+  0.187500  0.937500  0.312500
+  0.187500  1.000000  0.312500
+  0.062500  0.875000  0.375000
+  0.062500  0.937500  0.375000
+  0.062500  0.812500  0.437500
+  0.062500  0.875000  0.437500
+  0.125000  0.937500  0.375000
+  0.187500  0.875000  0.375000
+  0.187500  0.937500  0.375000
+  0.125000  0.812500  0.437500
+  0.125000  0.875000  0.437500
+  0.187500  0.875000  0.437500
+  0.187500  1.000000  0.375000
+  0.125000  0.937500  0.437500
+  0.187500  0.937500  0.437500
+  0.250000  0.937500  0.125000
+  0.312500  1.000000  0.125000
+  0.250000  0.937500  0.187500
+  0.312500  1.000000  0.187500
+  0.250000  0.875000  0.062500
+  0.250000  0.812500  0.062500
+  0.312500  0.937500  0.125000
+  0.250000  0.875000  0.187500
+  0.250000  0.812500  0.125000
+  0.312500  0.875000  0.187500
+  0.312500  0.937500  0.187500
+  0.375000  1.000000  0.187500
+  0.375000  0.937500  0.187500
+  0.250000  0.875000  0.312500
+  0.312500  0.937500  0.250000
+  0.250000  0.812500  0.312500
+  0.312500  0.875000  0.250000
+  0.312500  0.875000  0.312500
+  0.250000  0.937500  0.375000
+  0.312500  0.937500  0.312500
+  0.250000  0.812500  0.375000
+  0.250000  0.875000  0.437500
+  0.312500  0.875000  0.375000
+  0.250000  0.937500  0.437500
+  0.375000  0.937500  0.250000
+  0.375000  0.937500  0.312500
+  0.875000  0.062500  0.875000
+  0.812500  0.000000  0.875000
+  0.875000  0.062500  0.812500
+  0.937500  0.062500  0.812500
+  0.875000  0.000000  0.812500
+  0.937500  0.062500  0.750000
+  0.875000  0.125000  0.937500
+  0.812500  0.125000  0.875000
+  0.812500  0.125000  0.937500
+  0.875000  0.125000  0.812500
+  0.937500  0.125000  0.812500
+  0.937500  0.187500  0.875000
+  0.875000  0.187500  0.812500
+  0.875000  0.187500  0.875000
+  0.937500  0.187500  0.750000
+  0.812500  0.125000  1.000000
+  0.937500  0.187500  0.937500
+  0.875000  0.187500  0.937500
+  0.875000  0.187500  1.000000
+  0.750000  0.062500  0.875000
+  0.812500  0.062500  0.812500
+  0.812500  0.000000  0.812500
+  0.750000  0.062500  0.812500
+  0.812500  0.062500  0.750000
+  0.750000  0.125000  0.937500
+  0.812500  0.125000  0.812500
+  0.812500  0.187500  0.812500
+  0.812500  0.187500  0.875000
+  0.750000  0.125000  0.812500
+  0.750000  0.187500  0.875000
+  0.812500  0.187500  0.750000
+  0.812500  0.187500  0.937500
+  0.812500  0.187500  1.000000
+  0.750000  0.187500  0.937500
+  0.937500  0.125000  0.750000
+  0.875000  0.062500  0.750000
+  0.937500  0.125000  0.687500
+  0.875000  0.187500  0.750000
+  0.937500  0.187500  0.687500
+  0.812500  0.125000  0.750000
+  0.875000  0.125000  0.687500
+  0.875000  0.187500  0.687500
+  1.000000  0.125000  0.687500
+  1.000000  0.187500  0.687500
+  0.937500  0.062500  0.687500
+  0.875000  0.062500  0.687500
+  1.000000  0.187500  0.625000
+  0.937500  0.125000  0.625000
+  0.937500  0.250000  0.875000
+  1.000000  0.312500  0.812500
+  0.937500  0.250000  0.937500
+  1.000000  0.312500  0.875000
+  0.875000  0.250000  0.812500
+  0.937500  0.250000  0.687500
+  0.937500  0.312500  0.750000
+  0.812500  0.250000  0.812500
+  0.875000  0.250000  0.687500
+  0.875000  0.312500  0.750000
+  0.937500  0.312500  0.812500
+  0.875000  0.250000  0.937500
+  0.937500  0.312500  0.875000
+  0.812500  0.250000  0.875000
+  0.875000  0.312500  0.812500
+  0.875000  0.312500  0.875000
+  0.937500  0.250000  0.625000
+  1.000000  0.375000  0.812500
+  0.937500  0.375000  0.750000
+  0.937500  0.375000  0.812500
+  0.937500  0.312500  0.937500
+  0.875000  0.312500  0.937500
+  0.937500  0.375000  0.875000
+  0.062500  0.875000  0.937500
+  0.000000  0.812500  0.875000
+  0.062500  0.812500  0.937500
+  0.062500  0.937500  0.875000
+  0.000000  0.875000  0.812500
+  0.062500  0.875000  0.875000
+  0.125000  0.812500  1.000000
+  0.125000  0.937500  0.937500
+  0.125000  0.875000  0.937500
+  0.187500  0.875000  1.000000
+  0.062500  0.750000  0.937500
+  0.000000  0.812500  0.812500
+  0.062500  0.812500  0.875000
+  0.062500  0.750000  0.875000
+  0.125000  0.812500  0.937500
+  0.187500  0.812500  1.000000
+  0.125000  0.750000  0.937500
+  0.125000  0.937500  0.875000
+  0.125000  1.000000  0.812500
+  0.187500  0.937500  0.937500
+  0.187500  1.000000  0.875000
+  0.062500  0.875000  0.812500
+  0.062500  0.937500  0.750000
+  0.062500  0.812500  0.812500
+  0.062500  0.875000  0.750000
+  0.125000  0.937500  0.812500
+  0.187500  0.875000  0.937500
+  0.187500  0.937500  0.875000
+  0.125000  0.812500  0.875000
+  0.125000  0.875000  0.812500
+  0.187500  0.875000  0.875000
+  0.187500  1.000000  0.812500
+  0.125000  0.937500  0.750000
+  0.187500  0.937500  0.812500
+  0.250000  0.937500  0.937500
+  0.250000  0.875000  0.937500
+  0.250000  0.937500  0.875000
+  0.812500  0.750000  0.062500
+  0.750000  0.812500  0.062500
+  0.687500  0.687500  0.125000
+  0.687500  0.750000  0.062500
+  0.750000  0.687500  0.125000
+  0.812500  0.750000  0.125000
+  0.750000  0.812500  0.125000
+  0.687500  0.687500  0.187500
+  0.687500  0.750000  0.125000
+  0.750000  0.687500  0.187500
+  0.812500  0.687500  0.000000
+  0.812500  0.687500  0.062500
+  0.875000  0.750000  0.062500
+  0.875000  0.687500  0.000000
+  0.875000  0.687500  0.062500
+  0.687500  0.812500  0.000000
+  0.750000  0.875000  0.062500
+  0.687500  0.812500  0.062500
+  0.687500  0.875000  0.000000
+  0.687500  0.625000  0.062500
+  0.625000  0.687500  0.062500
+  0.687500  0.625000  0.125000
+  0.625000  0.625000  0.187500
+  0.625000  0.687500  0.125000
+  0.625000  0.562500  0.125000
+  0.562500  0.625000  0.125000
+  0.625000  0.562500  0.187500
+  0.750000  0.625000  0.062500
+  0.812500  0.625000  0.000000
+  0.687500  0.562500  0.062500
+  0.750000  0.562500  0.062500
+  0.625000  0.750000  0.062500
+  0.625000  0.812500  0.000000
+  0.562500  0.687500  0.062500
+  0.812500  0.687500  0.125000
+  0.687500  0.625000  0.187500
+  0.750000  0.625000  0.187500
+  0.812500  0.625000  0.062500
+  0.812500  0.625000  0.125000
+  0.687500  0.562500  0.125000
+  0.687500  0.562500  0.187500
+  0.750000  0.562500  0.125000
+  0.875000  0.750000  0.187500
+  0.812500  0.687500  0.187500
+  0.812500  0.687500  0.250000
+  0.937500  0.750000  0.125000
+  0.875000  0.687500  0.125000
+  0.875000  0.687500  0.187500
+  0.812500  0.875000  0.187500
+  0.687500  0.812500  0.125000
+  0.687500  0.812500  0.187500
+  0.750000  0.875000  0.187500
+  0.812500  0.937500  0.125000
+  0.687500  0.875000  0.062500
+  0.687500  0.875000  0.125000
+  0.750000  0.937500  0.125000
+  0.875000  0.812500  0.250000
+  0.812500  0.687500  0.312500
+  0.812500  0.750000  0.312500
+  0.937500  0.750000  0.187500
+  0.875000  0.687500  0.250000
+  0.937500  0.812500  0.250000
+  0.875000  0.687500  0.312500
+  0.875000  0.750000  0.312500
+  0.812500  0.812500  0.312500
+  0.812500  0.875000  0.250000
+  0.875000  0.937500  0.187500
+  0.937500  0.875000  0.250000
+  0.875000  0.812500  0.312500
+  0.875000  0.875000  0.312500
+  0.875000  0.937500  0.250000
+  0.625000  0.687500  0.187500
+  0.687500  0.625000  0.250000
+  0.625000  0.687500  0.250000
+  0.562500  0.625000  0.187500
+  0.625000  0.562500  0.250000
+  0.562500  0.625000  0.250000
+  0.625000  0.750000  0.187500
+  0.625000  0.812500  0.062500
+  0.625000  0.812500  0.125000
+  0.562500  0.687500  0.125000
+  0.562500  0.687500  0.187500
+  0.562500  0.750000  0.125000
+  0.750000  0.625000  0.312500
+  0.812500  0.625000  0.187500
+  0.812500  0.625000  0.250000
+  0.687500  0.562500  0.250000
+  0.750000  0.562500  0.312500
+  0.687500  0.750000  0.312500
+  0.687500  0.812500  0.250000
+  0.625000  0.812500  0.187500
+  0.562500  0.687500  0.250000
+  0.562500  0.750000  0.187500
+  0.625000  0.750000  0.312500
+  0.625000  0.812500  0.250000
+  0.750000  0.687500  0.375000
+  0.812500  0.625000  0.312500
+  0.812500  0.625000  0.375000
+  0.812500  0.687500  0.375000
+  0.750000  0.562500  0.375000
+  0.750000  0.625000  0.437500
+  0.750000  0.812500  0.312500
+  0.812500  0.750000  0.375000
+  0.812500  0.812500  0.375000
+  0.687500  0.750000  0.375000
+  0.750000  0.687500  0.437500
+  0.750000  0.812500  0.375000
+  0.812500  0.937500  0.187500
+  0.687500  0.875000  0.187500
+  0.750000  0.937500  0.187500
+  0.812500  0.875000  0.312500
+  0.812500  0.937500  0.250000
+  0.687500  0.812500  0.312500
+  0.687500  0.875000  0.250000
+  0.750000  0.875000  0.312500
+  0.937500  0.687500  0.187500
+  1.000000  0.687500  0.125000
+  0.937500  0.687500  0.250000
+  1.000000  0.687500  0.187500
+  0.875000  0.625000  0.062500
+  0.812500  0.562500  0.062500
+  0.875000  0.625000  0.187500
+  0.937500  0.625000  0.125000
+  0.812500  0.562500  0.125000
+  0.812500  0.562500  0.250000
+  0.875000  0.562500  0.187500
+  0.937500  0.625000  0.187500
+  0.875000  0.625000  0.312500
+  0.937500  0.625000  0.250000
+  0.812500  0.562500  0.312500
+  0.875000  0.562500  0.250000
+  0.875000  0.562500  0.312500
+  1.000000  0.625000  0.187500
+  0.937500  0.562500  0.187500
+  0.937500  0.562500  0.250000
+  0.812500  1.000000  0.125000
+  0.875000  1.000000  0.187500
+  0.625000  0.875000  0.062500
+  0.562500  0.812500  0.062500
+  0.687500  0.937500  0.125000
+  0.562500  0.812500  0.125000
+  0.625000  0.875000  0.187500
+  0.812500  1.000000  0.187500
+  0.687500  0.937500  0.187500
+  0.937500  0.812500  0.312500
+  1.000000  0.812500  0.312500
+  0.937500  0.875000  0.312500
+  1.000000  0.875000  0.312500
+  0.875000  0.687500  0.375000
+  0.937500  0.625000  0.312500
+  0.937500  0.687500  0.375000
+  0.812500  0.625000  0.437500
+  0.875000  0.562500  0.375000
+  0.875000  0.625000  0.437500
+  0.937500  0.750000  0.375000
+  0.875000  0.812500  0.375000
+  0.937500  0.812500  0.375000
+  0.812500  0.687500  0.437500
+  0.875000  0.687500  0.437500
+  0.875000  0.750000  0.437500
+  0.937500  0.562500  0.312500
+  1.000000  0.812500  0.375000
+  0.937500  0.687500  0.437500
+  0.937500  0.750000  0.437500
+  0.875000  0.937500  0.312500
+  0.937500  0.875000  0.375000
+  0.812500  0.875000  0.375000
+  0.875000  0.812500  0.437500
+  0.812500  0.937500  0.312500
+  0.937500  0.812500  0.437500
+  0.750000  0.875000  0.937500
+  0.812500  0.875000  0.875000
+  0.687500  0.812500  0.875000
+  0.750000  0.812500  0.875000
+  0.687500  0.875000  0.875000
+  0.750000  0.937500  0.875000
+  0.812500  0.937500  0.812500
+  0.687500  0.875000  0.812500
+  0.750000  0.875000  0.812500
+  0.687500  0.937500  0.812500
+  0.875000  0.812500  0.937500
+  0.812500  0.687500  1.000000
+  0.875000  0.750000  0.937500
+  0.937500  0.812500  0.937500
+  0.875000  0.687500  1.000000
+  0.937500  0.750000  0.937500
+  0.687500  0.812500  1.000000
+  0.687500  0.875000  0.937500
+  0.750000  0.937500  0.937500
+  0.687500  0.875000  1.000000
+  0.687500  0.937500  0.937500
+  0.812500  0.812500  0.875000
+  0.875000  0.812500  0.875000
+  0.875000  0.937500  0.812500
+  0.812500  0.875000  0.812500
+  0.937500  0.875000  0.875000
+  0.875000  0.875000  0.812500
+  0.937500  0.875000  0.812500
+  0.625000  0.750000  0.937500
+  0.687500  0.750000  0.875000
+  0.625000  0.812500  0.875000
+  0.625000  0.812500  0.812500
+  0.687500  0.812500  0.812500
+  0.562500  0.750000  0.875000
+  0.625000  0.750000  0.812500
+  0.562500  0.812500  0.812500
+  0.750000  0.687500  0.937500
+  0.812500  0.687500  0.937500
+  0.812500  0.625000  1.000000
+  0.750000  0.625000  0.937500
+  0.812500  0.625000  0.937500
+  0.625000  0.812500  0.937500
+  0.625000  0.812500  1.000000
+  0.562500  0.750000  0.937500
+  0.562500  0.812500  0.937500
+  0.812500  0.750000  0.875000
+  0.750000  0.812500  0.812500
+  0.812500  0.812500  0.812500
+  0.687500  0.750000  0.812500
+  0.750000  0.687500  0.875000
+  0.812500  0.750000  0.812500
+  0.687500  0.937500  0.875000
+  0.625000  0.875000  0.812500
+  0.625000  0.937500  0.812500
+  0.625000  0.875000  0.937500
+  0.625000  0.937500  0.875000
+  0.562500  0.812500  0.875000
+  0.562500  0.875000  0.812500
+  0.562500  0.875000  0.875000
+  0.937500  0.812500  0.875000
+  0.875000  0.687500  0.937500
+  0.937500  0.750000  0.875000
+  0.875000  0.812500  0.812500
+  0.937500  0.812500  0.812500
+  0.812500  0.687500  0.875000
+  0.875000  0.687500  0.875000
+  0.875000  0.750000  0.812500
+  0.687500  1.000000  0.812500
+  0.687500  1.000000  0.875000
+  0.812500  0.937500  0.750000
+  0.812500  1.000000  0.687500
+  0.875000  0.937500  0.750000
+  0.875000  1.000000  0.687500
+  0.687500  0.875000  0.750000
+  0.625000  0.937500  0.750000
+  0.687500  0.937500  0.687500
+  0.625000  0.812500  0.750000
+  0.562500  0.875000  0.750000
+  0.625000  0.875000  0.687500
+  0.750000  0.937500  0.687500
+  0.812500  0.875000  0.750000
+  0.812500  0.937500  0.687500
+  0.687500  0.812500  0.750000
+  0.687500  0.875000  0.687500
+  0.750000  0.875000  0.687500
+  0.625000  1.000000  0.812500
+  0.562500  0.937500  0.750000
+  0.812500  1.000000  0.625000
+  0.687500  0.937500  0.625000
+  0.750000  0.937500  0.625000
+  1.000000  0.812500  0.875000
+  1.000000  0.875000  0.812500
+  0.937500  0.687500  0.937500
+  0.875000  0.625000  0.937500
+  1.000000  0.812500  0.812500
+  0.937500  0.687500  0.875000
+  0.625000  0.937500  0.937500
+  0.562500  0.875000  0.937500
+  0.562500  0.937500  0.875000
+  0.875000  0.937500  0.687500
+  0.937500  0.875000  0.750000
+  0.812500  0.875000  0.687500
+  0.875000  0.812500  0.750000
+  0.812500  0.937500  0.625000
+  0.937500  0.812500  0.750000
+  0.250000  0.062500  0.312500
+  0.312500  0.125000  0.187500
+  0.312500  0.125000  0.250000
+  0.250000  0.125000  0.312500
+  0.312500  0.187500  0.187500
+  0.312500  0.187500  0.250000
+  0.312500  0.000000  0.312500
+  0.312500  0.062500  0.312500
+  0.250000  0.062500  0.375000
+  0.312500  0.000000  0.375000
+  0.312500  0.062500  0.375000
+  0.375000  0.062500  0.187500
+  0.375000  0.125000  0.187500
+  0.375000  0.187500  0.125000
+  0.437500  0.125000  0.125000
+  0.437500  0.187500  0.125000
+  0.375000  0.062500  0.250000
+  0.375000  0.000000  0.312500
+  0.437500  0.062500  0.187500
+  0.437500  0.062500  0.250000
+  0.312500  0.125000  0.312500
+  0.375000  0.187500  0.187500
+  0.375000  0.187500  0.250000
+  0.375000  0.062500  0.312500
+  0.375000  0.125000  0.312500
+  0.437500  0.125000  0.187500
+  0.437500  0.187500  0.187500
+  0.437500  0.125000  0.250000
+  0.125000  0.250000  0.312500
+  0.125000  0.312500  0.187500
+  0.125000  0.312500  0.250000
+  0.187500  0.250000  0.312500
+  0.187500  0.312500  0.187500
+  0.187500  0.312500  0.250000
+  0.062500  0.250000  0.375000
+  0.000000  0.312500  0.312500
+  0.062500  0.312500  0.312500
+  0.062500  0.250000  0.437500
+  0.000000  0.312500  0.375000
+  0.062500  0.312500  0.375000
+  0.125000  0.312500  0.312500
+  0.187500  0.250000  0.375000
+  0.187500  0.312500  0.312500
+  0.125000  0.250000  0.437500
+  0.125000  0.312500  0.375000
+  0.187500  0.312500  0.375000
+  0.125000  0.375000  0.187500
+  0.187500  0.375000  0.125000
+  0.187500  0.375000  0.187500
+  0.187500  0.437500  0.125000
+  0.062500  0.375000  0.250000
+  0.000000  0.375000  0.312500
+  0.062500  0.375000  0.312500
+  0.062500  0.437500  0.250000
+  0.187500  0.375000  0.250000
+  0.125000  0.375000  0.312500
+  0.187500  0.375000  0.312500
+  0.187500  0.437500  0.187500
+  0.125000  0.437500  0.250000
+  0.250000  0.187500  0.375000
+  0.312500  0.187500  0.312500
+  0.250000  0.125000  0.437500
+  0.312500  0.125000  0.375000
+  0.312500  0.187500  0.375000
+  0.250000  0.312500  0.312500
+  0.312500  0.250000  0.312500
+  0.312500  0.312500  0.312500
+  0.250000  0.187500  0.437500
+  0.250000  0.312500  0.375000
+  0.312500  0.250000  0.375000
+  0.312500  0.312500  0.375000
+  0.375000  0.250000  0.187500
+  0.437500  0.250000  0.125000
+  0.250000  0.375000  0.187500
+  0.312500  0.375000  0.187500
+  0.250000  0.437500  0.125000
+  0.312500  0.437500  0.125000
+  0.312500  0.375000  0.250000
+  0.250000  0.375000  0.312500
+  0.312500  0.375000  0.312500
+  0.250000  0.437500  0.187500
+  0.312500  0.437500  0.187500
+  0.312500  0.437500  0.250000
+  0.375000  0.312500  0.250000
+  0.375000  0.187500  0.312500
+  0.375000  0.250000  0.312500
+  0.437500  0.250000  0.187500
+  0.437500  0.312500  0.250000
+  0.375000  0.312500  0.312500
+  0.375000  0.375000  0.312500
+  0.375000  0.437500  0.187500
+  0.375000  0.437500  0.250000
+  0.437500  0.375000  0.250000
+  0.312500  0.125000  0.437500
+  0.312500  0.125000  0.500000
+  0.312500  0.187500  0.437500
+  0.312500  0.187500  0.500000
+  0.375000  0.062500  0.375000
+  0.437500  0.062500  0.312500
+  0.375000  0.125000  0.437500
+  0.375000  0.187500  0.375000
+  0.437500  0.125000  0.312500
+  0.437500  0.187500  0.375000
+  0.375000  0.187500  0.437500
+  0.375000  0.187500  0.500000
+  0.437500  0.187500  0.437500
+  0.125000  0.312500  0.437500
+  0.125000  0.312500  0.500000
+  0.187500  0.312500  0.437500
+  0.187500  0.312500  0.500000
+  0.062500  0.375000  0.375000
+  0.062500  0.375000  0.437500
+  0.062500  0.437500  0.312500
+  0.062500  0.437500  0.375000
+  0.125000  0.375000  0.437500
+  0.187500  0.375000  0.375000
+  0.187500  0.375000  0.437500
+  0.125000  0.437500  0.312500
+  0.125000  0.437500  0.375000
+  0.187500  0.437500  0.375000
+  0.187500  0.375000  0.500000
+  0.125000  0.437500  0.437500
+  0.187500  0.437500  0.437500
+  0.312500  0.375000  0.375000
+  0.250000  0.375000  0.437500
+  0.312500  0.437500  0.312500
+  0.250000  0.437500  0.375000
+  0.375000  0.312500  0.375000
+  0.375000  0.250000  0.437500
+  0.437500  0.312500  0.312500
+  0.437500  0.250000  0.375000
+  0.437500  0.312500  0.375000
+  0.375000  0.312500  0.437500
+  0.375000  0.437500  0.312500
+  0.437500  0.375000  0.312500
+  0.437500  0.375000  0.375000
+  0.437500  0.250000  0.437500
+  0.437500  0.312500  0.437500
+  0.250000  0.437500  0.437500
+  0.562500  0.187500  0.062500
+  0.500000  0.187500  0.125000
+  0.562500  0.125000  0.125000
+  0.500000  0.125000  0.187500
+  0.562500  0.187500  0.125000
+  0.562500  0.250000  0.062500
+  0.625000  0.312500  0.000000
+  0.625000  0.187500  0.062500
+  0.625000  0.250000  0.062500
+  0.687500  0.312500  0.000000
+  0.562500  0.312500  0.062500
+  0.500000  0.187500  0.187500
+  0.562500  0.250000  0.125000
+  0.562500  0.312500  0.125000
+  0.625000  0.312500  0.062500
+  0.687500  0.375000  0.000000
+  0.625000  0.375000  0.062500
+  0.562500  0.125000  0.187500
+  0.625000  0.125000  0.187500
+  0.625000  0.187500  0.125000
+  0.687500  0.187500  0.125000
+  0.562500  0.125000  0.250000
+  0.562500  0.187500  0.187500
+  0.562500  0.187500  0.250000
+  0.625000  0.187500  0.187500
+  0.687500  0.187500  0.187500
+  0.625000  0.187500  0.250000
+  0.687500  0.312500  0.062500
+  0.687500  0.250000  0.125000
+  0.625000  0.312500  0.125000
+  0.625000  0.250000  0.187500
+  0.687500  0.312500  0.125000
+  0.750000  0.312500  0.062500
+  0.687500  0.375000  0.062500
+  0.750000  0.375000  0.062500
+  0.687500  0.250000  0.187500
+  0.750000  0.312500  0.125000
+  0.250000  0.562500  0.062500
+  0.312500  0.500000  0.125000
+  0.312500  0.562500  0.062500
+  0.250000  0.562500  0.125000
+  0.312500  0.500000  0.187500
+  0.312500  0.562500  0.125000
+  0.312500  0.625000  0.000000
+  0.250000  0.625000  0.062500
+  0.312500  0.625000  0.062500
+  0.312500  0.687500  0.000000
+  0.375000  0.562500  0.062500
+  0.375000  0.500000  0.187500
+  0.375000  0.562500  0.125000
+  0.437500  0.562500  0.125000
+  0.375000  0.625000  0.062500
+  0.375000  0.687500  0.000000
+  0.437500  0.625000  0.062500
+  0.125000  0.562500  0.187500
+  0.125000  0.500000  0.312500
+  0.125000  0.562500  0.250000
+  0.187500  0.562500  0.187500
+  0.187500  0.500000  0.312500
+  0.187500  0.562500  0.250000
+  0.125000  0.625000  0.187500
+  0.187500  0.625000  0.125000
+  0.187500  0.625000  0.187500
+  0.187500  0.687500  0.125000
+  0.125000  0.562500  0.312500
+  0.187500  0.500000  0.375000
+  0.187500  0.562500  0.312500
+  0.187500  0.562500  0.375000
+  0.187500  0.625000  0.250000
+  0.187500  0.687500  0.187500
+  0.187500  0.625000  0.312500
+  0.312500  0.625000  0.125000
+  0.250000  0.625000  0.187500
+  0.312500  0.625000  0.187500
+  0.312500  0.687500  0.062500
+  0.250000  0.687500  0.125000
+  0.312500  0.687500  0.125000
+  0.375000  0.562500  0.187500
+  0.375000  0.562500  0.250000
+  0.437500  0.562500  0.187500
+  0.437500  0.562500  0.250000
+  0.375000  0.625000  0.187500
+  0.375000  0.687500  0.062500
+  0.375000  0.687500  0.125000
+  0.437500  0.625000  0.125000
+  0.437500  0.625000  0.187500
+  0.437500  0.687500  0.125000
+  0.250000  0.562500  0.312500
+  0.312500  0.562500  0.312500
+  0.250000  0.562500  0.375000
+  0.312500  0.562500  0.375000
+  0.312500  0.625000  0.250000
+  0.250000  0.687500  0.187500
+  0.312500  0.687500  0.187500
+  0.250000  0.625000  0.312500
+  0.312500  0.625000  0.312500
+  0.312500  0.687500  0.250000
+  0.375000  0.687500  0.187500
+  0.437500  0.625000  0.250000
+  0.437500  0.687500  0.187500
+  0.375000  0.625000  0.312500
+  0.375000  0.687500  0.250000
+  0.375000  0.750000  0.062500
+  0.437500  0.750000  0.062500
+  0.312500  0.750000  0.125000
+  0.312500  0.750000  0.187500
+  0.437500  0.750000  0.125000
+  0.375000  0.750000  0.187500
+  0.562500  0.375000  0.187500
+  0.500000  0.312500  0.312500
+  0.562500  0.375000  0.250000
+  0.562500  0.437500  0.187500
+  0.500000  0.375000  0.312500
+  0.562500  0.437500  0.250000
+  0.625000  0.312500  0.187500
+  0.625000  0.375000  0.187500
+  0.625000  0.437500  0.125000
+  0.687500  0.375000  0.125000
+  0.687500  0.437500  0.125000
+  0.562500  0.250000  0.312500
+  0.562500  0.312500  0.312500
+  0.500000  0.312500  0.375000
+  0.562500  0.250000  0.375000
+  0.562500  0.312500  0.375000
+  0.625000  0.312500  0.250000
+  0.687500  0.312500  0.187500
+  0.625000  0.250000  0.312500
+  0.687500  0.312500  0.250000
+  0.625000  0.437500  0.187500
+  0.562500  0.375000  0.312500
+  0.625000  0.437500  0.250000
+  0.687500  0.375000  0.187500
+  0.687500  0.437500  0.187500
+  0.625000  0.312500  0.312500
+  0.625000  0.375000  0.312500
+  0.687500  0.375000  0.250000
+  0.625000  0.500000  0.187500
+  0.687500  0.500000  0.125000
+  0.500000  0.625000  0.187500
+  0.500000  0.687500  0.125000
+  0.562500  0.437500  0.312500
+  0.562500  0.375000  0.375000
+  0.687500  0.500000  0.187500
+  0.625000  0.437500  0.312500
+  0.500000  0.687500  0.187500
+  0.750000  0.437500  0.125000
+  0.750000  0.375000  0.187500
+  0.750000  0.437500  0.187500
+  0.562500  0.125000  0.562500
+  0.500000  0.125000  0.687500
+  0.562500  0.125000  0.625000
+  0.562500  0.187500  0.500000
+  0.500000  0.187500  0.625000
+  0.562500  0.187500  0.562500
+  0.625000  0.062500  0.562500
+  0.625000  0.000000  0.687500
+  0.625000  0.062500  0.625000
+  0.687500  0.062500  0.500000
+  0.687500  0.000000  0.625000
+  0.687500  0.062500  0.562500
+  0.625000  0.125000  0.562500
+  0.625000  0.187500  0.437500
+  0.625000  0.187500  0.500000
+  0.687500  0.125000  0.437500
+  0.687500  0.125000  0.500000
+  0.687500  0.187500  0.437500
+  0.562500  0.125000  0.687500
+  0.500000  0.187500  0.687500
+  0.562500  0.187500  0.625000
+  0.562500  0.187500  0.687500
+  0.625000  0.062500  0.687500
+  0.687500  0.000000  0.687500
+  0.687500  0.062500  0.625000
+  0.687500  0.062500  0.687500
+  0.625000  0.187500  0.562500
+  0.687500  0.125000  0.562500
+  0.687500  0.187500  0.500000
+  0.625000  0.187500  0.625000
+  0.687500  0.125000  0.625000
+  0.625000  0.250000  0.437500
+  0.625000  0.312500  0.375000
+  0.687500  0.250000  0.375000
+  0.687500  0.312500  0.312500
+  0.562500  0.250000  0.562500
+  0.562500  0.312500  0.500000
+  0.562500  0.250000  0.625000
+  0.562500  0.312500  0.562500
+  0.625000  0.312500  0.437500
+  0.687500  0.250000  0.437500
+  0.687500  0.312500  0.375000
+  0.625000  0.250000  0.562500
+  0.625000  0.312500  0.500000
+  0.687500  0.312500  0.437500
+  0.687500  0.375000  0.312500
+  0.625000  0.375000  0.437500
+  0.687500  0.375000  0.375000
+  0.750000  0.125000  0.437500
+  0.812500  0.125000  0.375000
+  0.750000  0.187500  0.375000
+  0.812500  0.187500  0.312500
+  0.750000  0.062500  0.562500
+  0.812500  0.062500  0.500000
+  0.750000  0.062500  0.625000
+  0.812500  0.062500  0.562500
+  0.812500  0.125000  0.437500
+  0.750000  0.187500  0.437500
+  0.812500  0.187500  0.375000
+  0.750000  0.125000  0.562500
+  0.812500  0.125000  0.500000
+  0.812500  0.187500  0.437500
+  0.875000  0.187500  0.312500
+  0.875000  0.125000  0.437500
+  0.875000  0.187500  0.375000
+  0.750000  0.312500  0.312500
+  0.812500  0.250000  0.312500
+  0.750000  0.312500  0.375000
+  0.812500  0.250000  0.375000
+  0.750000  0.375000  0.312500
+  0.875000  0.250000  0.312500
+  0.062500  0.562500  0.687500
+  0.125000  0.500000  0.812500
+  0.125000  0.562500  0.750000
+  0.125000  0.562500  0.687500
+  0.187500  0.500000  0.812500
+  0.187500  0.562500  0.750000
+  0.000000  0.625000  0.687500
+  0.062500  0.625000  0.687500
+  0.062500  0.625000  0.625000
+  0.000000  0.687500  0.625000
+  0.062500  0.687500  0.625000
+  0.062500  0.562500  0.812500
+  0.125000  0.562500  0.812500
+  0.187500  0.500000  0.875000
+  0.125000  0.562500  0.875000
+  0.187500  0.562500  0.875000
+  0.062500  0.625000  0.750000
+  0.000000  0.687500  0.687500
+  0.062500  0.625000  0.812500
+  0.062500  0.687500  0.750000
+  0.125000  0.625000  0.687500
+  0.187500  0.562500  0.812500
+  0.187500  0.625000  0.750000
+  0.062500  0.687500  0.687500
+  0.125000  0.687500  0.687500
+  0.125000  0.625000  0.812500
+  0.187500  0.625000  0.812500
+  0.125000  0.687500  0.750000
+  0.250000  0.562500  0.562500
+  0.312500  0.500000  0.625000
+  0.312500  0.562500  0.562500
+  0.250000  0.562500  0.625000
+  0.312500  0.500000  0.687500
+  0.312500  0.562500  0.625000
+  0.250000  0.625000  0.437500
+  0.312500  0.625000  0.375000
+  0.312500  0.625000  0.437500
+  0.250000  0.687500  0.375000
+  0.312500  0.687500  0.312500
+  0.312500  0.687500  0.375000
+  0.312500  0.625000  0.500000
+  0.250000  0.625000  0.562500
+  0.312500  0.625000  0.562500
+  0.250000  0.687500  0.437500
+  0.312500  0.687500  0.437500
+  0.312500  0.687500  0.500000
+  0.375000  0.562500  0.562500
+  0.375000  0.500000  0.687500
+  0.375000  0.562500  0.625000
+  0.437500  0.562500  0.625000
+  0.375000  0.625000  0.437500
+  0.375000  0.687500  0.312500
+  0.375000  0.687500  0.375000
+  0.437500  0.687500  0.375000
+  0.375000  0.625000  0.562500
+  0.375000  0.687500  0.437500
+  0.375000  0.687500  0.500000
+  0.437500  0.625000  0.562500
+  0.437500  0.687500  0.437500
+  0.187500  0.625000  0.625000
+  0.187500  0.625000  0.687500
+  0.125000  0.687500  0.562500
+  0.125000  0.687500  0.625000
+  0.187500  0.687500  0.625000
+  0.312500  0.625000  0.625000
+  0.250000  0.625000  0.687500
+  0.312500  0.625000  0.687500
+  0.187500  0.687500  0.562500
+  0.312500  0.687500  0.562500
+  0.250000  0.687500  0.625000
+  0.312500  0.687500  0.625000
+  0.250000  0.562500  0.812500
+  0.250000  0.562500  0.875000
+  0.375000  0.562500  0.687500
+  0.375000  0.562500  0.750000
+  0.437500  0.562500  0.687500
+  0.437500  0.562500  0.750000
+  0.375000  0.625000  0.687500
+  0.375000  0.687500  0.562500
+  0.375000  0.687500  0.625000
+  0.437500  0.625000  0.625000
+  0.437500  0.625000  0.687500
+  0.437500  0.687500  0.625000
+  0.312500  0.625000  0.750000
+  0.187500  0.687500  0.687500
+  0.250000  0.687500  0.687500
+  0.250000  0.625000  0.812500
+  0.312500  0.687500  0.750000
+  0.312500  0.687500  0.687500
+  0.375000  0.687500  0.687500
+  0.437500  0.625000  0.750000
+  0.437500  0.687500  0.687500
+  0.375000  0.687500  0.750000
+  0.125000  0.750000  0.562500
+  0.125000  0.812500  0.500000
+  0.187500  0.750000  0.562500
+  0.187500  0.812500  0.500000
+  0.062500  0.750000  0.625000
+  0.062500  0.750000  0.687500
+  0.125000  0.812500  0.562500
+  0.187500  0.750000  0.625000
+  0.125000  0.750000  0.687500
+  0.187500  0.812500  0.625000
+  0.187500  0.812500  0.562500
+  0.187500  0.875000  0.500000
+  0.187500  0.875000  0.562500
+  0.312500  0.750000  0.375000
+  0.312500  0.812500  0.312500
+  0.312500  0.750000  0.437500
+  0.312500  0.812500  0.375000
+  0.375000  0.750000  0.312500
+  0.375000  0.812500  0.250000
+  0.437500  0.750000  0.312500
+  0.437500  0.812500  0.250000
+  0.375000  0.812500  0.312500
+  0.375000  0.750000  0.437500
+  0.375000  0.812500  0.375000
+  0.437500  0.750000  0.375000
+  0.437500  0.812500  0.312500
+  0.437500  0.812500  0.375000
+  0.375000  0.875000  0.312500
+  0.437500  0.875000  0.250000
+  0.437500  0.875000  0.312500
+  0.375000  0.750000  0.562500
+  0.375000  0.812500  0.437500
+  0.437500  0.750000  0.562500
+  0.437500  0.812500  0.437500
+  0.312500  0.750000  0.625000
+  0.250000  0.812500  0.562500
+  0.312500  0.750000  0.687500
+  0.250000  0.812500  0.625000
+  0.312500  0.812500  0.625000
+  0.312500  0.812500  0.562500
+  0.437500  0.750000  0.625000
+  0.375000  0.750000  0.687500
+  0.375000  0.812500  0.625000
+  0.250000  0.875000  0.562500
+  0.312500  0.875000  0.562500
+  0.437500  0.875000  0.375000
+  0.562500  0.250000  0.812500
+  0.500000  0.312500  0.812500
+  0.562500  0.312500  0.812500
+  0.562500  0.250000  0.875000
+  0.500000  0.312500  0.875000
+  0.562500  0.312500  0.875000
+  0.625000  0.250000  0.687500
+  0.625000  0.312500  0.562500
+  0.625000  0.312500  0.625000
+  0.687500  0.250000  0.625000
+  0.687500  0.312500  0.500000
+  0.687500  0.312500  0.562500
+  0.625000  0.312500  0.687500
+  0.625000  0.312500  0.750000
+  0.625000  0.250000  0.812500
+  0.687500  0.250000  0.687500
+  0.687500  0.312500  0.625000
+  0.687500  0.312500  0.687500
+  0.687500  0.312500  0.750000
+  0.562500  0.375000  0.687500
+  0.562500  0.375000  0.750000
+  0.500000  0.375000  0.812500
+  0.562500  0.437500  0.687500
+  0.562500  0.437500  0.750000
+  0.625000  0.375000  0.562500
+  0.687500  0.375000  0.437500
+  0.687500  0.375000  0.500000
+  0.687500  0.437500  0.437500
+  0.625000  0.375000  0.687500
+  0.687500  0.375000  0.562500
+  0.687500  0.375000  0.625000
+  0.625000  0.437500  0.625000
+  0.687500  0.437500  0.500000
+  0.687500  0.437500  0.625000
+  0.625000  0.312500  0.812500
+  0.562500  0.375000  0.812500
+  0.625000  0.375000  0.812500
+  0.687500  0.375000  0.687500
+  0.687500  0.375000  0.750000
+  0.625000  0.437500  0.687500
+  0.625000  0.437500  0.750000
+  0.687500  0.437500  0.687500
+  0.625000  0.250000  0.937500
+  0.625000  0.312500  0.875000
+  0.687500  0.250000  0.875000
+  0.687500  0.312500  0.812500
+  0.687500  0.312500  0.875000
+  0.625000  0.312500  0.937500
+  0.625000  0.312500  1.000000
+  0.687500  0.250000  0.937500
+  0.687500  0.312500  0.937500
+  0.687500  0.312500  1.000000
+  0.562500  0.375000  0.875000
+  0.562500  0.437500  0.812500
+  0.625000  0.375000  0.937500
+  0.687500  0.375000  0.812500
+  0.687500  0.375000  0.875000
+  0.625000  0.437500  0.812500
+  0.687500  0.437500  0.875000
+  0.687500  0.375000  0.937500
+  0.687500  0.375000  1.000000
+  0.687500  0.437500  0.937500
+  0.750000  0.125000  0.687500
+  0.812500  0.125000  0.562500
+  0.812500  0.125000  0.625000
+  0.750000  0.187500  0.625000
+  0.812500  0.187500  0.500000
+  0.812500  0.187500  0.562500
+  0.812500  0.125000  0.687500
+  0.750000  0.187500  0.687500
+  0.812500  0.187500  0.625000
+  0.812500  0.187500  0.687500
+  0.875000  0.125000  0.562500
+  0.875000  0.187500  0.437500
+  0.875000  0.187500  0.500000
+  0.937500  0.187500  0.437500
+  0.875000  0.187500  0.562500
+  0.875000  0.187500  0.625000
+  0.937500  0.187500  0.500000
+  0.750000  0.312500  0.562500
+  0.812500  0.250000  0.562500
+  0.812500  0.312500  0.500000
+  0.750000  0.312500  0.625000
+  0.812500  0.250000  0.625000
+  0.812500  0.312500  0.562500
+  0.750000  0.375000  0.437500
+  0.812500  0.375000  0.375000
+  0.750000  0.437500  0.375000
+  0.812500  0.437500  0.312500
+  0.812500  0.375000  0.437500
+  0.750000  0.375000  0.562500
+  0.812500  0.375000  0.500000
+  0.750000  0.437500  0.437500
+  0.812500  0.437500  0.375000
+  0.812500  0.437500  0.437500
+  0.875000  0.250000  0.437500
+  0.875000  0.312500  0.375000
+  0.937500  0.250000  0.375000
+  0.937500  0.312500  0.312500
+  0.875000  0.312500  0.437500
+  0.875000  0.250000  0.562500
+  0.875000  0.312500  0.500000
+  0.937500  0.250000  0.437500
+  0.937500  0.312500  0.375000
+  0.937500  0.312500  0.437500
+  0.875000  0.375000  0.437500
+  0.875000  0.437500  0.312500
+  0.875000  0.437500  0.375000
+  0.937500  0.375000  0.312500
+  0.937500  0.375000  0.375000
+  0.750000  0.312500  0.812500
+  0.812500  0.312500  0.812500
+  0.750000  0.312500  0.875000
+  0.812500  0.312500  0.875000
+  0.750000  0.375000  0.687500
+  0.812500  0.375000  0.562500
+  0.750000  0.437500  0.625000
+  0.812500  0.437500  0.500000
+  0.812500  0.375000  0.750000
+  0.750000  0.375000  0.812500
+  0.750000  0.437500  0.687500
+  0.812500  0.437500  0.750000
+  0.875000  0.312500  0.562500
+  0.937500  0.312500  0.500000
+  0.875000  0.437500  0.437500
+  0.937500  0.375000  0.437500
+  0.812500  0.375000  0.812500
+  0.875000  0.375000  0.812500
+  0.875000  0.437500  0.750000
+  0.750000  0.375000  0.937500
+  0.812500  0.375000  0.875000
+  0.750000  0.437500  0.875000
+  0.812500  0.437500  0.812500
+  0.812500  0.437500  0.875000
+  0.812500  0.375000  0.937500
+  0.750000  0.437500  0.937500
+  0.812500  0.437500  0.937500
+  0.875000  0.437500  0.812500
+  0.875000  0.437500  0.875000
+  0.187500  0.625000  0.937500
+  0.187500  0.625000  0.875000
+  0.125000  0.687500  0.875000
+  0.125000  0.687500  0.812500
+  0.187500  0.687500  0.875000
+  0.250000  0.625000  0.937500
+  0.312500  0.625000  1.000000
+  0.187500  0.687500  0.937500
+  0.250000  0.687500  0.937500
+  0.312500  0.687500  1.000000
+  0.312500  0.625000  0.937500
+  0.187500  0.687500  0.812500
+  0.250000  0.687500  0.875000
+  0.312500  0.687500  0.875000
+  0.312500  0.687500  0.937500
+  0.375000  0.687500  1.000000
+  0.375000  0.687500  0.937500
+  0.125000  0.750000  0.812500
+  0.125000  0.812500  0.812500
+  0.187500  0.750000  0.875000
+  0.187500  0.812500  0.875000
+  0.125000  0.812500  0.750000
+  0.187500  0.750000  0.812500
+  0.187500  0.812500  0.750000
+  0.187500  0.812500  0.812500
+  0.187500  0.875000  0.812500
+  0.187500  0.875000  0.750000
+  0.312500  0.750000  0.937500
+  0.250000  0.812500  0.875000
+  0.312500  0.750000  0.875000
+  0.250000  0.812500  0.812500
+  0.312500  0.812500  0.875000
+  0.312500  0.812500  0.937500
+  0.375000  0.750000  0.937500
+  0.375000  0.812500  0.937500
+  0.250000  0.875000  0.812500
+  0.312500  0.875000  0.875000
+  0.562500  0.625000  0.625000
+  0.500000  0.625000  0.687500
+  0.562500  0.625000  0.687500
+  0.562500  0.687500  0.562500
+  0.500000  0.687500  0.625000
+  0.562500  0.687500  0.625000
+  0.625000  0.562500  0.625000
+  0.625000  0.500000  0.687500
+  0.687500  0.562500  0.562500
+  0.687500  0.500000  0.625000
+  0.687500  0.562500  0.625000
+  0.625000  0.562500  0.687500
+  0.625000  0.625000  0.687500
+  0.625000  0.687500  0.562500
+  0.625000  0.687500  0.625000
+  0.687500  0.625000  0.562500
+  0.687500  0.625000  0.625000
+  0.687500  0.687500  0.625000
+  0.562500  0.625000  0.750000
+  0.500000  0.687500  0.687500
+  0.562500  0.687500  0.687500
+  0.562500  0.687500  0.750000
+  0.625000  0.562500  0.750000
+  0.687500  0.500000  0.687500
+  0.687500  0.562500  0.687500
+  0.687500  0.562500  0.750000
+  0.625000  0.687500  0.687500
+  0.687500  0.625000  0.687500
+  0.687500  0.687500  0.687500
+  0.625000  0.687500  0.750000
+  0.687500  0.625000  0.750000
+  0.812500  0.500000  0.312500
+  0.812500  0.500000  0.375000
+  0.875000  0.500000  0.312500
+  0.562500  0.750000  0.375000
+  0.500000  0.812500  0.312500
+  0.562500  0.812500  0.312500
+  0.562500  0.750000  0.437500
+  0.500000  0.812500  0.375000
+  0.562500  0.812500  0.375000
+  0.625000  0.812500  0.312500
+  0.625000  0.750000  0.437500
+  0.625000  0.812500  0.375000
+  0.687500  0.812500  0.375000
+  0.562500  0.875000  0.250000
+  0.500000  0.875000  0.312500
+  0.562500  0.875000  0.312500
+  0.562500  0.937500  0.250000
+  0.625000  0.875000  0.312500
+  0.687500  0.875000  0.312500
+  0.625000  0.937500  0.250000
+  0.625000  0.750000  0.562500
+  0.625000  0.812500  0.437500
+  0.625000  0.812500  0.500000
+  0.687500  0.750000  0.562500
+  0.687500  0.812500  0.437500
+  0.687500  0.812500  0.500000
+  0.562500  0.750000  0.625000
+  0.562500  0.812500  0.562500
+  0.562500  0.750000  0.687500
+  0.562500  0.812500  0.625000
+  0.625000  0.812500  0.562500
+  0.687500  0.750000  0.625000
+  0.687500  0.812500  0.562500
+  0.625000  0.750000  0.687500
+  0.625000  0.812500  0.625000
+  0.687500  0.812500  0.625000
+  0.562500  0.875000  0.375000
+  0.562500  0.875000  0.437500
+  0.562500  0.937500  0.312500
+  0.562500  0.937500  0.375000
+  0.625000  0.875000  0.437500
+  0.687500  0.875000  0.375000
+  0.687500  0.875000  0.437500
+  0.625000  0.937500  0.312500
+  0.625000  0.937500  0.375000
+  0.687500  0.937500  0.375000
+  0.687500  0.875000  0.500000
+  0.625000  0.875000  0.562500
+  0.687500  0.875000  0.562500
+  0.625000  0.937500  0.437500
+  0.687500  0.937500  0.437500
+  0.750000  0.562500  0.562500
+  0.812500  0.625000  0.500000
+  0.750000  0.625000  0.562500
+  0.812500  0.687500  0.500000
+  0.812500  0.562500  0.562500
+  0.750000  0.562500  0.625000
+  0.812500  0.562500  0.625000
+  0.812500  0.625000  0.562500
+  0.875000  0.687500  0.500000
+  0.875000  0.625000  0.562500
+  0.750000  0.687500  0.625000
+  0.812500  0.687500  0.562500
+  0.750000  0.625000  0.687500
+  0.812500  0.625000  0.625000
+  0.812500  0.687500  0.625000
+  0.750000  0.812500  0.562500
+  0.812500  0.750000  0.562500
+  0.750000  0.687500  0.687500
+  0.750000  0.812500  0.625000
+  0.812500  0.750000  0.625000
+  0.750000  0.875000  0.437500
+  0.750000  0.937500  0.375000
+  0.750000  0.875000  0.562500
+  0.750000  0.937500  0.437500
+  0.875000  0.687500  0.562500
+  0.875000  0.750000  0.562500
+  0.375000  0.750000  0.812500
+  0.312500  0.812500  0.687500
+  0.375000  0.812500  0.750000
+  0.437500  0.750000  0.812500
+  0.375000  0.812500  0.687500
+  0.437500  0.812500  0.750000
+  0.312500  0.812500  0.812500
+  0.375000  0.812500  0.812500
+  0.437500  0.750000  0.875000
+  0.375000  0.812500  0.875000
+  0.437500  0.812500  0.875000
+  0.250000  0.875000  0.687500
+  0.312500  0.875000  0.687500
+  0.312500  0.875000  0.625000
+  0.250000  0.937500  0.625000
+  0.312500  0.937500  0.625000
+  0.312500  0.875000  0.750000
+  0.312500  0.875000  0.812500
+  0.250000  0.937500  0.687500
+  0.312500  0.937500  0.750000
+  0.437500  0.812500  0.812500
+  0.375000  0.875000  0.687500
+  0.437500  0.875000  0.750000
+  0.375000  0.875000  0.812500
+  0.437500  0.875000  0.812500
+  0.312500  0.937500  0.687500
+  0.375000  0.937500  0.687500
+  0.375000  0.937500  0.750000
+  0.500000  0.812500  0.812500
+  0.500000  0.812500  0.875000
+  0.625000  0.812500  0.687500
+  0.687500  0.812500  0.687500
+  0.437500  0.875000  0.687500
+  0.375000  0.937500  0.625000
+  0.500000  0.875000  0.812500
+  0.437500  0.937500  0.687500
+  0.687500  0.875000  0.625000
+  0.750000  0.562500  0.812500
+  0.812500  0.500000  0.812500
+  0.812500  0.562500  0.812500
+  0.750000  0.562500  0.875000
+  0.812500  0.500000  0.875000
+  0.812500  0.562500  0.875000
+  0.812500  0.625000  0.687500
+  0.812500  0.625000  0.750000
+  0.750000  0.625000  0.812500
+  0.812500  0.687500  0.687500
+  0.812500  0.687500  0.750000
+  0.875000  0.562500  0.687500
+  0.875000  0.562500  0.750000
+  0.875000  0.500000  0.812500
+  0.937500  0.562500  0.687500
+  0.937500  0.562500  0.750000
+  0.875000  0.625000  0.687500
+  0.875000  0.687500  0.625000
+  0.937500  0.625000  0.625000
+  0.937500  0.687500  0.625000
+  0.812500  0.625000  0.812500
+  0.875000  0.562500  0.812500
+  0.875000  0.625000  0.812500
+  0.875000  0.687500  0.687500
+  0.875000  0.687500  0.750000
+  0.937500  0.625000  0.687500
+  0.937500  0.625000  0.750000
+  0.937500  0.687500  0.687500
+  0.812500  0.625000  0.875000
+  0.812500  0.687500  0.812500
+  0.875000  0.562500  0.875000
+  0.937500  0.562500  0.812500
+  0.875000  0.687500  0.812500
+  0.937500  0.625000  0.812500
+  0.437500  0.875000  0.875000
+  0.375000  0.937500  0.812500
+  0.437500  0.937500  0.812500
+  0.875000  0.750000  0.687500
+  0.937500  0.750000  0.625000
+  0.937500  0.750000  0.687500
+  1.000000  0.312500  0.312500
+  1.000000  0.312500  0.375000
+  1.000000  0.375000  0.312500
+  0.312500  1.000000  0.625000
+  0.312500  1.000000  0.687500
+  0.375000  1.000000  0.687500
+  0.625000  1.000000  0.312500
+  0.687500  1.000000  0.312500
+  0.687500  1.000000  0.375000
+  1.000000  0.625000  0.687500
+  1.000000  0.687500  0.625000
+  1.000000  0.687500  0.687500
+24576
+   1          2      737      740      739
+   1          2      736      739      740
+   1          2      735      737      739
+   1          2      736      740      738
+   1          1      730      732      733
+   1          1      730      733      731
+   1         15      818      825      824
+   1         18      855      847      857
+   1         17      844      845      833
+   1         15      821      820      824
+   1         15      821      824      825
+   1         18      851      854      857
+   1         18      855      857      854
+   1         14      808      815      816
+   1         17      842      833      845
+   1         18      853      857      847
+   1         14      812      813      816
+   1         14      812      816      815
+   1         17      840      843      845
+   1         17      842      845      843
+   1         13      799      805      806
+   1         15      822      818      824
+   1         17      841      844      833
+   1         13      803      804      806
+   1         13      803      806      805
+   1         15      820      823      824
+   1         15      822      824      823
+   1         14      808      816      814
+   1         18      853      847      856
+   1         16      830      831      827
+   1         14      813      811      814
+   1         14      813      814      816
+   1         18      850      852      856
+   1         18      853      856      852
+   1          9      769      774      775
+   1         11      786      783      788
+   1         12      795      797      790
+   1          9      771      772      775
+   1          9      771      775      774
+   1         11      785      787      788
+   1         11      786      788      787
+   1          9      769      775      773
+   1         12      795      790      796
+   1         10      780      781      777
+   1          9      772      770      773
+   1          9      772      773      775
+   1         12      792      794      796
+   1         12      795      796      794
+   1         35      984      991      990
+   1         38     1021     1013     1023
+   1         37     1010     1011      999
+   1         35      987      986      990
+   1         35      987      990      991
+   1         38     1017     1020     1023
+   1         38     1021     1023     1020
+   1         34      974      981      982
+   1         37     1008      999     1011
+   1         38     1019     1023     1013
+   1         34      977      978      982
+   1         34      977      982      981
+   1         37     1004     1009     1011
+   1         37     1008     1011     1009
+   1         33      965      971      972
+   1         35      988      984      990
+   1         37     1007     1010      999
+   1         33      967      968      972
+   1         33      967      972      971
+   1         35      986      989      990
+   1         35      988      990      989
+   1         34      974      982      980
+   1         38     1019     1013     1022
+   1         36      996      997      993
+   1         34      978      976      980
+   1         34      978      980      982
+   1         38     1016     1018     1022
+   1         38     1019     1022     1018
+   1         28      927      932      933
+   1         30      944      941      946
+   1         31      953      955      948
+   1         28      929      930      933
+   1         28      929      933      932
+   1         30      943      945      946
+   1         30      944      946      945
+   1         28      927      933      931
+   1         31      953      948      954
+   1         29      938      939      935
+   1         28      930      928      931
+   1         28      930      931      933
+   1         31      950      952      954
+   1         31      953      954      952
+   1         48     1095     1099     1098
+   1         98     1622     1619     1627
+   1         97     1607     1617     1605
+   1         48     1102     1101     1098
+   1         48     1102     1098     1099
+   1         98     1624     1621     1627
+   1         98     1622     1627     1621
+   1        111     1785     1787     1793
+   1         61     1204     1201     1206
+   1        113     1817     1808     1805
+   1        111     1786     1791     1793
+   1        111     1786     1793     1787
+   1         61     1210     1212     1206
+   1         61     1204     1206     1212
+   1        106     1715     1727     1718
+   1        107     1741     1729     1732
+   1         56     1158     1159     1153
+   1        106     1724     1716     1718
+   1        106     1724     1718     1727
+   1        107     1730     1731     1732
+   1        107     1741     1732     1731
+   1         94     1571     1577     1578
+   1         93     1566     1557     1568
+   1         97     1614     1613     1605
+   1         94     1574     1575     1578
+   1         94     1574     1578     1577
+   1         93     1565     1569     1568
+   1         93     1566     1568     1569
+   1         94     1571     1578     1579
+   1         98     1626     1627     1619
+   1         97     1614     1605     1617
+   1         94     1576     1578     1575
+   1         94     1576     1579     1578
+   1         98     1624     1627     1625
+   1         98     1626     1625     1627
+   1        102     1658     1667     1668
+   1        110     1777     1771     1782
+   1        113     1811     1816     1805
+   1        102     1670     1671     1668
+   1        102     1670     1668     1667
+   1        110     1780     1778     1782
+   1        110     1777     1782     1778
+   1        111     1785     1793     1792
+   1        110     1781     1782     1771
+   1        113     1817     1805     1816
+   1        111     1790     1793     1791
+   1        111     1790     1792     1793
+   1        110     1780     1782     1783
+   1        110     1781     1783     1782
+   1         44     1061     1065     1066
+   1         91     1532     1529     1541
+   1         92     1546     1555     1543
+   1         44     1069     1070     1066
+   1         44     1069     1066     1065
+   1         91     1538     1533     1541
+   1         91     1532     1541     1533
+   1        104     1687     1689     1699
+   1         56     1157     1153     1159
+   1        107     1739     1732     1729
+   1        104     1688     1697     1699
+   1        104     1688     1699     1689
+   1         56     1165     1166     1159
+   1         56     1157     1159     1166
+   1        109     1757     1769     1759
+   1        113     1815     1805     1808
+   1         61     1203     1206     1201
+   1        109     1766     1758     1759
+   1        109     1766     1759     1769
+   1        113     1806     1807     1808
+   1        113     1815     1808     1807
+   1         88     1491     1501     1503
+   1         89     1514     1505     1517
+   1         92     1551     1553     1543
+   1         88     1498     1500     1503
+   1         88     1498     1503     1501
+   1         89     1512     1515     1517
+   1         89     1514     1517     1515
+   1         88     1491     1503     1502
+   1         91     1539     1541     1529
+   1         92     1551     1543     1555
+   1         88     1499     1503     1500
+   1         88     1499     1502     1503
+   1         91     1538     1541     1540
+   1         91     1539     1540     1541
+   1        102     1659     1669     1671
+   1        105     1709     1701     1713
+   1        107     1738     1740     1729
+   1        102     1666     1668     1671
+   1        102     1666     1671     1669
+   1        105     1708     1710     1713
+   1        105     1709     1713     1710
+   1        104     1687     1699     1698
+   1        105     1711     1713     1701
+   1        107     1739     1729     1740
+   1        104     1696     1699     1697
+   1        104     1696     1698     1699
+   1        105     1708     1713     1712
+   1        105     1711     1712     1713
+   1         40     1030     1033     1034
+   1         85     1459     1457     1465
+   1         86     1469     1479     1467
+   1         40     1037     1038     1034
+   1         40     1037     1034     1033
+   1         85     1462     1460     1465
+   1         85     1459     1465     1460
+   1         95     1581     1583     1589
+   1         48     1097     1095     1098
+   1         97     1615     1607     1605
+   1         95     1582     1587     1589
+   1         95     1582     1589     1583
+   1         48     1101     1103     1098
+   1         48     1097     1098     1103
+   1        103     1673     1685     1676
+   1        106     1726     1715     1718
+   1         56     1156     1158     1153
+   1        103     1684     1675     1676
+   1        103     1684     1676     1685
+   1        106     1716     1717     1718
+   1        106     1726     1718     1717
+   1         83     1433     1439     1441
+   1         84     1453     1443     1455
+   1         86     1477     1478     1467
+   1         83     1436     1438     1441
+   1         83     1436     1441     1439
+   1         84     1452     1454     1455
+   1         84     1453     1455     1454
+   1         83     1433     1441     1440
+   1         85     1463     1465     1457
+   1         86     1477     1467     1479
+   1         83     1437     1441     1438
+   1         83     1437     1440     1441
+   1         85     1462     1465     1464
+   1         85     1463     1464     1465
+   1         93     1557     1567     1568
+   1         96     1599     1591     1603
+   1         97     1613     1616     1605
+   1         93     1564     1565     1568
+   1         93     1564     1568     1567
+   1         96     1598     1600     1603
+   1         96     1599     1603     1600
+   1         95     1581     1589     1588
+   1         96     1601     1603     1591
+   1         97     1615     1605     1616
+   1         95     1586     1589     1587
+   1         95     1586     1588     1589
+   1         96     1598     1603     1602
+   1         96     1601     1602     1603
+   1         44     1061     1066     1064
+   1         92     1546     1543     1554
+   1         90     1521     1527     1519
+   1         44     1070     1068     1064
+   1         44     1070     1064     1066
+   1         92     1549     1545     1554
+   1         92     1546     1554     1545
+   1        109     1757     1759     1768
+   1         61     1203     1201     1205
+   1        112     1803     1797     1795
+   1        109     1758     1765     1768
+   1        109     1758     1768     1759
+   1         61     1209     1211     1205
+   1         61     1203     1205     1211
+   1        100     1639     1647     1641
+   1        101     1657     1649     1652
+   1         52     1127     1128     1125
+   1        100     1645     1640     1641
+   1        100     1645     1641     1647
+   1        101     1650     1651     1652
+   1        101     1657     1652     1651
+   1         89     1505     1513     1516
+   1         87     1487     1481     1488
+   1         90     1526     1525     1519
+   1         89     1509     1511     1516
+   1         89     1509     1516     1513
+   1         87     1486     1489     1488
+   1         87     1487     1488     1489
+   1         89     1505     1516     1517
+   1         92     1553     1554     1543
+   1         90     1526     1519     1527
+   1         89     1512     1516     1511
+   1         89     1512     1517     1516
+   1         92     1549     1554     1552
+   1         92     1553     1552     1554
+   1         99     1628     1634     1635
+   1        108     1749     1743     1754
+   1        112     1799     1802     1795
+   1         99     1636     1637     1635
+   1         99     1636     1635     1634
+   1        108     1752     1750     1754
+   1        108     1749     1754     1750
+   1        109     1757     1768     1767
+   1        108     1753     1754     1743
+   1        112     1803     1795     1802
+   1        109     1764     1768     1765
+   1        109     1764     1767     1768
+   1        108     1752     1754     1755
+   1        108     1753     1755     1754
+   1         32      956      959      960
+   1         70     1289     1287     1295
+   1         71     1300     1309     1297
+   1         32      962      963      960
+   1         32      962      960      959
+   1         70     1292     1290     1295
+   1         70     1289     1295     1290
+   1         76     1351     1353     1359
+   1         43     1056     1054     1057
+   1         78     1382     1377     1375
+   1         76     1352     1357     1359
+   1         76     1352     1359     1353
+   1         43     1059     1060     1057
+   1         43     1056     1057     1060
+   1         80     1399     1411     1401
+   1         82     1431     1423     1426
+   1         55     1146     1148     1144
+   1         80     1408     1400     1401
+   1         80     1408     1401     1411
+   1         82     1424     1425     1426
+   1         82     1431     1426     1425
+   1         67     1253     1259     1261
+   1         68     1272     1263     1275
+   1         71     1305     1307     1297
+   1         67     1256     1258     1261
+   1         67     1256     1261     1259
+   1         68     1270     1273     1275
+   1         68     1272     1275     1273
+   1         67     1253     1261     1260
+   1         70     1293     1295     1287
+   1         71     1305     1297     1309
+   1         67     1257     1261     1258
+   1         67     1257     1260     1261
+   1         70     1292     1295     1294
+   1         70     1293     1294     1295
+   1         75     1341     1348     1349
+   1         77     1369     1361     1373
+   1         78     1381     1383     1375
+   1         75     1346     1347     1349
+   1         75     1346     1349     1348
+   1         77     1368     1370     1373
+   1         77     1369     1373     1370
+   1         76     1351     1359     1358
+   1         77     1371     1373     1361
+   1         78     1382     1375     1383
+   1         76     1356     1359     1357
+   1         76     1356     1358     1359
+   1         77     1368     1373     1372
+   1         77     1371     1372     1373
+   1         32      956      960      958
+   1         71     1300     1297     1308
+   1         69     1279     1285     1277
+   1         32      963      961      958
+   1         32      963      958      960
+   1         71     1303     1299     1308
+   1         71     1300     1308     1299
+   1         80     1399     1401     1410
+   1         55     1146     1144     1147
+   1         81     1421     1415     1413
+   1         80     1400     1407     1410
+   1         80     1400     1410     1401
+   1         55     1150     1152     1147
+   1         55     1146     1147     1152
+   1         73     1321     1329     1323
+   1         74     1339     1331     1334
+   1         39     1026     1027     1024
+   1         73     1327     1322     1323
+   1         73     1327     1323     1329
+   1         74     1332     1333     1334
+   1         74     1339     1334     1333
+   1         68     1263     1271     1274
+   1         66     1249     1243     1250
+   1         69     1284     1283     1277
+   1         68     1267     1269     1274
+   1         68     1267     1274     1271
+   1         66     1248     1251     1250
+   1         66     1249     1250     1251
+   1         68     1263     1274     1275
+   1         71     1307     1308     1297
+   1         69     1284     1277     1285
+   1         68     1270     1274     1269
+   1         68     1270     1275     1274
+   1         71     1303     1308     1306
+   1         71     1307     1306     1308
+   1         72     1310     1316     1317
+   1         79     1391     1385     1396
+   1         81     1417     1420     1413
+   1         72     1318     1319     1317
+   1         72     1318     1317     1316
+   1         79     1394     1392     1396
+   1         79     1391     1396     1392
+   1         80     1399     1410     1409
+   1         79     1395     1396     1385
+   1         81     1421     1413     1420
+   1         80     1406     1410     1407
+   1         80     1406     1409     1410
+   1         79     1394     1396     1397
+   1         79     1395     1397     1396
+   1        133      983     1979     1978
+   1        136     1994     1012     1996
+   1        135     1989     1990      998
+   1        133     1975     1974     1978
+   1        133     1975     1978     1979
+   1        136     1983     1993     1996
+   1        136     1994     1996     1993
+   1        132      973     1972     1973
+   1        135     1987      998     1990
+   1        136     1992     1996     1012
+   1        132     1968     1969     1973
+   1        132     1968     1973     1972
+   1        135     1983     1988     1990
+   1        135     1987     1990     1988
+   1        131      964     1965     1966
+   1        133     1976      983     1978
+   1        135     1986     1989      998
+   1        131     1961     1962     1966
+   1        131     1961     1966     1965
+   1        133     1974     1977     1978
+   1        133     1976     1978     1977
+   1        132      973     1973     1971
+   1        136     1992     1012     1995
+   1        134     1981     1982      992
+   1        132     1969     1967     1971
+   1        132     1969     1971     1973
+   1        136     1980     1991     1995
+   1        136     1992     1995     1991
+   1        126      926     1942     1943
+   1        128     1948      940     1950
+   1        129     1952     1954      947
+   1        126     1939     1940     1943
+   1        126     1939     1943     1942
+   1        128     1947     1949     1950
+   1        128     1948     1950     1949
+   1        126      926     1943     1941
+   1        129     1952      947     1953
+   1        127     1945     1946      934
+   1        126     1940     1938     1941
+   1        126     1940     1941     1943
+   1        129     1944     1951     1953
+   1        129     1952     1953     1951
+   1        214     1096     2465     2464
+   1        221     2513     1618     2516
+   1        220     2506     2511     1604
+   1        214     2462     2461     2464
+   1        214     2462     2464     2465
+   1        221     2505     2512     2516
+   1        221     2513     2516     2512
+   1        251     1784     2762     2765
+   1        243     2695     1202     2697
+   1        253     2776     2771     1804
+   1        251     2691     2761     2765
+   1        251     2691     2765     2762
+   1        243     2693     2699     2697
+   1        243     2695     2697     2699
+   1        240     1714     2672     2667
+   1        241     2679     1728     2674
+   1        229     2568     2569     1154
+   1        240     2665     2563     2667
+   1        240     2665     2667     2672
+   1        241     2564     2673     2674
+   1        241     2679     2674     2673
+   1        217     1570     2487     2488
+   1        216     2480     1556     2482
+   1        220     2508     2507     1604
+   1        217     2474     2484     2488
+   1        217     2474     2488     2487
+   1        216     2476     2483     2482
+   1        216     2480     2482     2483
+   1        217     1570     2488     2489
+   1        221     2515     2516     1618
+   1        220     2508     1604     2511
+   1        217     2485     2488     2484
+   1        217     2485     2489     2488
+   1        221     2505     2516     2514
+   1        221     2515     2514     2516
+   1        247     1659     2731     2732
+   1        250     2756     1770     2759
+   1        253     2773     2775     1804
+   1        247     2725     2726     2732
+   1        247     2725     2732     2731
+   1        250     2752     2757     2759
+   1        250     2756     2759     2757
+   1        251     1784     2765     2764
+   1        250     2758     2759     1770
+   1        253     2776     1804     2775
+   1        251     2751     2765     2761
+   1        251     2751     2764     2765
+   1        250     2752     2759     2760
+   1        250     2758     2760     2759
+   1        204     1062     2392     2393
+   1        211     2439     1528     2445
+   1        212     2447     2452     1542
+   1        204     2388     2389     2393
+   1        204     2388     2393     2392
+   1        211     2437     2440     2445
+   1        211     2439     2445     2440
+   1        238     1686     2650     2655
+   1        229     2567     1154     2569
+   1        241     2677     2674     1728
+   1        238     2562     2649     2655
+   1        238     2562     2655     2650
+   1        229     2564     2571     2569
+   1        229     2567     2569     2571
+   1        249     1756     2750     2745
+   1        253     2774     1804     2771
+   1        243     2694     2697     1202
+   1        249     2744     2690     2745
+   1        249     2744     2745     2750
+   1        253     2693     2770     2771
+   1        253     2774     2771     2770
+   1        208     1490     2420     2422
+   1        209     2428     1504     2431
+   1        212     2448     2450     1542
+   1        208     2414     2416     2422
+   1        208     2414     2422     2420
+   1        209     2424     2429     2431
+   1        209     2428     2431     2429
+   1        208     1490     2422     2421
+   1        211     2443     2445     1528
+   1        212     2448     1542     2452
+   1        208     2415     2422     2416
+   1        208     2415     2421     2422
+   1        211     2437     2445     2444
+   1        211     2443     2444     2445
+   1        236     1658     2637     2639
+   1        239     2660     1700     2664
+   1        241     2676     2678     1728
+   1        236     2631     2633     2639
+   1        236     2631     2639     2637
+   1        239     2656     2661     2664
+   1        239     2660     2664     2661
+   1        238     1686     2655     2654
+   1        239     2662     2664     1700
+   1        241     2677     1728     2678
+   1        238     2648     2655     2649
+   1        238     2648     2654     2655
+   1        239     2656     2664     2663
+   1        239     2662     2663     2664
+   1        195     1031     2325     2326
+   1        201     2367     1456     2371
+   1        202     2372     2377     1466
+   1        195     2322     2323     2326
+   1        195     2322     2326     2325
+   1        201     2366     2368     2371
+   1        201     2367     2371     2368
+   1        218     1580     2492     2495
+   1        214     2463     1096     2464
+   1        220     2509     2506     1604
+   1        218     2460     2491     2495
+   1        218     2460     2495     2492
+   1        214     2461     2466     2464
+   1        214     2463     2464     2466
+   1        237     1672     2647     2642
+   1        240     2671     1714     2667
+   1        229     2566     2568     1154
+   1        237     2640     2561     2642
+   1        237     2640     2642     2647
+   1        240     2563     2666     2667
+   1        240     2671     2667     2666
+   1        199     1432     2355     2357
+   1        200     2363     1442     2365
+   1        202     2375     2376     1466
+   1        199     2351     2353     2357
+   1        199     2351     2357     2355
+   1        200     2358     2364     2365
+   1        200     2363     2365     2364
+   1        199     1432     2357     2356
+   1        201     2369     2371     1456
+   1        202     2375     1466     2377
+   1        199     2352     2357     2353
+   1        199     2352     2356     2357
+   1        201     2366     2371     2370
+   1        201     2369     2370     2371
+   1        216     1556     2481     2482
+   1        219     2500     1590     2504
+   1        220     2507     2510     1604
+   1        216     2475     2476     2482
+   1        216     2475     2482     2481
+   1        219     2496     2501     2504
+   1        219     2500     2504     2501
+   1        218     1580     2495     2494
+   1        219     2502     2504     1590
+   1        220     2509     1604     2510
+   1        218     2490     2495     2491
+   1        218     2490     2494     2495
+   1        219     2496     2504     2503
+   1        219     2502     2503     2504
+   1        204     1062     2393     2391
+   1        212     2447     1542     2451
+   1        210     2433     2436     1518
+   1        204     2389     2387     2391
+   1        204     2389     2391     2393
+   1        212     2432     2446     2451
+   1        212     2447     2451     2446
+   1        249     1756     2745     2749
+   1        243     2694     1202     2696
+   1        252     2769     2766     1794
+   1        249     2690     2743     2749
+   1        249     2690     2749     2745
+   1        243     2692     2698     2696
+   1        243     2694     2696     2698
+   1        226     1638     2542     2539
+   1        227     2547     1648     2544
+   1        223     2523     2524     1126
+   1        226     2538     2521     2539
+   1        226     2538     2539     2542
+   1        227     2522     2543     2544
+   1        227     2547     2544     2543
+   1        209     1504     2427     2430
+   1        207     2411     1480     2412
+   1        210     2435     2434     1518
+   1        209     2407     2423     2430
+   1        209     2407     2430     2427
+   1        207     2408     2413     2412
+   1        207     2411     2412     2413
+   1        209     1504     2430     2431
+   1        212     2450     2451     1542
+   1        210     2435     1518     2436
+   1        209     2424     2430     2423
+   1        209     2424     2431     2430
+   1        212     2432     2451     2449
+   1        212     2450     2449     2451
+   1        246     1629     2722     2723
+   1        248     2738     1742     2741
+   1        252     2767     2768     1794
+   1        246     2718     2719     2723
+   1        246     2718     2723     2722
+   1        248     2734     2739     2741
+   1        248     2738     2741     2739
+   1        249     1756     2749     2748
+   1        248     2740     2741     1742
+   1        252     2769     1794     2768
+   1        249     2733     2749     2743
+   1        249     2733     2748     2749
+   1        248     2734     2741     2742
+   1        248     2740     2742     2741
+   1        165      957     2134     2135
+   1        170     2165     1286     2169
+   1        171     2171     2176     1296
+   1        165     2131     2132     2135
+   1        165     2131     2135     2134
+   1        170     2164     2166     2169
+   1        170     2165     2169     2166
+   1        182     1350     2233     2236
+   1        179     2215     1055     2216
+   1        184     2248     2246     1374
+   1        182     2213     2232     2236
+   1        182     2213     2236     2233
+   1        179     2214     2217     2216
+   1        179     2215     2216     2217
+   1        191     1398     2304     2299
+   1        193     2313     1422     2310
+   1        186     2260     2262     1145
+   1        191     2298     2257     2299
+   1        191     2298     2299     2304
+   1        193     2259     2309     2310
+   1        193     2313     2310     2309
+   1        167     1252     2147     2149
+   1        168     2155     1262     2158
+   1        171     2172     2174     1296
+   1        167     2143     2145     2149
+   1        167     2143     2149     2147
+   1        168     2151     2156     2158
+   1        168     2155     2158     2156
+   1        167     1252     2149     2148
+   1        170     2167     2169     1286
+   1        171     2172     1296     2176
+   1        167     2144     2149     2145
+   1        167     2144     2148     2149
+   1        170     2164     2169     2168
+   1        170     2167     2168     2169
+   1        181     1340     2229     2230
+   1        183     2241     1360     2245
+   1        184     2247     2249     1374
+   1        181     2225     2226     2230
+   1        181     2225     2230     2229
+   1        183     2237     2242     2245
+   1        183     2241     2245     2242
+   1        182     1350     2236     2235
+   1        183     2243     2245     1360
+   1        184     2248     1374     2249
+   1        182     2231     2236     2232
+   1        182     2231     2235     2236
+   1        183     2237     2245     2244
+   1        183     2243     2244     2245
+   1        165      957     2135     2133
+   1        171     2171     1296     2175
+   1        169     2160     2163     1276
+   1        165     2132     2130     2133
+   1        165     2132     2133     2135
+   1        171     2159     2170     2175
+   1        171     2171     2175     2170
+   1        191     1398     2299     2303
+   1        186     2260     1145     2261
+   1        192     2308     2305     1412
+   1        191     2257     2297     2303
+   1        191     2257     2303     2299
+   1        186     2258     2263     2261
+   1        186     2260     2261     2263
+   1        176     1320     2202     2199
+   1        177     2207     1330     2204
+   1        173     2183     2184     1025
+   1        176     2198     2181     2199
+   1        176     2198     2199     2202
+   1        177     2182     2203     2204
+   1        177     2207     2204     2203
+   1        168     1262     2154     2157
+   1        166     2140     1242     2141
+   1        169     2162     2161     1276
+   1        168     2136     2150     2157
+   1        168     2136     2157     2154
+   1        166     2137     2142     2141
+   1        166     2140     2141     2142
+   1        168     1262     2157     2158
+   1        171     2174     2175     1296
+   1        169     2162     1276     2163
+   1        168     2151     2157     2150
+   1        168     2151     2158     2157
+   1        171     2159     2175     2173
+   1        171     2174     2173     2175
+   1        188     1311     2279     2280
+   1        190     2292     1384     2295
+   1        192     2306     2307     1412
+   1        188     2275     2276     2280
+   1        188     2275     2280     2279
+   1        190     2288     2293     2295
+   1        190     2292     2295     2293
+   1        191     1398     2303     2302
+   1        190     2294     2295     1384
+   1        192     2308     1412     2307
+   1        191     2287     2303     2297
+   1        191     2287     2302     2303
+   1        190     2288     2295     2296
+   1        190     2294     2296     2295
+   1        213      817     2455     2454
+   1        363     2486     1572     3411
+   1        362     2477     3408     1558
+   1        213     2458     2457     2454
+   1        213     2458     2454     2455
+   1        363     3403     2478     3411
+   1        363     2486     3411     2478
+   1        378     1573     2714     3479
+   1        242     2681      846     2683
+   1        380     3484     2727     1661
+   1        378     2685     3477     3479
+   1        378     2685     3479     2714
+   1        242     2687     2689     2683
+   1        242     2681     2683     2689
+   1        373     1559     3456     2624
+   1        374     3461     1660     2634
+   1        228     2551     2552      832
+   1        373     3453     2556     2624
+   1        373     3453     2624     3456
+   1        374     2557     2625     2634
+   1        374     3461     2634     2625
+   1        359     1015     3390     3391
+   1        358     3384     1003     3386
+   1        362     3405     3404     1558
+   1        359     3381     3388     3391
+   1        359     3381     3391     3390
+   1        358     3383     3387     3386
+   1        358     3384     3386     3387
+   1        359     1015     3391     3392
+   1        363     3410     3411     1572
+   1        362     3405     1558     3408
+   1        359     3389     3391     3388
+   1        359     3389     3392     3391
+   1        363     3403     3411     3409
+   1        363     3410     3409     3411
+   1        367     1004     3423     3424
+   1        377     3454     1560     3475
+   1        380     3458     3483     1661
+   1        367     3426     3427     3424
+   1        367     3426     3424     3423
+   1        377     3473     3457     3475
+   1        377     3454     3475     3457
+   1        378     1573     3479     3478
+   1        377     3474     3475     1560
+   1        380     3484     1661     3483
+   1        378     3472     3479     3477
+   1        378     3472     3478     3479
+   1        377     3473     3475     3476
+   1        377     3474     3476     3475
+   1        203      807     2380     2381
+   1        356     2417     1492     3375
+   1        357     2426     3380     1506
+   1        203     2384     2385     2381
+   1        203     2384     2381     2380
+   1        356     3370     2425     3375
+   1        356     2417     3375     2425
+   1        371     1493     2615     3446
+   1        228     2550      832     2552
+   1        374     3459     2634     1660
+   1        371     2555     3442     3446
+   1        371     2555     3446     2615
+   1        228     2557     2559     2552
+   1        228     2550     2552     2559
+   1        376     1508     3471     2704
+   1        380     3482     1661     2727
+   1        242     2680     2683      846
+   1        376     3468     2684     2704
+   1        376     3468     2704     3471
+   1        380     2687     2705     2727
+   1        380     3482     2727     2705
+   1        352     1002     3352     3355
+   1        353     3359     1014     3362
+   1        357     3376     3378     1506
+   1        352     3348     3351     3355
+   1        352     3348     3355     3352
+   1        353     3357     3360     3362
+   1        353     3359     3362     3360
+   1        352     1002     3355     3354
+   1        356     3372     3375     1492
+   1        357     3376     1506     3380
+   1        352     3350     3355     3351
+   1        352     3350     3354     3355
+   1        356     3370     3375     3373
+   1        356     3372     3373     3375
+   1        367     1017     3425     3427
+   1        372     3448     1507     3452
+   1        374     3458     3460     1660
+   1        367     3422     3424     3427
+   1        367     3422     3427     3425
+   1        372     3447     3449     3452
+   1        372     3448     3452     3449
+   1        371     1493     3446     3445
+   1        372     3450     3452     1507
+   1        374     3459     1660     3460
+   1        371     3441     3446     3442
+   1        371     3441     3445     3446
+   1        372     3447     3452     3451
+   1        372     3450     3451     3452
+   1        194      798     2315     2316
+   1        349     2354     1434     3337
+   1        350     2360     3342     1444
+   1        194     2318     2319     2316
+   1        194     2318     2316     2315
+   1        349     3334     2359     3337
+   1        349     2354     3337     2359
+   1        360     1435     2470     3396
+   1        213     2453      817     2454
+   1        362     3406     2477     1558
+   1        360     2456     3394     3396
+   1        360     2456     3396     2470
+   1        213     2457     2459     2454
+   1        213     2453     2454     2459
+   1        370     1446     3440     2605
+   1        373     3455     1559     2624
+   1        228     2549     2551      832
+   1        370     3438     2554     2605
+   1        370     3438     2605     3440
+   1        373     2556     2606     2624
+   1        373     3455     2624     2606
+   1        345      985     3315     3317
+   1        346     3320     1001     3323
+   1        350     3338     3339     1444
+   1        345     3312     3314     3317
+   1        345     3312     3317     3315
+   1        346     3319     3321     3323
+   1        346     3320     3323     3321
+   1        345      985     3317     3316
+   1        349     3335     3337     1434
+   1        350     3338     1444     3342
+   1        345     3313     3317     3314
+   1        345     3313     3316     3317
+   1        349     3334     3337     3336
+   1        349     3335     3336     3337
+   1        358     1003     3385     3386
+   1        361     3398     1445     3402
+   1        362     3404     3407     1558
+   1        358     3382     3383     3386
+   1        358     3382     3386     3385
+   1        361     3397     3399     3402
+   1        361     3398     3402     3399
+   1        360     1435     3396     3395
+   1        361     3400     3402     1445
+   1        362     3406     1558     3407
+   1        360     3393     3396     3394
+   1        360     3393     3395     3396
+   1        361     3397     3402     3401
+   1        361     3400     3401     3402
+   1        203      807     2381     2379
+   1        357     2426     1506     3379
+   1        355     2409     3369     1482
+   1        203     2385     2383     2379
+   1        203     2385     2379     2381
+   1        357     3366     2410     3379
+   1        357     2426     3379     2410
+   1        376     1508     2704     3470
+   1        242     2680      846     2682
+   1        379     3481     2720     1631
+   1        376     2684     3467     3470
+   1        376     2684     3470     2704
+   1        242     2686     2688     2682
+   1        242     2680     2682     2688
+   1        365     1483     3418     2527
+   1        366     3421     1630     2534
+   1        222     2517     2518      826
+   1        365     3416     2519     2527
+   1        365     3416     2527     3418
+   1        366     2520     2528     2534
+   1        366     3421     2534     2528
+   1        353     1014     3358     3361
+   1        351     3345      994     3346
+   1        355     3368     3367     1482
+   1        353     3343     3356     3361
+   1        353     3343     3361     3358
+   1        351     3344     3347     3346
+   1        351     3345     3346     3347
+   1        353     1014     3361     3362
+   1        357     3378     3379     1506
+   1        355     3368     1482     3369
+   1        353     3357     3361     3356
+   1        353     3357     3362     3361
+   1        357     3366     3379     3377
+   1        357     3378     3377     3379
+   1        364      995     3412     3413
+   1        375     3417     1484     3465
+   1        379     3420     3480     1631
+   1        364     3414     3415     3413
+   1        364     3414     3413     3412
+   1        375     3463     3419     3465
+   1        375     3417     3465     3419
+   1        376     1508     3470     3469
+   1        375     3464     3465     1484
+   1        379     3481     1631     3480
+   1        376     3462     3470     3467
+   1        376     3462     3469     3470
+   1        375     3463     3465     3466
+   1        375     3464     3466     3465
+   1        164      768     2125     2126
+   1        326     2146     1254     3235
+   1        327     2153     3240     1264
+   1        164     2128     2129     2126
+   1        164     2128     2126     2125
+   1        326     3232     2152     3235
+   1        326     2146     3235     2152
+   1        332     1255     2221     3258
+   1        178     2208      782     2209
+   1        334     3266     2227     1342
+   1        332     2210     3256     3258
+   1        332     2210     3258     2221
+   1        178     2211     2212     2209
+   1        178     2208     2209     2212
+   1        336     1266     3277     2268
+   1        338     3280     1343     2283
+   1        185     2250     2252      789
+   1        336     3274     2253     2268
+   1        336     3274     2268     3277
+   1        338     2255     2269     2283
+   1        338     3280     2283     2269
+   1        323      942     3218     3220
+   1        324     3224      949     3227
+   1        327     3236     3238     1264
+   1        323     3215     3217     3220
+   1        323     3215     3220     3218
+   1        324     3222     3225     3227
+   1        324     3224     3227     3225
+   1        323      942     3220     3219
+   1        326     3233     3235     1254
+   1        327     3236     1264     3240
+   1        323     3216     3220     3217
+   1        323     3216     3219     3220
+   1        326     3232     3235     3234
+   1        326     3233     3234     3235
+   1        331      951     3253     3254
+   1        333     3260     1265     3264
+   1        334     3265     3267     1342
+   1        331     3251     3252     3254
+   1        331     3251     3254     3253
+   1        333     3259     3261     3264
+   1        333     3260     3264     3261
+   1        332     1255     3258     3257
+   1        333     3262     3264     1265
+   1        334     3266     1342     3267
+   1        332     3255     3258     3256
+   1        332     3255     3257     3258
+   1        333     3259     3264     3263
+   1        333     3262     3263     3264
+   1        164      768     2126     2124
+   1        327     2153     1264     3239
+   1        325     2138     3231     1244
+   1        164     2129     2127     2124
+   1        164     2129     2124     2126
+   1        327     3228     2139     3239
+   1        327     2153     3239     2139
+   1        336     1266     2268     3276
+   1        185     2250      789     2251
+   1        337     3279     2277     1313
+   1        336     2253     3273     3276
+   1        336     2253     3276     2268
+   1        185     2254     2256     2251
+   1        185     2250     2251     2256
+   1        329     1245     3247     2187
+   1        330     3250     1312     2194
+   1        172     2177     2178      776
+   1        329     3245     2179     2187
+   1        329     3245     2187     3247
+   1        330     2180     2188     2194
+   1        330     3250     2194     2188
+   1        324      949     3223     3226
+   1        322     3212      936     3213
+   1        325     3230     3229     1244
+   1        324     3210     3221     3226
+   1        324     3210     3226     3223
+   1        322     3211     3214     3213
+   1        322     3212     3213     3214
+   1        324      949     3226     3227
+   1        327     3238     3239     1264
+   1        325     3230     1244     3231
+   1        324     3222     3226     3221
+   1        324     3222     3227     3226
+   1        327     3228     3239     3237
+   1        327     3238     3237     3239
+   1        328      937     3241     3242
+   1        335     3246     1246     3271
+   1        337     3249     3278     1313
+   1        328     3243     3244     3242
+   1        328     3243     3242     3241
+   1        335     3269     3248     3271
+   1        335     3246     3271     3248
+   1        336     1266     3276     3275
+   1        335     3270     3271     1246
+   1        337     3279     1313     3278
+   1        336     3268     3276     3273
+   1        336     3268     3275     3276
+   1        335     3269     3271     3272
+   1        335     3270     3272     3271
+   1        146      750     2040     2039
+   1        424     2053     1121     3677
+   1        423     2049     3672     1112
+   1        146     2043     2042     2039
+   1        146     2043     2039     2040
+   1        424     3667     2050     3677
+   1        424     2053     3677     2050
+   1        437     1123     3097     3729
+   1        304     3095      908     3104
+   1        657     3731     3118     1913
+   1        437     3105     3730     3729
+   1        437     3105     3729     3097
+   1        304     3108     3106     3104
+   1        304     3095     3104     3106
+   1        433     1115     3715     3034
+   1        654     3727     1912     3088
+   1        295     3031     3049      899
+   1        433     3718     3050     3034
+   1        433     3718     3034     3715
+   1        654     3055     3037     3088
+   1        654     3727     3088     3037
+   1        427     1620     3694     3692
+   1        426     3690     1606     3687
+   1        423     3674     3673     1112
+   1        427     3685     3669     3692
+   1        427     3685     3692     3694
+   1        426     3668     3688     3687
+   1        426     3690     3687     3688
+   1        427     1620     3692     3693
+   1        424     3679     3677     1121
+   1        423     3674     1112     3672
+   1        427     3676     3692     3669
+   1        427     3676     3693     3692
+   1        424     3667     3677     3678
+   1        424     3679     3678     3677
+   1        649     1612     3716     4652
+   1        434     3713     1116     3719
+   1        657     4668     3728     1913
+   1        649     3722     4654     4652
+   1        649     3722     4652     3716
+   1        434     3724     3723     3719
+   1        434     3713     3719     3723
+   1        437     1123     3729     3711
+   1        434     3709     3719     1116
+   1        657     3731     1913     3728
+   1        437     3720     3729     3730
+   1        437     3720     3711     3729
+   1        434     3724     3719     3721
+   1        434     3709     3721     3719
+   1        305      909     3099     3111
+   1        501     3101     1226     4031
+   1        712     3124     4034     1934
+   1        305     3112     3115     3111
+   1        305     3112     3111     3099
+   1        501     4032     3121     4031
+   1        501     3101     4031     3121
+   1        485     1224     2117     3952
+   1        159     2101      763     2103
+   1        487     3964     2121     1236
+   1        485     2105     3949     3952
+   1        485     2105     3952     2117
+   1        159     2107     2109     2103
+   1        159     2101     2103     2109
+   1        717     1935     4043     3208
+   1        505     4039     1239     3166
+   1        317     3182     3163      921
+   1        717     4041     3189     3208
+   1        717     4041     3208     4043
+   1        505     3183     3205     3166
+   1        505     4039     3166     3205
+   1        489     1208     3975     3976
+   1        710     3988     1814     4891
+   1        712     4004     4894     1934
+   1        489     3978     3979     3976
+   1        489     3978     3976     3975
+   1        710     4890     4003     4891
+   1        710     3988     4891     4003
+   1        489     1208     3976     3950
+   1        501     3953     4031     1226
+   1        712     4004     1934     4034
+   1        489     3977     3976     3979
+   1        489     3977     3950     3976
+   1        501     4032     4031     3999
+   1        501     3953     3999     4031
+   1        491     1806     3989     3986
+   1        493     4005     1930     4002
+   1        487     3965     3966     1236
+   1        491     3984     3960     3986
+   1        491     3984     3986     3989
+   1        493     3961     4001     4002
+   1        493     4005     4002     4001
+   1        485     1224     3952     3954
+   1        493     4000     4002     1930
+   1        487     3964     1236     3966
+   1        485     3951     3952     3949
+   1        485     3951     3954     3952
+   1        493     3961     4002     3998
+   1        493     4000     3998     4002
+   1        296      900     3058     3038
+   1        689     3092     1922     3931
+   1        477     3041     3919     1189
+   1        296     3065     3059     3038
+   1        296     3065     3038     3058
+   1        689     3922     3044     3931
+   1        689     3092     3931     3044
+   1        694     1923     3202     3938
+   1        316     3172      920     3157
+   1        481     3934     3160     1198
+   1        694     3178     3936     3938
+   1        694     3178     3938     3202
+   1        316     3173     3174     3157
+   1        316     3172     3157     3174
+   1        458     1186     3830     2093
+   1        459     3836     1195     2097
+   1        154     2074     2075      758
+   1        458     3825     2080     2093
+   1        458     3825     2093     3830
+   1        459     2081     2094     2097
+   1        459     3836     2097     2094
+   1        686     1736     3874     3926
+   1        464     3864     1164     3826
+   1        477     3917     3831     1189
+   1        686     3869     3920     3926
+   1        686     3869     3926     3874
+   1        464     3866     3867     3826
+   1        464     3864     3826     3867
+   1        686     1736     3926     4802
+   1        689     4807     3931     1922
+   1        477     3917     1189     3919
+   1        686     4800     3926     3920
+   1        686     4800     4802     3926
+   1        689     3922     3931     3927
+   1        689     4807     3927     3931
+   1        465     1165     3827     3833
+   1        478     3832     1190     3913
+   1        481     3838     3915     1198
+   1        465     3871     3872     3833
+   1        465     3871     3833     3827
+   1        478     3924     3837     3913
+   1        478     3832     3913     3837
+   1        694     1923     3938     3932
+   1        478     3923     3913     1190
+   1        481     3934     1198     3915
+   1        694     3928     3938     3936
+   1        694     3928     3932     3938
+   1        478     3924     3913     3925
+   1        478     3923     3925     3913
+   1        245      849     2711     2712
+   1        636     2729     1665     4594
+   1        637     2754     4598     1773
+   1        245     2715     2716     2712
+   1        245     2715     2712     2711
+   1        636     4593     2753     4594
+   1        636     2729     4594     2753
+   1        630     1664     2636     4563
+   1        235     2621      839     2623
+   1        632     4572     2669     1719
+   1        630     2627     4560     4563
+   1        630     2627     4563     2636
+   1        235     2629     2630     2623
+   1        235     2621     2623     2630
+   1        651     1774     4661     3069
+   1        650     4657     1721     3061
+   1        295     3046     3045      899
+   1        651     4655     3052     3069
+   1        651     4655     3069     4661
+   1        650     3051     3068     3061
+   1        650     4657     3061     3068
+   1        627     1563     4541     4543
+   1        634     4555     1609     4586
+   1        637     4577     4596     1773
+   1        627     4544     4546     4543
+   1        627     4544     4543     4541
+   1        634     4584     4575     4586
+   1        634     4555     4586     4575
+   1        627     1563     4543     4542
+   1        636     4562     4594     1665
+   1        637     4577     1773     4598
+   1        627     4545     4543     4546
+   1        627     4545     4542     4543
+   1        636     4593     4594     4576
+   1        636     4562     4576     4594
+   1        629     1608     4559     4558
+   1        633     4579     1772     4582
+   1        632     4571     4574     1719
+   1        629     4554     4553     4558
+   1        629     4554     4558     4559
+   1        633     4569     4578     4582
+   1        633     4579     4582     4578
+   1        630     1664     4563     4564
+   1        633     4581     4582     1772
+   1        632     4572     1719     4574
+   1        630     4561     4563     4560
+   1        630     4561     4564     4563
+   1        633     4569     4582     4580
+   1        633     4581     4580     4582
+   1        245      849     2712     2713
+   1        638     2763     4602     1788
+   1        637     2754     1773     4599
+   1        245     2717     2712     2716
+   1        245     2717     2713     2712
+   1        638     4595     4602     2755
+   1        638     2763     2755     4602
+   1        656     1789     4677     3113
+   1        304     3103     3104      908
+   1        657     4679     1913     3118
+   1        656     3107     4677     4675
+   1        656     3107     3113     4677
+   1        304     3108     3104     3109
+   1        304     3103     3109     3104
+   1        651     1774     3069     4662
+   1        654     4669     3088     1912
+   1        295     3046      899     3049
+   1        651     4659     3069     3052
+   1        651     4659     4662     3069
+   1        654     3055     3088     3070
+   1        654     4669     3070     3088
+   1        635     1623     4591     4590
+   1        634     4585     4586     1609
+   1        637     4597     1773     4596
+   1        635     4583     4591     4588
+   1        635     4583     4590     4591
+   1        634     4584     4586     4587
+   1        634     4585     4587     4586
+   1        635     1623     4592     4591
+   1        638     4601     1788     4602
+   1        637     4597     4599     1773
+   1        635     4589     4588     4591
+   1        635     4589     4591     4592
+   1        638     4595     4600     4602
+   1        638     4601     4602     4600
+   1        649     1612     4652     4651
+   1        655     4660     4673     1775
+   1        657     4668     1913     4678
+   1        649     4653     4652     4654
+   1        649     4653     4651     4652
+   1        655     4671     4673     4667
+   1        655     4660     4667     4673
+   1        656     1789     4676     4677
+   1        655     4672     1775     4673
+   1        657     4679     4678     1913
+   1        656     4670     4675     4677
+   1        656     4670     4677     4676
+   1        655     4671     4674     4673
+   1        655     4672     4673     4674
+   1        236      840     2632     2633
+   1        669     2670     1722     4725
+   1        670     2676     4732     1733
+   1        236     2638     2639     2633
+   1        236     2638     2633     2632
+   1        669     4723     2675     4725
+   1        669     2670     4725     2675
+   1        687     1725     3063     4803
+   1        297     3056      901     3067
+   1        708     4808     3093     1924
+   1        687     3071     4805     4803
+   1        687     3071     4803     3063
+   1        297     3074     3072     3067
+   1        297     3056     3067     3072
+   1        691     1738     4815     3175
+   1        716     4824     1925     3203
+   1        317     3169     3181      921
+   1        691     4818     3185     3175
+   1        691     4818     3175     4815
+   1        716     3188     3179     3203
+   1        716     4824     3203     3179
+   1        672     1776     4742     4741
+   1        673     4747     1809     4745
+   1        670     4733     4734     1733
+   1        672     4739     4728     4741
+   1        672     4739     4741     4742
+   1        673     4729     4744     4745
+   1        673     4747     4745     4744
+   1        672     1776     4741     4740
+   1        669     4726     4725     1722
+   1        670     4733     1733     4732
+   1        672     4724     4741     4728
+   1        672     4724     4740     4741
+   1        669     4723     4725     4727
+   1        669     4726     4727     4725
+   1        706     1813     4816     4871
+   1        690     4809     1737     4810
+   1        708     4879     4823     1924
+   1        706     4811     4868     4871
+   1        706     4811     4871     4816
+   1        690     4812     4813     4810
+   1        690     4809     4810     4813
+   1        687     1725     4803     4799
+   1        690     4801     4810     1737
+   1        708     4808     1924     4823
+   1        687     4804     4803     4805
+   1        687     4804     4799     4803
+   1        690     4812     4810     4806
+   1        690     4801     4806     4810
+   1        305      909     3111     3110
+   1        711     3119     4893     1915
+   1        712     3124     1934     4895
+   1        305     3114     3111     3115
+   1        305     3114     3110     3111
+   1        711     4892     4893     3123
+   1        711     3119     3123     4893
+   1        707     1914     4876     3089
+   1        297     3066     3067      901
+   1        708     4880     1924     3093
+   1        707     3073     4876     4873
+   1        707     3073     3089     4876
+   1        297     3074     3067     3075
+   1        297     3066     3075     3067
+   1        717     1935     3208     4901
+   1        716     4900     3203     1925
+   1        317     3182      921     3181
+   1        717     4899     3208     3189
+   1        717     4899     4901     3208
+   1        716     3188     3203     3207
+   1        716     4900     3207     3203
+   1        705     1779     4864     4862
+   1        710     4870     4891     1814
+   1        712     4884     1934     4894
+   1        705     4865     4864     4867
+   1        705     4865     4862     4864
+   1        710     4890     4891     4882
+   1        710     4870     4882     4891
+   1        705     1779     4863     4864
+   1        711     4875     1915     4893
+   1        712     4884     4895     1934
+   1        705     4866     4867     4864
+   1        705     4866     4864     4863
+   1        711     4892     4883     4893
+   1        711     4875     4893     4883
+   1        706     1813     4871     4872
+   1        709     4886     4889     1933
+   1        708     4879     1924     4881
+   1        706     4869     4871     4868
+   1        706     4869     4872     4871
+   1        709     4878     4889     4885
+   1        709     4886     4885     4889
+   1        707     1914     4877     4876
+   1        709     4888     1933     4889
+   1        708     4880     4881     1924
+   1        707     4874     4873     4876
+   1        707     4874     4876     4877
+   1        709     4878     4887     4889
+   1        709     4888     4889     4887
+   1        142      746     2020     2021
+   1        404     2032     1081     3592
+   1        405     2035     3599     1088
+   1        142     2024     2025     2021
+   1        142     2024     2021     2020
+   1        404     3590     2034     3592
+   1        404     2032     3592     2034
+   1        416     1084     2918     3641
+   1        280     2915      884     2940
+   1        621     3647     2959     1872
+   1        416     2942     3644     3641
+   1        416     2942     3641     2918
+   1        280     2947     2943     2940
+   1        280     2915     2940     2943
+   1        419     1092     3654     2970
+   1        626     3660     1873     3019
+   1        286     2967     2984      890
+   1        419     3657     2985     2970
+   1        419     3657     2970     3654
+   1        626     2990     2973     3019
+   1        626     3660     3019     2973
+   1        408     1531     3612     3610
+   1        409     3617     1544     3615
+   1        405     3600     3601     1088
+   1        408     3608     3595     3610
+   1        408     3608     3610     3612
+   1        409     3596     3614     3615
+   1        409     3617     3615     3614
+   1        408     1531     3610     3609
+   1        404     3593     3592     1081
+   1        405     3600     1088     3599
+   1        408     3591     3610     3595
+   1        408     3591     3609     3610
+   1        404     3590     3592     3594
+   1        404     3593     3594     3592
+   1        618     1550     3655     4511
+   1        418     3648     1091     3649
+   1        621     4522     3659     1872
+   1        618     3650     4509     4511
+   1        618     3650     4511     3655
+   1        418     3651     3652     3649
+   1        418     3648     3649     3652
+   1        416     1084     3641     3635
+   1        418     3637     3649     1091
+   1        621     3647     1872     3659
+   1        416     3642     3641     3644
+   1        416     3642     3635     3641
+   1        418     3651     3649     3645
+   1        418     3637     3645     3649
+   1        281      885     2921     2950
+   1        474     2924     1182     3908
+   1        679     2965     3912     1883
+   1        281     2951     2956     2950
+   1        281     2951     2950     2921
+   1        474     3910     2962     3908
+   1        474     2924     3908     2962
+   1        457     1179     2090     3821
+   1        154     2073      758     2075
+   1        459     3835     2097     1195
+   1        457     2079     3817     3821
+   1        457     2079     3821     2090
+   1        154     2081     2082     2075
+   1        154     2073     2075     2082
+   1        692     1885     3937     3193
+   1        481     3933     1198     3160
+   1        316     3170     3157      920
+   1        692     3935     3176     3193
+   1        692     3935     3193     3937
+   1        481     3173     3191     3160
+   1        481     3933     3160     3191
+   1        463     1163     3857     3858
+   1        677     3873     1734     4760
+   1        679     3882     4766     1883
+   1        463     3862     3863     3858
+   1        463     3862     3858     3857
+   1        677     4757     3881     4760
+   1        677     3873     4760     3881
+   1        463     1163     3858     3819
+   1        474     3823     3908     1182
+   1        679     3882     1883     3912
+   1        463     3859     3858     3863
+   1        463     3859     3819     3858
+   1        474     3910     3908     3877
+   1        474     3823     3877     3908
+   1        465     1730     3875     3872
+   1        466     3883     1880     3880
+   1        459     3838     3839     1195
+   1        465     3870     3833     3872
+   1        465     3870     3872     3875
+   1        466     3834     3879     3880
+   1        466     3883     3880     3879
+   1        457     1179     3821     3824
+   1        466     3878     3880     1880
+   1        459     3835     1195     3839
+   1        457     3820     3821     3817
+   1        457     3820     3824     3821
+   1        466     3834     3880     3876
+   1        466     3878     3876     3880
+   1        288      892     3005     2974
+   1        704     3029     1904     4027
+   1        496     2977     4014     1218
+   1        288     3011     3006     2974
+   1        288     3011     2974     3005
+   1        704     4017     2980     4027
+   1        704     3029     4027     2980
+   1        715     1905     3198     4042
+   1        317     3180      921     3163
+   1        505     4038     3166     1239
+   1        715     3187     4040     4042
+   1        715     3187     4042     3198
+   1        317     3183     3184     3163
+   1        317     3180     3163     3184
+   1        484     1215     3945     2112
+   1        487     3962     1236     2121
+   1        159     2100     2103      763
+   1        484     3940     2104     2112
+   1        484     3940     2112     3945
+   1        487     2107     2113     2121
+   1        487     3962     2121     2113
+   1        701     1812     3987     4021
+   1        488     3968     1207     3941
+   1        496     4012     3946     1218
+   1        701     3973     4015     4021
+   1        701     3973     4021     3987
+   1        488     3970     3971     3941
+   1        488     3968     3941     3971
+   1        701     1812     4021     4856
+   1        704     4861     4027     1904
+   1        496     4012     1218     4014
+   1        701     4855     4021     4015
+   1        701     4855     4856     4021
+   1        704     4017     4027     4022
+   1        704     4861     4022     4027
+   1        491     1210     3942     3960
+   1        497     3947     1219     4008
+   1        505     3965     4010     1239
+   1        491     3985     3986     3960
+   1        491     3985     3960     3942
+   1        497     4019     3963     4008
+   1        497     3947     4008     3963
+   1        715     1905     4042     4028
+   1        497     4018     4008     1219
+   1        505     4038     1239     4010
+   1        715     4023     4042     4040
+   1        715     4023     4028     4042
+   1        497     4019     4008     4020
+   1        497     4018     4020     4008
+   1        234      838     2612     2614
+   1        604     2635     1662     4451
+   1        606     2659     4459     1702
+   1        234     2618     2620     2614
+   1        234     2618     2614     2612
+   1        604     4448     2657     4451
+   1        604     2635     4451     2657
+   1        610     1663     2728     4478
+   1        244     2701      848     2703
+   1        613     4492     2746     1760
+   1        610     2707     4476     4478
+   1        610     2707     4478     2728
+   1        244     2709     2710     2703
+   1        244     2701     2703     2710
+   1        622     1705     4527     2995
+   1        624     4535     1761     3007
+   1        286     2981     2982      890
+   1        622     4525     2987     2995
+   1        622     4525     2995     4527
+   1        624     2988     2996     3007
+   1        624     4535     3007     2996
+   1        601     1510     4433     4435
+   1        603     4443     1547     4447
+   1        606     4456     4458     1702
+   1        601     4430     4432     4435
+   1        601     4430     4435     4433
+   1        603     4442     4444     4447
+   1        603     4443     4447     4444
+   1        601     1510     4435     4434
+   1        604     4449     4451     1662
+   1        606     4456     1702     4459
+   1        601     4431     4435     4432
+   1        601     4431     4434     4435
+   1        604     4448     4451     4450
+   1        604     4449     4450     4451
+   1        608     1548     4470     4472
+   1        611     4480     1703     4484
+   1        613     4491     4493     1760
+   1        608     4466     4468     4472
+   1        608     4466     4472     4470
+   1        611     4479     4481     4484
+   1        611     4480     4484     4481
+   1        610     1663     4478     4477
+   1        611     4482     4484     1703
+   1        613     4492     1760     4493
+   1        610     4475     4478     4476
+   1        610     4475     4477     4478
+   1        611     4479     4484     4483
+   1        611     4482     4483     4484
+   1        234      838     2614     2613
+   1        605     2653     4455     1694
+   1        606     2659     1702     4460
+   1        234     2619     2614     2620
+   1        234     2619     2613     2614
+   1        605     4452     4455     2658
+   1        605     2653     2658     4455
+   1        619     1695     4515     2954
+   1        280     2939     2940      884
+   1        621     4523     1872     2959
+   1        619     2946     4515     4513
+   1        619     2946     2954     4515
+   1        280     2947     2940     2948
+   1        280     2939     2948     2940
+   1        622     1705     2995     4528
+   1        626     4540     3019     1873
+   1        286     2981      890     2984
+   1        622     4526     2995     2987
+   1        622     4526     4528     2995
+   1        626     2990     3019     2997
+   1        626     4540     2997     3019
+   1        602     1537     4441     4439
+   1        603     4445     4447     1547
+   1        606     4457     1702     4458
+   1        602     4436     4441     4438
+   1        602     4436     4439     4441
+   1        603     4442     4447     4446
+   1        603     4445     4446     4447
+   1        602     1537     4440     4441
+   1        605     4453     1694     4455
+   1        606     4457     4460     1702
+   1        602     4437     4438     4441
+   1        602     4437     4441     4440
+   1        605     4452     4454     4455
+   1        605     4453     4455     4454
+   1        618     1550     4511     4510
+   1        620     4517     4521     1704
+   1        621     4522     1872     4524
+   1        618     4508     4511     4509
+   1        618     4508     4510     4511
+   1        620     4516     4521     4518
+   1        620     4517     4518     4521
+   1        619     1695     4514     4515
+   1        620     4519     1704     4521
+   1        621     4523     4524     1872
+   1        619     4512     4513     4515
+   1        619     4512     4515     4514
+   1        620     4516     4520     4521
+   1        620     4519     4521     4520
+   1        247      851     2724     2726
+   1        671     2747     1762     4738
+   1        673     2773     4746     1809
+   1        247     2730     2732     2726
+   1        247     2730     2726     2724
+   1        671     4735     2772     4738
+   1        671     2747     4738     2772
+   1        681     1763     3008     4777
+   1        287     2992      891     2994
+   1        685     4795     3028     1902
+   1        681     2998     4775     4777
+   1        681     2998     4777     3008
+   1        287     3000     3001     2994
+   1        287     2992     2994     3001
+   1        691     1811     4817     3185
+   1        693     4821     1903     3197
+   1        316     3169     3171      920
+   1        691     4814     3175     3185
+   1        691     4814     3185     4817
+   1        693     3177     3186     3197
+   1        693     4821     3197     3186
+   1        668     1706     4720     4722
+   1        670     4730     1733     4734
+   1        673     4743     4745     1809
+   1        668     4717     4719     4722
+   1        668     4717     4722     4720
+   1        670     4729     4731     4734
+   1        670     4730     4734     4731
+   1        668     1706     4722     4721
+   1        671     4736     4738     1762
+   1        673     4743     1809     4746
+   1        668     4718     4722     4719
+   1        668     4718     4721     4722
+   1        671     4735     4738     4737
+   1        671     4736     4737     4738
+   1        680     1735     4771     4773
+   1        682     4779     1810     4783
+   1        685     4794     4796     1902
+   1        680     4768     4770     4773
+   1        680     4768     4773     4771
+   1        682     4778     4780     4783
+   1        682     4779     4783     4780
+   1        681     1763     4777     4776
+   1        682     4781     4783     1810
+   1        685     4795     1902     4796
+   1        681     4774     4777     4775
+   1        681     4774     4776     4777
+   1        682     4778     4783     4782
+   1        682     4781     4782     4783
+   1        281      885     2950     2949
+   1        678     2960     4764     1874
+   1        679     2965     1883     4767
+   1        281     2955     2950     2956
+   1        281     2955     2949     2950
+   1        678     4761     4764     2964
+   1        678     2960     2964     4764
+   1        683     1875     4787     3020
+   1        287     2993     2994      891
+   1        685     4797     1902     3028
+   1        683     2999     4787     4785
+   1        683     2999     3020     4787
+   1        287     3000     2994     3002
+   1        287     2993     3002     2994
+   1        692     1885     3193     4820
+   1        693     4822     3197     1903
+   1        316     3170      920     3171
+   1        692     4819     3193     3176
+   1        692     4819     4820     3193
+   1        693     3177     3197     3194
+   1        693     4822     3194     3197
+   1        676     1707     4756     4754
+   1        677     4758     4760     1734
+   1        679     4765     1883     4766
+   1        676     4751     4756     4753
+   1        676     4751     4754     4756
+   1        677     4757     4760     4759
+   1        677     4758     4759     4760
+   1        676     1707     4755     4756
+   1        678     4762     1874     4764
+   1        679     4765     4767     1883
+   1        676     4752     4753     4756
+   1        676     4752     4756     4755
+   1        678     4761     4763     4764
+   1        678     4762     4764     4763
+   1        680     1735     4773     4772
+   1        684     4789     4793     1884
+   1        685     4794     1902     4798
+   1        680     4769     4773     4770
+   1        680     4769     4772     4773
+   1        684     4788     4793     4790
+   1        684     4789     4790     4793
+   1        683     1875     4786     4787
+   1        684     4791     1884     4793
+   1        685     4797     4798     1902
+   1        683     4784     4785     4787
+   1        683     4784     4787     4786
+   1        684     4788     4792     4793
+   1        684     4791     4793     4792
+   1        138      742     2001     2002
+   1        385     2008     1041     3504
+   1        386     2012     3510     1048
+   1        138     2005     2006     2002
+   1        138     2005     2002     2001
+   1        385     3502     2011     3504
+   1        385     2008     3504     2011
+   1        392     1043     2779     3537
+   1        256     2777      860     2786
+   1        592     3542     2800     1822
+   1        392     2787     3539     3537
+   1        392     2787     3537     2779
+   1        256     2790     2788     2786
+   1        256     2777     2786     2788
+   1        396     1052     3550     2812
+   1        595     3555     1823     2865
+   1        264     2809     2837      868
+   1        396     3553     2838     2812
+   1        396     3553     2812     3550
+   1        595     2843     2814     2865
+   1        595     3555     2865     2814
+   1        389     1458     3527     3526
+   1        390     3532     1468     3529
+   1        386     3512     3513     1048
+   1        389     3524     3508     3526
+   1        389     3524     3526     3527
+   1        390     3509     3528     3529
+   1        390     3532     3529     3528
+   1        389     1458     3526     3525
+   1        385     3505     3504     1041
+   1        386     3512     1048     3510
+   1        389     3503     3526     3508
+   1        389     3503     3525     3526
+   1        385     3502     3504     3506
+   1        385     3505     3506     3504
+   1        589     1476     3552     4382
+   1        395     3545     1051     3546
+   1        592     4393     3554     1822
+   1        589     3547     4380     4382
+   1        589     3547     4382     3552
+   1        395     3548     3549     3546
+   1        395     3545     3546     3549
+   1        392     1043     3537     3533
+   1        395     3535     3546     1051
+   1        592     3542     1822     3554
+   1        392     3538     3537     3539
+   1        392     3538     3533     3537
+   1        395     3548     3546     3540
+   1        395     3535     3540     3546
+   1        257      861     2781     2793
+   1        430     2783     1108     3705
+   1        642     2806     3708     1833
+   1        257     2794     2797     2793
+   1        257     2794     2793     2781
+   1        430     3706     2803     3705
+   1        430     2783     3705     2803
+   1        422     1106     2046     3664
+   1        146     2038      750     2039
+   1        423     3671     2049     1112
+   1        422     2041     3661     3664
+   1        422     2041     3664     2046
+   1        146     2042     2044     2039
+   1        146     2038     2039     2044
+   1        652     1835     3725     3079
+   1        433     3714     1115     3034
+   1        295     3047     3031      899
+   1        652     3717     3053     3079
+   1        652     3717     3079     3725
+   1        433     3050     3077     3034
+   1        433     3714     3034     3077
+   1        425     1100     3680     3681
+   1        640     3689     1610     4612
+   1        642     3701     4618     1833
+   1        425     3683     3684     3681
+   1        425     3683     3681     3680
+   1        640     4609     3700     4612
+   1        640     3689     4612     3700
+   1        425     1100     3681     3662
+   1        430     3665     3705     1108
+   1        642     3701     1833     3708
+   1        425     3682     3681     3684
+   1        425     3682     3662     3681
+   1        430     3706     3705     3696
+   1        430     3665     3696     3705
+   1        426     1606     3691     3687
+   1        428     3702     1830     3699
+   1        423     3673     3675     1112
+   1        426     3686     3668     3687
+   1        426     3686     3687     3691
+   1        428     3670     3698     3699
+   1        428     3702     3699     3698
+   1        422     1106     3664     3666
+   1        428     3697     3699     1830
+   1        423     3671     1112     3675
+   1        422     3663     3664     3661
+   1        422     3663     3666     3664
+   1        428     3670     3699     3695
+   1        428     3697     3695     3699
+   1        266      870     2855     2816
+   1        675     2870     1844     3902
+   1        469     2819     3891     1173
+   1        266     2862     2857     2816
+   1        266     2862     2816     2855
+   1        675     3894     2821     3902
+   1        675     2870     3902     2821
+   1        688     1845     3084     3929
+   1        296     3057      900     3038
+   1        477     3918     3041     1189
+   1        688     3064     3921     3929
+   1        688     3064     3929     3084
+   1        296     3059     3060     3038
+   1        296     3057     3038     3060
+   1        456     1170     3814     2085
+   1        458     3828     1186     2093
+   1        154     2072     2074      758
+   1        456     3811     2078     2085
+   1        456     3811     2085     3814
+   1        458     2080     2086     2093
+   1        458     3828     2093     2086
+   1        674     1723     3868     3898
+   1        462     3852     1162     3812
+   1        469     3890     3815     1173
+   1        674     3856     3893     3898
+   1        674     3856     3898     3868
+   1        462     3853     3854     3812
+   1        462     3852     3812     3854
+   1        674     1723     3898     4749
+   1        675     4750     3902     1844
+   1        469     3890     1173     3891
+   1        674     4748     3898     3893
+   1        674     4748     4749     3898
+   1        675     3894     3902     3899
+   1        675     4750     3899     3902
+   1        464     1164     3813     3826
+   1        470     3816     1174     3884
+   1        477     3831     3886     1189
+   1        464     3865     3866     3826
+   1        464     3865     3826     3813
+   1        470     3896     3829     3884
+   1        470     3816     3884     3829
+   1        688     1845     3929     3903
+   1        470     3895     3884     1174
+   1        477     3918     1189     3886
+   1        688     3900     3929     3921
+   1        688     3900     3903     3929
+   1        470     3896     3884     3897
+   1        470     3895     3897     3884
+   1        215      819     2467     2469
+   1        582     2479     1561     4352
+   1        584     2499     4360     1592
+   1        215     2471     2473     2469
+   1        215     2471     2469     2467
+   1        582     4349     2497     4352
+   1        582     2479     4352     2497
+   1        586     1562     2626     4369
+   1        233     2603      837     2604
+   1        588     4377     2645     1680
+   1        586     2609     4367     4369
+   1        586     2609     4369     2626
+   1        233     2610     2611     2604
+   1        233     2603     2604     2611
+   1        593     1595     4398     2847
+   1        594     4400     1681     2860
+   1        264     2835     2836      868
+   1        593     4396     2841     2847
+   1        593     4396     2847     4398
+   1        594     2842     2848     2860
+   1        594     4400     2860     2848
+   1        579     1451     4334     4336
+   1        581     4344     1474     4348
+   1        584     4357     4359     1592
+   1        579     4331     4333     4336
+   1        579     4331     4336     4334
+   1        581     4343     4345     4348
+   1        581     4344     4348     4345
+   1        579     1451     4336     4335
+   1        582     4350     4352     1561
+   1        584     4357     1592     4360
+   1        579     4332     4336     4333
+   1        579     4332     4335     4336
+   1        582     4349     4352     4351
+   1        582     4350     4351     4352
+   1        585     1475     4364     4365
+   1        587     4371     1593     4375
+   1        588     4376     4378     1680
+   1        585     4362     4363     4365
+   1        585     4362     4365     4364
+   1        587     4370     4372     4375
+   1        587     4371     4375     4372
+   1        586     1562     4369     4368
+   1        587     4373     4375     1593
+   1        588     4377     1680     4378
+   1        586     4366     4369     4367
+   1        586     4366     4368     4369
+   1        587     4370     4375     4374
+   1        587     4373     4374     4375
+   1        215      819     2469     2468
+   1        583     2493     4356     1584
+   1        584     2499     1592     4361
+   1        215     2472     2469     2473
+   1        215     2472     2468     2469
+   1        583     4353     4356     2498
+   1        583     2493     2498     4356
+   1        590     1585     4386     2795
+   1        256     2785     2786      860
+   1        592     4394     1822     2800
+   1        590     2789     4386     4384
+   1        590     2789     2795     4386
+   1        256     2790     2786     2791
+   1        256     2785     2791     2786
+   1        593     1595     2847     4399
+   1        595     4401     2865     1823
+   1        264     2835      868     2837
+   1        593     4397     2847     2841
+   1        593     4397     4399     2847
+   1        595     2843     2865     2849
+   1        595     4401     2849     2865
+   1        580     1461     4342     4340
+   1        581     4346     4348     1474
+   1        584     4358     1592     4359
+   1        580     4337     4342     4339
+   1        580     4337     4340     4342
+   1        581     4343     4348     4347
+   1        581     4346     4347     4348
+   1        580     1461     4341     4342
+   1        583     4354     1584     4356
+   1        584     4358     4361     1592
+   1        580     4338     4339     4342
+   1        580     4338     4342     4341
+   1        583     4353     4355     4356
+   1        583     4354     4356     4355
+   1        589     1476     4382     4381
+   1        591     4388     4392     1594
+   1        592     4393     1822     4395
+   1        589     4379     4382     4380
+   1        589     4379     4381     4382
+   1        591     4387     4392     4389
+   1        591     4388     4389     4392
+   1        590     1585     4385     4386
+   1        591     4390     1594     4392
+   1        592     4394     4395     1822
+   1        590     4383     4384     4386
+   1        590     4383     4386     4385
+   1        591     4387     4391     4392
+   1        591     4390     4392     4391
+   1        235      839     2622     2623
+   1        631     2646     1682     4568
+   1        632     2669     4573     1719
+   1        235     2628     2629     2623
+   1        235     2628     2623     2622
+   1        631     4565     2668     4568
+   1        631     2646     4568     2668
+   1        644     1683     2861     4629
+   1        265     2844      869     2846
+   1        648     4647     2869     1842
+   1        644     2850     4627     4629
+   1        644     2850     4629     2861
+   1        265     2852     2853     2846
+   1        265     2844     2846     2853
+   1        650     1721     4658     3061
+   1        653     4665     1843     3083
+   1        295     3045     3048      899
+   1        650     4656     3051     3061
+   1        650     4656     3061     4658
+   1        653     3054     3062     3083
+   1        653     4665     3083     3062
+   1        628     1596     4550     4552
+   1        629     4556     1608     4558
+   1        632     4570     4571     1719
+   1        628     4547     4549     4552
+   1        628     4547     4552     4550
+   1        629     4553     4557     4558
+   1        629     4556     4558     4557
+   1        628     1596     4552     4551
+   1        631     4566     4568     1682
+   1        632     4570     1719     4573
+   1        628     4548     4552     4549
+   1        628     4548     4551     4552
+   1        631     4565     4568     4567
+   1        631     4566     4567     4568
+   1        643     1611     4623     4625
+   1        645     4631     1720     4635
+   1        648     4646     4648     1842
+   1        643     4620     4622     4625
+   1        643     4620     4625     4623
+   1        645     4630     4632     4635
+   1        645     4631     4635     4632
+   1        644     1683     4629     4628
+   1        645     4633     4635     1720
+   1        648     4647     1842     4648
+   1        644     4626     4629     4627
+   1        644     4626     4628     4629
+   1        645     4630     4635     4634
+   1        645     4633     4634     4635
+   1        257      861     2793     2792
+   1        641     2801     4616     1824
+   1        642     2806     1833     4619
+   1        257     2796     2793     2797
+   1        257     2796     2792     2793
+   1        641     4613     4616     2805
+   1        641     2801     2805     4616
+   1        646     1825     4639     2866
+   1        265     2845     2846      869
+   1        648     4649     1842     2869
+   1        646     2851     4639     4637
+   1        646     2851     2866     4639
+   1        265     2852     2846     2854
+   1        265     2845     2854     2846
+   1        652     1835     3079     4664
+   1        653     4666     3083     1843
+   1        295     3047      899     3048
+   1        652     4663     3079     3053
+   1        652     4663     4664     3079
+   1        653     3054     3083     3080
+   1        653     4666     3080     3083
+   1        639     1597     4608     4606
+   1        640     4610     4612     1610
+   1        642     4617     1833     4618
+   1        639     4603     4608     4605
+   1        639     4603     4606     4608
+   1        640     4609     4612     4611
+   1        640     4610     4611     4612
+   1        639     1597     4607     4608
+   1        641     4614     1824     4616
+   1        642     4617     4619     1833
+   1        639     4604     4605     4608
+   1        639     4604     4608     4607
+   1        641     4613     4615     4616
+   1        641     4614     4616     4615
+   1        643     1611     4625     4624
+   1        647     4641     4645     1834
+   1        648     4646     1842     4650
+   1        643     4621     4625     4622
+   1        643     4621     4624     4625
+   1        647     4640     4645     4642
+   1        647     4641     4642     4645
+   1        646     1825     4638     4639
+   1        647     4643     1834     4645
+   1        648     4649     4650     1842
+   1        646     4636     4637     4639
+   1        646     4636     4639     4638
+   1        647     4640     4644     4645
+   1        647     4643     4645     4644
+   1        142      746     2021     2019
+   1        405     2035     1088     3597
+   1        403     2027     3587     1073
+   1        142     2025     2023     2019
+   1        142     2025     2019     2021
+   1        405     3584     2028     3597
+   1        405     2035     3597     2028
+   1        419     1092     2970     3653
+   1        286     2967      890     2983
+   1        625     3658     3014     1853
+   1        419     2985     3656     3653
+   1        419     2985     3653     2970
+   1        286     2989     2986     2983
+   1        286     2967     2983     2986
+   1        411     1075     3623     2874
+   1        617     3633     1852     2907
+   1        271     2872     2884      875
+   1        411     3625     2885     2874
+   1        411     3625     2874     3623
+   1        617     2888     2876     2907
+   1        617     3633     2907     2876
+   1        409     1544     3616     3613
+   1        407     3607     1520     3605
+   1        403     3589     3588     1073
+   1        409     3604     3586     3613
+   1        409     3604     3613     3616
+   1        407     3585     3606     3605
+   1        407     3607     3605     3606
+   1        409     1544     3613     3615
+   1        405     3601     3597     1088
+   1        403     3589     1073     3587
+   1        409     3596     3613     3586
+   1        409     3596     3615     3613
+   1        405     3584     3597     3598
+   1        405     3601     3598     3597
+   1        614     1524     3624     4496
+   1        412     3622     1076     3626
+   1        625     4506     3634     1853
+   1        614     3629     4498     4496
+   1        614     3629     4496     3624
+   1        412     3631     3630     3626
+   1        412     3622     3626     3630
+   1        419     1092     3653     3620
+   1        412     3618     3626     1076
+   1        625     3658     1853     3634
+   1        419     3627     3653     3656
+   1        419     3627     3620     3653
+   1        412     3631     3626     3628
+   1        412     3618     3628     3626
+   1        288      892     2974     3004
+   1        496     2977     1218     4013
+   1        703     3025     4025     1894
+   1        288     3006     3010     3004
+   1        288     3006     3004     2974
+   1        496     4016     3022     4013
+   1        496     2977     4013     3022
+   1        484     1215     2112     3944
+   1        159     2100      763     2102
+   1        486     3957     2119     1230
+   1        484     2104     3939     3944
+   1        484     2104     3944     2112
+   1        159     2106     2108     2102
+   1        159     2100     2102     2108
+   1        714     1895     4037     3155
+   1        503     4035     1232     3132
+   1        311     3142     3130      915
+   1        714     4036     3146     3155
+   1        714     4036     3155     4037
+   1        503     3143     3152     3132
+   1        503     4035     3132     3152
+   1        488     1207     3967     3969
+   1        700     3982     1801     4854
+   1        703     3996     4859     1894
+   1        488     3972     3974     3969
+   1        488     3972     3969     3967
+   1        700     4853     3995     4854
+   1        700     3982     4854     3995
+   1        488     1207     3969     3941
+   1        496     3946     4013     1218
+   1        703     3996     1894     4025
+   1        488     3970     3969     3974
+   1        488     3970     3941     3969
+   1        496     4016     4013     3991
+   1        496     3946     3991     4013
+   1        490     1796     3983     3981
+   1        492     3997     1890     3994
+   1        486     3958     3959     1230
+   1        490     3980     3955     3981
+   1        490     3980     3981     3983
+   1        492     3956     3993     3994
+   1        492     3997     3994     3993
+   1        484     1215     3944     3948
+   1        492     3992     3994     1890
+   1        486     3957     1230     3959
+   1        484     3943     3944     3939
+   1        484     3943     3948     3944
+   1        492     3956     3994     3990
+   1        492     3992     3990     3994
+   1        272      876     2890     2877
+   1        664     2911     1862     3764
+   1        444     2879     3754     1135
+   1        272     2894     2891     2877
+   1        272     2894     2877     2890
+   1        664     3756     2881     3764
+   1        664     2911     3764     2881
+   1        667     1863     3149     3768
+   1        310     3135      914     3126
+   1        447     3766     3128     1142
+   1        667     3139     3767     3768
+   1        667     3139     3768     3149
+   1        310     3136     3137     3126
+   1        310     3135     3126     3137
+   1        439     1133     3735     2060
+   1        440     3739     1140     2063
+   1        150     2055     2056      754
+   1        439     3732     2057     2060
+   1        439     3732     2060     3735
+   1        440     2058     2061     2063
+   1        440     3739     2063     2061
+   1        662     1654     3748     3760
+   1        441     3742     1129     3733
+   1        444     3753     3736     1135
+   1        662     3745     3755     3760
+   1        662     3745     3760     3748
+   1        441     3743     3744     3733
+   1        441     3742     3733     3744
+   1        662     1654     3760     4700
+   1        664     4705     3764     1862
+   1        444     3753     1135     3754
+   1        662     4698     3760     3755
+   1        662     4698     4700     3760
+   1        664     3756     3764     3761
+   1        664     4705     3761     3764
+   1        442     1130     3734     3738
+   1        445     3737     1136     3749
+   1        447     3741     3751     1142
+   1        442     3746     3747     3738
+   1        442     3746     3738     3734
+   1        445     3758     3740     3749
+   1        445     3737     3749     3740
+   1        667     1863     3768     3765
+   1        445     3757     3749     1136
+   1        447     3766     1142     3751
+   1        667     3762     3768     3767
+   1        667     3762     3765     3768
+   1        445     3758     3749     3759
+   1        445     3757     3759     3749
+   1        244      848     2700     2702
+   1        609     2721     1633     4474
+   1        612     2736     4488     1745
+   1        244     2706     2708     2702
+   1        244     2706     2702     2700
+   1        609     4473     2735     4474
+   1        609     2721     4474     2735
+   1        598     1632     2535     4416
+   1        224     2525      828     2526
+   1        599     4420     2540     1642
+   1        598     2529     4413     4416
+   1        598     2529     4416     2535
+   1        224     2530     2531     2526
+   1        224     2525     2526     2531
+   1        616     1746     4503     2898
+   1        615     4500     1643     2892
+   1        271     2883     2882      875
+   1        616     4499     2887     2898
+   1        616     4499     2898     4503
+   1        615     2886     2897     2892
+   1        615     4500     2892     2897
+   1        596     1485     4402     4404
+   1        607     4410     1523     4464
+   1        612     4424     4486     1745
+   1        596     4405     4407     4404
+   1        596     4405     4404     4402
+   1        607     4462     4422     4464
+   1        607     4410     4464     4422
+   1        596     1485     4404     4403
+   1        609     4415     4474     1633
+   1        612     4424     1745     4488
+   1        596     4406     4404     4407
+   1        596     4406     4403     4404
+   1        609     4473     4474     4423
+   1        609     4415     4423     4474
+   1        597     1522     4412     4411
+   1        600     4426     1744     4429
+   1        599     4419     4421     1642
+   1        597     4409     4408     4411
+   1        597     4409     4411     4412
+   1        600     4418     4425     4429
+   1        600     4426     4429     4425
+   1        598     1632     4416     4417
+   1        600     4428     4429     1744
+   1        599     4420     1642     4421
+   1        598     4414     4416     4413
+   1        598     4414     4417     4416
+   1        600     4418     4429     4427
+   1        600     4428     4427     4429
+   1        244      848     2702     2703
+   1        613     2746     4494     1760
+   1        612     2736     1745     4489
+   1        244     2709     2702     2708
+   1        244     2709     2703     2702
+   1        613     4485     4494     2737
+   1        613     2746     2737     4494
+   1        624     1761     4537     3007
+   1        286     2982     2983      890
+   1        625     4539     1853     3014
+   1        624     2988     4537     4534
+   1        624     2988     3007     4537
+   1        286     2989     2983     2991
+   1        286     2982     2991     2983
+   1        616     1746     2898     4504
+   1        617     4507     2907     1852
+   1        271     2883      875     2884
+   1        616     4501     2898     2887
+   1        616     4501     4504     2898
+   1        617     2888     2907     2899
+   1        617     4507     2899     2907
+   1        608     1548     4471     4469
+   1        607     4463     4464     1523
+   1        612     4487     1745     4486
+   1        608     4461     4471     4467
+   1        608     4461     4469     4471
+   1        607     4462     4464     4465
+   1        607     4463     4465     4464
+   1        608     1548     4472     4471
+   1        613     4491     1760     4494
+   1        612     4487     4489     1745
+   1        608     4468     4467     4471
+   1        608     4468     4471     4472
+   1        613     4485     4490     4494
+   1        613     4491     4494     4490
+   1        614     1524     4496     4495
+   1        623     4502     4532     1747
+   1        625     4506     1853     4538
+   1        614     4497     4496     4498
+   1        614     4497     4495     4496
+   1        623     4530     4532     4505
+   1        623     4502     4505     4532
+   1        624     1761     4536     4537
+   1        623     4531     1747     4532
+   1        625     4539     4538     1853
+   1        624     4529     4534     4537
+   1        624     4529     4537     4536
+   1        623     4530     4533     4532
+   1        623     4531     4532     4533
+   1        225      829     2532     2533
+   1        658     2541     1644     4682
+   1        659     2546     4687     1653
+   1        225     2536     2537     2533
+   1        225     2536     2533     2532
+   1        658     4680     2545     4682
+   1        658     2541     4682     2545
+   1        663     1646     2893     4701
+   1        273     2889      877     2896
+   1        698     4706     2912     1864
+   1        663     2900     4703     4701
+   1        663     2900     4701     2893
+   1        273     2903     2901     2896
+   1        273     2889     2896     2901
+   1        666     1656     4712     3138
+   1        713     4716     1865     3150
+   1        311     3134     3141      915
+   1        666     4714     3144     3138
+   1        666     4714     3138     4712
+   1        713     3145     3140     3150
+   1        713     4716     3150     3140
+   1        660     1748     4693     4692
+   1        661     4696     1798     4695
+   1        659     4688     4689     1653
+   1        660     4690     4685     4692
+   1        660     4690     4692     4693
+   1        661     4686     4694     4695
+   1        661     4696     4695     4694
+   1        660     1748     4692     4691
+   1        658     4683     4682     1644
+   1        659     4688     1653     4687
+   1        660     4681     4692     4685
+   1        660     4681     4691     4692
+   1        658     4680     4682     4684
+   1        658     4683     4684     4682
+   1        696     1800     4713     4834
+   1        665     4707     1655     4708
+   1        698     4842     4715     1864
+   1        696     4709     4831     4834
+   1        696     4709     4834     4713
+   1        665     4710     4711     4708
+   1        665     4707     4708     4711
+   1        663     1646     4701     4697
+   1        665     4699     4708     1655
+   1        698     4706     1864     4715
+   1        663     4702     4701     4703
+   1        663     4702     4697     4701
+   1        665     4710     4708     4704
+   1        665     4699     4704     4708
+   1        288      892     3004     3003
+   1        702     3015     4858     1855
+   1        703     3025     1894     4860
+   1        288     3009     3004     3010
+   1        288     3009     3003     3004
+   1        702     4857     4858     3024
+   1        702     3015     3024     4858
+   1        697     1854     4839     2908
+   1        273     2895     2896      877
+   1        698     4843     1864     2912
+   1        697     2902     4839     4836
+   1        697     2902     2908     4839
+   1        273     2903     2896     2904
+   1        273     2895     2904     2896
+   1        714     1895     3155     4898
+   1        713     4897     3150     1865
+   1        311     3142      915     3141
+   1        714     4896     3155     3146
+   1        714     4896     4898     3155
+   1        713     3145     3150     3154
+   1        713     4897     3154     3150
+   1        695     1751     4827     4825
+   1        700     4833     4854     1801
+   1        703     4847     1894     4859
+   1        695     4828     4827     4830
+   1        695     4828     4825     4827
+   1        700     4853     4854     4845
+   1        700     4833     4845     4854
+   1        695     1751     4826     4827
+   1        702     4838     1855     4858
+   1        703     4847     4860     1894
+   1        695     4829     4830     4827
+   1        695     4829     4827     4826
+   1        702     4857     4846     4858
+   1        702     4838     4858     4846
+   1        696     1800     4834     4835
+   1        699     4849     4852     1893
+   1        698     4842     1864     4844
+   1        696     4832     4834     4831
+   1        696     4832     4835     4834
+   1        699     4841     4852     4848
+   1        699     4849     4848     4852
+   1        697     1854     4840     4839
+   1        699     4851     1893     4852
+   1        698     4843     4844     1864
+   1        697     4837     4836     4839
+   1        697     4837     4839     4840
+   1        699     4841     4850     4852
+   1        699     4851     4852     4850
+   1        130      734     1956     1957
+   1        340     1970      975     3289
+   1        341     1985     3296     1000
+   1        130     1959     1960     1957
+   1        130     1959     1957     1956
+   1        340     3287     1984     3289
+   1        340     1970     3289     1984
+   1        354      979     2382     3363
+   1        205     2378      809     2395
+   1        533     3374     2418     1494
+   1        354     2396     3365     3363
+   1        354     2396     3363     2382
+   1        205     2399     2397     2395
+   1        205     2378     2395     2397
+   1        369     1006     3434     2553
+   1        538     3444     1495     2616
+   1        230     2548     2575      834
+   1        369     3437     2576     2553
+   1        369     3437     2553     3434
+   1        538     2581     2558     2616
+   1        538     3444     2616     2558
+   1        343     1288     3306     3305
+   1        344     3311     1298     3309
+   1        341     3297     3298     1000
+   1        343     3303     3292     3305
+   1        343     3303     3305     3306
+   1        344     3293     3308     3309
+   1        344     3311     3309     3308
+   1        343     1288     3305     3304
+   1        340     3290     3289      975
+   1        341     3297     1000     3296
+   1        343     3288     3305     3292
+   1        343     3288     3304     3305
+   1        340     3287     3289     3291
+   1        340     3290     3291     3289
+   1        530     1304     3435     4153
+   1        368     3428     1005     3429
+   1        533     4164     3443     1494
+   1        530     3430     4151     4153
+   1        530     3430     4153     3435
+   1        368     3431     3432     3429
+   1        368     3428     3429     3432
+   1        354      979     3363     3349
+   1        368     3353     3429     1005
+   1        533     3374     1494     3443
+   1        354     3364     3363     3365
+   1        354     3364     3349     3363
+   1        368     3431     3429     3371
+   1        368     3353     3371     3429
+   1        206      810     2386     2402
+   1        406     2390     1067     3602
+   1        556     2442     3611     1534
+   1        206     2403     2406     2402
+   1        206     2403     2402     2386
+   1        406     3603     2438     3602
+   1        406     2390     3602     2438
+   1        398     1063     2022     3559
+   1        141     2014      745     2015
+   1        399     3564     2031     1080
+   1        398     2016     3556     3559
+   1        398     2016     3559     2022
+   1        141     2017     2018     2015
+   1        141     2014     2015     2018
+   1        564     1536     3643     2944
+   1        415     3639     1083     2917
+   1        278     2927     2914      882
+   1        564     3640     2931     2944
+   1        564     3640     2944     3643
+   1        415     2929     2941     2917
+   1        415     3639     2917     2941
+   1        400     1058     3567     3568
+   1        554     3574     1379     4246
+   1        556     3582     4252     1534
+   1        400     3570     3571     3568
+   1        400     3570     3568     3567
+   1        554     4243     3581     4246
+   1        554     3574     4246     3581
+   1        400     1058     3568     3557
+   1        406     3560     3602     1067
+   1        556     3582     1534     3611
+   1        400     3569     3568     3571
+   1        400     3569     3557     3568
+   1        406     3603     3602     3577
+   1        406     3560     3577     3602
+   1        401     1376     3575     3573
+   1        402     3583     1530     3580
+   1        399     3565     3566     1080
+   1        401     3572     3562     3573
+   1        401     3572     3573     3575
+   1        402     3563     3579     3580
+   1        402     3583     3580     3579
+   1        398     1063     3559     3561
+   1        402     3578     3580     1530
+   1        399     3564     1080     3566
+   1        398     3558     3559     3556
+   1        398     3558     3561     3559
+   1        402     3563     3580     3576
+   1        402     3578     3576     3580
+   1        232      836     2596     2560
+   1        575     2652     1692     3860
+   1        460     2565     3842     1160
+   1        232     2602     2597     2560
+   1        232     2602     2560     2596
+   1        575     3845     2570     3860
+   1        575     2652     3860     2570
+   1        578     1693     2953     3909
+   1        279     2933      883     2920
+   1        473     3906     2923     1181
+   1        578     2938     3907     3909
+   1        578     2938     3909     2953
+   1        279     2934     2935     2920
+   1        279     2933     2920     2935
+   1        449     1155     3775     2076
+   1        451     3785     1178     2089
+   1        153     2065     2067      757
+   1        449     3770     2068     2076
+   1        449     3770     2076     3775
+   1        451     2070     2077     2089
+   1        451     3785     2089     2077
+   1        572     1430     3802     3849
+   1        452     3789     1149     3771
+   1        460     3840     3776     1160
+   1        572     3794     3843     3849
+   1        572     3794     3849     3802
+   1        452     3791     3792     3771
+   1        452     3789     3771     3792
+   1        572     1430     3849     4322
+   1        575     4327     3860     1692
+   1        460     3840     1160     3842
+   1        572     4321     3849     3843
+   1        572     4321     4322     3849
+   1        575     3845     3860     3850
+   1        575     4327     3850     3860
+   1        454     1151     3772     3784
+   1        461     3777     1161     3818
+   1        473     3787     3822     1181
+   1        454     3800     3801     3784
+   1        454     3800     3784     3772
+   1        461     3847     3786     3818
+   1        461     3777     3818     3786
+   1        578     1693     3909     3861
+   1        461     3846     3818     1161
+   1        473     3906     1181     3822
+   1        578     3851     3909     3907
+   1        578     3851     3861     3909
+   1        461     3847     3818     3848
+   1        461     3846     3848     3818
+   1        180      784     2218     2220
+   1        516     2228     1344     4093
+   1        518     2240     4101     1362
+   1        180     2222     2224     2220
+   1        180     2222     2220     2218
+   1        516     4090     2238     4093
+   1        516     2228     4093     2238
+   1        522     1345     2284     4120
+   1        187     2265      791     2267
+   1        525     4134     2300     1402
+   1        522     2271     4118     4120
+   1        522     2271     4120     2284
+   1        187     2273     2274     2267
+   1        187     2265     2267     2274
+   1        534     1365     4169     2586
+   1        536     4177     1403     2598
+   1        230     2572     2573      834
+   1        534     4167     2578     2586
+   1        534     4167     2586     4169
+   1        536     2579     2587     2598
+   1        536     4177     2598     2587
+   1        513     1268     4075     4077
+   1        515     4085     1301     4089
+   1        518     4098     4100     1362
+   1        513     4072     4074     4077
+   1        513     4072     4077     4075
+   1        515     4084     4086     4089
+   1        515     4085     4089     4086
+   1        513     1268     4077     4076
+   1        516     4091     4093     1344
+   1        518     4098     1362     4101
+   1        513     4073     4077     4074
+   1        513     4073     4076     4077
+   1        516     4090     4093     4092
+   1        516     4091     4092     4093
+   1        520     1302     4112     4114
+   1        523     4122     1363     4126
+   1        525     4133     4135     1402
+   1        520     4108     4110     4114
+   1        520     4108     4114     4112
+   1        523     4121     4123     4126
+   1        523     4122     4126     4123
+   1        522     1345     4120     4119
+   1        523     4124     4126     1363
+   1        525     4134     1402     4135
+   1        522     4117     4120     4118
+   1        522     4117     4119     4120
+   1        523     4121     4126     4125
+   1        523     4124     4125     4126
+   1        180      784     2220     2219
+   1        517     2234     4097     1354
+   1        518     2240     1362     4102
+   1        180     2223     2220     2224
+   1        180     2223     2219     2220
+   1        517     4094     4097     2239
+   1        517     2234     2239     4097
+   1        531     1355     4157     2404
+   1        205     2394     2395      809
+   1        533     4165     1494     2418
+   1        531     2398     4157     4155
+   1        531     2398     2404     4157
+   1        205     2399     2395     2400
+   1        205     2394     2400     2395
+   1        534     1365     2586     4170
+   1        538     4182     2616     1495
+   1        230     2572      834     2575
+   1        534     4168     2586     2578
+   1        534     4168     4170     2586
+   1        538     2581     2616     2588
+   1        538     4182     2588     2616
+   1        514     1291     4083     4081
+   1        515     4087     4089     1301
+   1        518     4099     1362     4100
+   1        514     4078     4083     4080
+   1        514     4078     4081     4083
+   1        515     4084     4089     4088
+   1        515     4087     4088     4089
+   1        514     1291     4082     4083
+   1        517     4095     1354     4097
+   1        518     4099     4102     1362
+   1        514     4079     4080     4083
+   1        514     4079     4083     4082
+   1        517     4094     4096     4097
+   1        517     4095     4097     4096
+   1        530     1304     4153     4152
+   1        532     4159     4163     1364
+   1        533     4164     1494     4166
+   1        530     4150     4153     4151
+   1        530     4150     4152     4153
+   1        532     4158     4163     4160
+   1        532     4159     4160     4163
+   1        531     1355     4156     4157
+   1        532     4161     1364     4163
+   1        533     4165     4166     1494
+   1        531     4154     4155     4157
+   1        531     4154     4157     4156
+   1        532     4158     4162     4163
+   1        532     4161     4163     4162
+   1        189      793     2281     2282
+   1        551     2301     1404     4233
+   1        552     2312     4236     1427
+   1        189     2285     2286     2282
+   1        189     2285     2282     2281
+   1        551     4230     2311     4233
+   1        551     2301     4233     2311
+   1        558     1405     2599     4263
+   1        231     2583      835     2585
+   1        562     4281     2651     1690
+   1        558     2589     4261     4263
+   1        558     2589     4263     2599
+   1        231     2591     2592     2585
+   1        231     2583     2585     2592
+   1        563     1429     4286     2936
+   1        565     4289     1691     2952
+   1        278     2926     2928      882
+   1        563     4285     2930     2936
+   1        563     4285     2936     4286
+   1        565     2932     2937     2952
+   1        565     4289     2952     2937
+   1        549     1366     4223     4225
+   1        550     4227     1378     4229
+   1        552     4234     4235     1427
+   1        549     4220     4222     4225
+   1        549     4220     4225     4223
+   1        550     4226     4228     4229
+   1        550     4227     4229     4228
+   1        549     1366     4225     4224
+   1        551     4231     4233     1404
+   1        552     4234     1427     4236
+   1        549     4221     4225     4222
+   1        549     4221     4224     4225
+   1        551     4230     4233     4232
+   1        551     4231     4232     4233
+   1        557     1380     4257     4259
+   1        559     4265     1428     4269
+   1        562     4280     4282     1690
+   1        557     4254     4256     4259
+   1        557     4254     4259     4257
+   1        559     4264     4266     4269
+   1        559     4265     4269     4266
+   1        558     1405     4263     4262
+   1        559     4267     4269     1428
+   1        562     4281     1690     4282
+   1        558     4260     4263     4261
+   1        558     4260     4262     4263
+   1        559     4264     4269     4268
+   1        559     4267     4268     4269
+   1        206      810     2402     2401
+   1        555     2419     4250     1496
+   1        556     2442     1534     4253
+   1        206     2405     2402     2406
+   1        206     2405     2401     2402
+   1        555     4247     4250     2441
+   1        555     2419     2441     4250
+   1        560     1497     4273     2617
+   1        231     2584     2585      835
+   1        562     4283     1690     2651
+   1        560     2590     4273     4271
+   1        560     2590     2617     4273
+   1        231     2591     2585     2593
+   1        231     2584     2593     2585
+   1        564     1536     2944     4288
+   1        565     4290     2952     1691
+   1        278     2927      882     2928
+   1        564     4287     2944     2931
+   1        564     4287     4288     2944
+   1        565     2932     2952     2945
+   1        565     4290     2945     2952
+   1        553     1367     4242     4240
+   1        554     4244     4246     1379
+   1        556     4251     1534     4252
+   1        553     4237     4242     4239
+   1        553     4237     4240     4242
+   1        554     4243     4246     4245
+   1        554     4244     4245     4246
+   1        553     1367     4241     4242
+   1        555     4248     1496     4250
+   1        556     4251     4253     1534
+   1        553     4238     4239     4242
+   1        553     4238     4242     4241
+   1        555     4247     4249     4250
+   1        555     4248     4250     4249
+   1        557     1380     4259     4258
+   1        561     4275     4279     1535
+   1        562     4280     1690     4284
+   1        557     4255     4259     4256
+   1        557     4255     4258     4259
+   1        561     4274     4279     4276
+   1        561     4275     4276     4279
+   1        560     1497     4272     4273
+   1        561     4277     1535     4279
+   1        562     4283     4284     1690
+   1        560     4270     4271     4273
+   1        560     4270     4273     4272
+   1        561     4274     4278     4279
+   1        561     4277     4279     4278
+   1        130      734     1957     1955
+   1        341     1985     1000     3294
+   1        339     1963     3284      966
+   1        130     1960     1958     1955
+   1        130     1960     1955     1957
+   1        341     3281     1964     3294
+   1        341     1985     3294     1964
+   1        369     1006     2553     3433
+   1        230     2548      834     2574
+   1        537     3439     2607     1448
+   1        369     2576     3436     3433
+   1        369     2576     3433     2553
+   1        230     2580     2577     2574
+   1        230     2548     2574     2577
+   1        347      969     3325     2317
+   1        529     3340     1447     2361
+   1        196     2314     2330      800
+   1        347     3327     2331     2317
+   1        347     3327     2317     3325
+   1        529     2334     2320     2361
+   1        529     3340     2361     2320
+   1        344     1298     3310     3307
+   1        342     3302     1278     3300
+   1        339     3286     3285      966
+   1        344     3299     3283     3307
+   1        344     3299     3307     3310
+   1        342     3282     3301     3300
+   1        342     3302     3300     3301
+   1        344     1298     3307     3309
+   1        341     3298     3294     1000
+   1        339     3286      966     3284
+   1        344     3293     3307     3283
+   1        344     3293     3309     3307
+   1        341     3281     3294     3295
+   1        341     3298     3295     3294
+   1        526     1282     3326     4138
+   1        348     3324      970     3328
+   1        537     4148     3341     1448
+   1        526     3331     4140     4138
+   1        526     3331     4138     3326
+   1        348     3333     3332     3328
+   1        348     3324     3328     3332
+   1        369     1006     3433     3322
+   1        348     3318     3328      970
+   1        537     3439     1448     3341
+   1        369     3329     3433     3436
+   1        369     3329     3322     3433
+   1        348     3333     3328     3330
+   1        348     3318     3330     3328
+   1        232      836     2560     2595
+   1        460     2565     1160     3841
+   1        574     2644     3855     1678
+   1        232     2597     2601     2595
+   1        232     2597     2595     2560
+   1        460     3844     2641     3841
+   1        460     2565     3841     2641
+   1        449     1155     2076     3774
+   1        153     2065      757     2066
+   1        450     3781     2084     1169
+   1        449     2068     3769     3774
+   1        449     2068     3774     2076
+   1        153     2069     2071     2066
+   1        153     2065     2066     2071
+   1        577     1679     3892     2859
+   1        468     3888     1172     2818
+   1        263     2830     2815      867
+   1        577     3889     2834     2859
+   1        577     3889     2859     3892
+   1        468     2831     2856     2818
+   1        468     3888     2818     2856
+   1        452     1149     3788     3790
+   1        571     3798     1419     4320
+   1        574     3809     4325     1678
+   1        452     3793     3795     3790
+   1        452     3793     3790     3788
+   1        571     4319     3808     4320
+   1        571     3798     4320     3808
+   1        452     1149     3790     3771
+   1        460     3776     3841     1160
+   1        574     3809     1678     3855
+   1        452     3791     3790     3795
+   1        452     3791     3771     3790
+   1        460     3844     3841     3804
+   1        460     3776     3804     3841
+   1        453     1414     3799     3797
+   1        455     3810     1674     3807
+   1        450     3782     3783     1169
+   1        453     3796     3779     3797
+   1        453     3796     3797     3799
+   1        455     3780     3806     3807
+   1        455     3810     3807     3806
+   1        449     1155     3774     3778
+   1        455     3805     3807     1674
+   1        450     3781     1169     3783
+   1        449     3773     3774     3769
+   1        449     3773     3778     3774
+   1        455     3780     3807     3803
+   1        455     3805     3803     3807
+   1        197      801     2336     2321
+   1        545     2373     1470     3530
+   1        387     2324     3515     1035
+   1        197     2340     2337     2321
+   1        197     2340     2321     2336
+   1        545     3517     2327     3530
+   1        545     2373     3530     2327
+   1        548     1471     2839     3551
+   1        262     2823      866     2808
+   1        394     3543     2811     1050
+   1        548     2827     3544     3551
+   1        548     2827     3551     2839
+   1        262     2824     2825     2808
+   1        262     2823     2808     2825
+   1        381     1032     3488     2003
+   1        382     3492     1047     2010
+   1        137     1997     1998      741
+   1        381     3485     1999     2003
+   1        381     3485     2003     3488
+   1        382     2000     2004     2010
+   1        382     3492     2010     2004
+   1        543     1336     3501     3521
+   1        383     3495     1028     3486
+   1        387     3514     3489     1035
+   1        543     3498     3516     3521
+   1        543     3498     3521     3501
+   1        383     3496     3497     3486
+   1        383     3495     3486     3497
+   1        543     1336     3521     4203
+   1        545     4208     3530     1470
+   1        387     3514     1035     3515
+   1        543     4201     3521     3516
+   1        543     4201     4203     3521
+   1        545     3517     3530     3522
+   1        545     4208     3522     3530
+   1        384     1029     3487     3491
+   1        388     3490     1036     3507
+   1        394     3494     3511     1050
+   1        384     3499     3500     3491
+   1        384     3499     3491     3487
+   1        388     3519     3493     3507
+   1        388     3490     3507     3493
+   1        548     1471     3551     3531
+   1        388     3518     3507     1036
+   1        394     3543     1050     3511
+   1        548     3523     3551     3544
+   1        548     3523     3531     3551
+   1        388     3519     3507     3520
+   1        388     3518     3520     3507
+   1        187      791     2264     2266
+   1        521     2278     1315     4116
+   1        524     2290     4130     1387
+   1        187     2270     2272     2266
+   1        187     2270     2266     2264
+   1        521     4115     2289     4116
+   1        521     2278     4116     2289
+   1        510     1314     2195     4058
+   1        174     2185      778     2186
+   1        511     4062     2200     1324
+   1        510     2189     4055     4058
+   1        510     2189     4058     2195
+   1        174     2190     2191     2186
+   1        174     2185     2186     2191
+   1        528     1388     4145     2344
+   1        527     4142     1325     2338
+   1        196     2329     2328      800
+   1        528     4141     2333     2344
+   1        528     4141     2344     4145
+   1        527     2332     2343     2338
+   1        527     4142     2338     2343
+   1        508     1247     4044     4046
+   1        519     4052     1281     4106
+   1        524     4066     4128     1387
+   1        508     4047     4049     4046
+   1        508     4047     4046     4044
+   1        519     4104     4064     4106
+   1        519     4052     4106     4064
+   1        508     1247     4046     4045
+   1        521     4057     4116     1315
+   1        524     4066     1387     4130
+   1        508     4048     4046     4049
+   1        508     4048     4045     4046
+   1        521     4115     4116     4065
+   1        521     4057     4065     4116
+   1        509     1280     4054     4053
+   1        512     4068     1386     4071
+   1        511     4061     4063     1324
+   1        509     4051     4050     4053
+   1        509     4051     4053     4054
+   1        512     4060     4067     4071
+   1        512     4068     4071     4067
+   1        510     1314     4058     4059
+   1        512     4070     4071     1386
+   1        511     4062     1324     4063
+   1        510     4056     4058     4055
+   1        510     4056     4059     4058
+   1        512     4060     4071     4069
+   1        512     4070     4069     4071
+   1        187      791     2266     2267
+   1        525     2300     4136     1402
+   1        524     2290     1387     4131
+   1        187     2273     2266     2272
+   1        187     2273     2267     2266
+   1        525     4127     4136     2291
+   1        525     2300     2291     4136
+   1        536     1403     4179     2598
+   1        230     2573     2574      834
+   1        537     4181     1448     2607
+   1        536     2579     4179     4176
+   1        536     2579     2598     4179
+   1        230     2580     2574     2582
+   1        230     2573     2582     2574
+   1        528     1388     2344     4146
+   1        529     4149     2361     1447
+   1        196     2329      800     2330
+   1        528     4143     2344     2333
+   1        528     4143     4146     2344
+   1        529     2334     2361     2345
+   1        529     4149     2345     2361
+   1        520     1302     4113     4111
+   1        519     4105     4106     1281
+   1        524     4129     1387     4128
+   1        520     4103     4113     4109
+   1        520     4103     4111     4113
+   1        519     4104     4106     4107
+   1        519     4105     4107     4106
+   1        520     1302     4114     4113
+   1        525     4133     1402     4136
+   1        524     4129     4131     1387
+   1        520     4110     4109     4113
+   1        520     4110     4113     4114
+   1        525     4127     4132     4136
+   1        525     4133     4136     4132
+   1        526     1282     4138     4137
+   1        535     4144     4174     1389
+   1        537     4148     1448     4180
+   1        526     4139     4138     4140
+   1        526     4139     4137     4138
+   1        535     4172     4174     4147
+   1        535     4144     4147     4174
+   1        536     1403     4178     4179
+   1        535     4173     1389     4174
+   1        537     4181     4180     1448
+   1        536     4171     4176     4179
+   1        536     4171     4179     4178
+   1        535     4172     4175     4174
+   1        535     4173     4174     4175
+   1        175      779     2192     2193
+   1        539     2201     1326     4185
+   1        540     2206     4190     1335
+   1        175     2196     2197     2193
+   1        175     2196     2193     2192
+   1        539     4183     2205     4185
+   1        539     2201     4185     2205
+   1        544     1328     2339     4204
+   1        198     2335      802     2342
+   1        569     4209     2374     1472
+   1        544     2346     4206     4204
+   1        544     2346     4204     2339
+   1        198     2349     2347     2342
+   1        198     2335     2342     2347
+   1        547     1338     4215     2826
+   1        576     4219     1473     2840
+   1        263     2822     2829      867
+   1        547     4217     2832     2826
+   1        547     4217     2826     4215
+   1        576     2833     2828     2840
+   1        576     4219     2840     2828
+   1        541     1390     4196     4195
+   1        542     4199     1416     4198
+   1        540     4191     4192     1335
+   1        541     4193     4188     4195
+   1        541     4193     4195     4196
+   1        542     4189     4197     4198
+   1        542     4199     4198     4197
+   1        541     1390     4195     4194
+   1        539     4186     4185     1326
+   1        540     4191     1335     4190
+   1        541     4184     4195     4188
+   1        541     4184     4194     4195
+   1        539     4183     4185     4187
+   1        539     4186     4187     4185
+   1        567     1418     4216     4300
+   1        546     4210     1337     4211
+   1        569     4308     4218     1472
+   1        567     4212     4297     4300
+   1        567     4212     4300     4216
+   1        546     4213     4214     4211
+   1        546     4210     4211     4214
+   1        544     1328     4204     4200
+   1        546     4202     4211     1337
+   1        569     4209     1472     4218
+   1        544     4205     4204     4206
+   1        544     4205     4200     4204
+   1        546     4213     4211     4207
+   1        546     4202     4207     4211
+   1        232      836     2595     2594
+   1        573     2608     4324     1450
+   1        574     2644     1678     4326
+   1        232     2600     2595     2601
+   1        232     2600     2594     2595
+   1        573     4323     4324     2643
+   1        573     2608     2643     4324
+   1        568     1449     4305     2362
+   1        198     2341     2342      802
+   1        569     4309     1472     2374
+   1        568     2348     4305     4302
+   1        568     2348     2362     4305
+   1        198     2349     2342     2350
+   1        198     2341     2350     2342
+   1        577     1679     2859     4330
+   1        576     4329     2840     1473
+   1        263     2830      867     2829
+   1        577     4328     2859     2834
+   1        577     4328     4330     2859
+   1        576     2833     2840     2858
+   1        576     4329     2858     2840
+   1        566     1393     4293     4291
+   1        571     4299     4320     1419
+   1        574     4313     1678     4325
+   1        566     4294     4293     4296
+   1        566     4294     4291     4293
+   1        571     4319     4320     4311
+   1        571     4299     4311     4320
+   1        566     1393     4292     4293
+   1        573     4304     1450     4324
+   1        574     4313     4326     1678
+   1        566     4295     4296     4293
+   1        566     4295     4293     4292
+   1        573     4323     4312     4324
+   1        573     4304     4324     4312
+   1        567     1418     4300     4301
+   1        570     4315     4318     1677
+   1        569     4308     1472     4310
+   1        567     4298     4300     4297
+   1        567     4298     4301     4300
+   1        570     4307     4318     4314
+   1        570     4315     4314     4318
+   1        568     1449     4306     4305
+   1        570     4317     1677     4318
+   1        569     4309     4310     1472
+   1        568     4303     4302     4305
+   1        568     4303     4305     4306
+   1        570     4307     4316     4318
+   1        570     4317     4318     4316
+   1        737      133     1975     1974
+   1        740     1975      136     1983
+   1        739     1974     1983      135
+   1        737      740      739     1974
+   1        737      740     1974     1975
+   1        740      739     1974     1983
+   1        740     1975     1983     1974
+   1        736      132     1968     1969
+   1        739     1968      135     1983
+   1        740     1969     1983      136
+   1        736      739      740     1969
+   1        736      739     1969     1968
+   1        739      740     1969     1983
+   1        739     1968     1983     1969
+   1        735      131     1961     1962
+   1        737     1961      133     1974
+   1        739     1962     1974      135
+   1        735      737      739     1962
+   1        735      737     1962     1961
+   1        737      739     1962     1974
+   1        737     1961     1974     1962
+   1        736      132     1969     1967
+   1        740     1969      136     1980
+   1        738     1967     1980      134
+   1        736      740      738     1967
+   1        736      740     1967     1969
+   1        740      738     1967     1980
+   1        740     1969     1980     1967
+   1        730      126     1939     1940
+   1        732     1939      128     1947
+   1        733     1940     1947      129
+   1        730      732      733     1940
+   1        730      732     1940     1939
+   1        732      733     1940     1947
+   1        732     1939     1947     1940
+   1        730      126     1940     1938
+   1        733     1940      129     1944
+   1        731     1938     1944      127
+   1        730      733      731     1938
+   1        730      733     1938     1940
+   1        733      731     1938     1944
+   1        733     1940     1944     1938
+   1        818      214     2462     2461
+   1        825     2462      221     2505
+   1        824     2461     2505      220
+   1        818      825      824     2461
+   1        818      825     2461     2462
+   1        825      824     2461     2505
+   1        825     2462     2505     2461
+   1        855      251     2691     2761
+   1        847     2691      243     2693
+   1        857     2761     2693      253
+   1        855      847      857     2761
+   1        855      847     2761     2691
+   1        847      857     2761     2693
+   1        847     2691     2693     2761
+   1        844      240     2665     2563
+   1        845     2665      241     2564
+   1        833     2563     2564      229
+   1        844      845      833     2563
+   1        844      845     2563     2665
+   1        845      833     2563     2564
+   1        845     2665     2564     2563
+   1        821      217     2474     2484
+   1        820     2474      216     2476
+   1        824     2484     2476      220
+   1        821      820      824     2484
+   1        821      820     2484     2474
+   1        820      824     2484     2476
+   1        820     2474     2476     2484
+   1        821      217     2484     2485
+   1        825     2485     2505      221
+   1        824     2484      220     2505
+   1        821      825     2484      824
+   1        821      825     2485     2484
+   1        825      824     2505     2484
+   1        825     2485     2484     2505
+   1        851      247     2725     2726
+   1        854     2725      250     2752
+   1        857     2726     2752      253
+   1        851      854      857     2726
+   1        851      854     2726     2725
+   1        854      857     2726     2752
+   1        854     2725     2752     2726
+   1        855      251     2761     2751
+   1        854     2751     2752      250
+   1        857     2761      253     2752
+   1        855      854     2761      857
+   1        855      854     2751     2761
+   1        854      857     2752     2761
+   1        854     2751     2761     2752
+   1        808      204     2388     2389
+   1        815     2388      211     2437
+   1        816     2389     2437      212
+   1        808      815      816     2389
+   1        808      815     2389     2388
+   1        815      816     2389     2437
+   1        815     2388     2437     2389
+   1        842      238     2562     2649
+   1        833     2562      229     2564
+   1        845     2649     2564      241
+   1        842      833      845     2649
+   1        842      833     2649     2562
+   1        833      845     2649     2564
+   1        833     2562     2564     2649
+   1        853      249     2744     2690
+   1        857     2744      253     2693
+   1        847     2690     2693      243
+   1        853      857      847     2690
+   1        853      857     2690     2744
+   1        857      847     2690     2693
+   1        857     2744     2693     2690
+   1        812      208     2414     2416
+   1        813     2414      209     2424
+   1        816     2416     2424      212
+   1        812      813      816     2416
+   1        812      813     2416     2414
+   1        813      816     2416     2424
+   1        813     2414     2424     2416
+   1        812      208     2416     2415
+   1        815     2415     2437      211
+   1        816     2416      212     2437
+   1        812      815     2416      816
+   1        812      815     2415     2416
+   1        815      816     2437     2416
+   1        815     2415     2416     2437
+   1        840      236     2631     2633
+   1        843     2631      239     2656
+   1        845     2633     2656      241
+   1        840      843      845     2633
+   1        840      843     2633     2631
+   1        843      845     2633     2656
+   1        843     2631     2656     2633
+   1        842      238     2649     2648
+   1        843     2648     2656      239
+   1        845     2649      241     2656
+   1        842      843     2649      845
+   1        842      843     2648     2649
+   1        843      845     2656     2649
+   1        843     2648     2649     2656
+   1        799      195     2322     2323
+   1        805     2322      201     2366
+   1        806     2323     2366      202
+   1        799      805      806     2323
+   1        799      805     2323     2322
+   1        805      806     2323     2366
+   1        805     2322     2366     2323
+   1        822      218     2460     2491
+   1        818     2460      214     2461
+   1        824     2491     2461      220
+   1        822      818      824     2491
+   1        822      818     2491     2460
+   1        818      824     2491     2461
+   1        818     2460     2461     2491
+   1        841      237     2640     2561
+   1        844     2640      240     2563
+   1        833     2561     2563      229
+   1        841      844      833     2561
+   1        841      844     2561     2640
+   1        844      833     2561     2563
+   1        844     2640     2563     2561
+   1        803      199     2351     2353
+   1        804     2351      200     2358
+   1        806     2353     2358      202
+   1        803      804      806     2353
+   1        803      804     2353     2351
+   1        804      806     2353     2358
+   1        804     2351     2358     2353
+   1        803      199     2353     2352
+   1        805     2352     2366      201
+   1        806     2353      202     2366
+   1        803      805     2353      806
+   1        803      805     2352     2353
+   1        805      806     2366     2353
+   1        805     2352     2353     2366
+   1        820      216     2475     2476
+   1        823     2475      219     2496
+   1        824     2476     2496      220
+   1        820      823      824     2476
+   1        820      823     2476     2475
+   1        823      824     2476     2496
+   1        823     2475     2496     2476
+   1        822      218     2491     2490
+   1        823     2490     2496      219
+   1        824     2491      220     2496
+   1        822      823     2491      824
+   1        822      823     2490     2491
+   1        823      824     2496     2491
+   1        823     2490     2491     2496
+   1        808      204     2389     2387
+   1        816     2389      212     2432
+   1        814     2387     2432      210
+   1        808      816      814     2387
+   1        808      816     2387     2389
+   1        816      814     2387     2432
+   1        816     2389     2432     2387
+   1        853      249     2690     2743
+   1        847     2690      243     2692
+   1        856     2743     2692      252
+   1        853      847      856     2743
+   1        853      847     2743     2690
+   1        847      856     2743     2692
+   1        847     2690     2692     2743
+   1        830      226     2538     2521
+   1        831     2538      227     2522
+   1        827     2521     2522      223
+   1        830      831      827     2521
+   1        830      831     2521     2538
+   1        831      827     2521     2522
+   1        831     2538     2522     2521
+   1        813      209     2407     2423
+   1        811     2407      207     2408
+   1        814     2423     2408      210
+   1        813      811      814     2423
+   1        813      811     2423     2407
+   1        811      814     2423     2408
+   1        811     2407     2408     2423
+   1        813      209     2423     2424
+   1        816     2424     2432      212
+   1        814     2423      210     2432
+   1        813      816     2423      814
+   1        813      816     2424     2423
+   1        816      814     2432     2423
+   1        816     2424     2423     2432
+   1        850      246     2718     2719
+   1        852     2718      248     2734
+   1        856     2719     2734      252
+   1        850      852      856     2719
+   1        850      852     2719     2718
+   1        852      856     2719     2734
+   1        852     2718     2734     2719
+   1        853      249     2743     2733
+   1        852     2733     2734      248
+   1        856     2743      252     2734
+   1        853      852     2743      856
+   1        853      852     2733     2743
+   1        852      856     2734     2743
+   1        852     2733     2743     2734
+   1        769      165     2131     2132
+   1        774     2131      170     2164
+   1        775     2132     2164      171
+   1        769      774      775     2132
+   1        769      774     2132     2131
+   1        774      775     2132     2164
+   1        774     2131     2164     2132
+   1        786      182     2213     2232
+   1        783     2213      179     2214
+   1        788     2232     2214      184
+   1        786      783      788     2232
+   1        786      783     2232     2213
+   1        783      788     2232     2214
+   1        783     2213     2214     2232
+   1        795      191     2298     2257
+   1        797     2298      193     2259
+   1        790     2257     2259      186
+   1        795      797      790     2257
+   1        795      797     2257     2298
+   1        797      790     2257     2259
+   1        797     2298     2259     2257
+   1        771      167     2143     2145
+   1        772     2143      168     2151
+   1        775     2145     2151      171
+   1        771      772      775     2145
+   1        771      772     2145     2143
+   1        772      775     2145     2151
+   1        772     2143     2151     2145
+   1        771      167     2145     2144
+   1        774     2144     2164      170
+   1        775     2145      171     2164
+   1        771      774     2145      775
+   1        771      774     2144     2145
+   1        774      775     2164     2145
+   1        774     2144     2145     2164
+   1        785      181     2225     2226
+   1        787     2225      183     2237
+   1        788     2226     2237      184
+   1        785      787      788     2226
+   1        785      787     2226     2225
+   1        787      788     2226     2237
+   1        787     2225     2237     2226
+   1        786      182     2232     2231
+   1        787     2231     2237      183
+   1        788     2232      184     2237
+   1        786      787     2232      788
+   1        786      787     2231     2232
+   1        787      788     2237     2232
+   1        787     2231     2232     2237
+   1        769      165     2132     2130
+   1        775     2132      171     2159
+   1        773     2130     2159      169
+   1        769      775      773     2130
+   1        769      775     2130     2132
+   1        775      773     2130     2159
+   1        775     2132     2159     2130
+   1        795      191     2257     2297
+   1        790     2257      186     2258
+   1        796     2297     2258      192
+   1        795      790      796     2297
+   1        795      790     2297     2257
+   1        790      796     2297     2258
+   1        790     2257     2258     2297
+   1        780      176     2198     2181
+   1        781     2198      177     2182
+   1        777     2181     2182      173
+   1        780      781      777     2181
+   1        780      781     2181     2198
+   1        781      777     2181     2182
+   1        781     2198     2182     2181
+   1        772      168     2136     2150
+   1        770     2136      166     2137
+   1        773     2150     2137      169
+   1        772      770      773     2150
+   1        772      770     2150     2136
+   1        770      773     2150     2137
+   1        770     2136     2137     2150
+   1        772      168     2150     2151
+   1        775     2151     2159      171
+   1        773     2150      169     2159
+   1        772      775     2150      773
+   1        772      775     2151     2150
+   1        775      773     2159     2150
+   1        775     2151     2150     2159
+   1        792      188     2275     2276
+   1        794     2275      190     2288
+   1        796     2276     2288      192
+   1        792      794      796     2276
+   1        792      794     2276     2275
+   1        794      796     2276     2288
+   1        794     2275     2288     2276
+   1        795      191     2297     2287
+   1        794     2287     2288      190
+   1        796     2297      192     2288
+   1        795      794     2297      796
+   1        795      794     2287     2297
+   1        794      796     2288     2297
+   1        794     2287     2297     2288
+   1        984      213     2458     2457
+   1        991     2458      363     3403
+   1        990     2457     3403      362
+   1        984      991      990     2457
+   1        984      991     2457     2458
+   1        991      990     2457     3403
+   1        991     2458     3403     2457
+   1       1021      378     2685     3477
+   1       1013     2685      242     2687
+   1       1023     3477     2687      380
+   1       1021     1013     1023     3477
+   1       1021     1013     3477     2685
+   1       1013     1023     3477     2687
+   1       1013     2685     2687     3477
+   1       1010      373     3453     2556
+   1       1011     3453      374     2557
+   1        999     2556     2557      228
+   1       1010     1011      999     2556
+   1       1010     1011     2556     3453
+   1       1011      999     2556     2557
+   1       1011     3453     2557     2556
+   1        987      359     3381     3388
+   1        986     3381      358     3383
+   1        990     3388     3383      362
+   1        987      986      990     3388
+   1        987      986     3388     3381
+   1        986      990     3388     3383
+   1        986     3381     3383     3388
+   1        987      359     3388     3389
+   1        991     3389     3403      363
+   1        990     3388      362     3403
+   1        987      991     3388      990
+   1        987      991     3389     3388
+   1        991      990     3403     3388
+   1        991     3389     3388     3403
+   1       1017      367     3426     3427
+   1       1020     3426      377     3473
+   1       1023     3427     3473      380
+   1       1017     1020     1023     3427
+   1       1017     1020     3427     3426
+   1       1020     1023     3427     3473
+   1       1020     3426     3473     3427
+   1       1021      378     3477     3472
+   1       1020     3472     3473      377
+   1       1023     3477      380     3473
+   1       1021     1020     3477     1023
+   1       1021     1020     3472     3477
+   1       1020     1023     3473     3477
+   1       1020     3472     3477     3473
+   1        974      203     2384     2385
+   1        981     2384      356     3370
+   1        982     2385     3370      357
+   1        974      981      982     2385
+   1        974      981     2385     2384
+   1        981      982     2385     3370
+   1        981     2384     3370     2385
+   1       1008      371     2555     3442
+   1        999     2555      228     2557
+   1       1011     3442     2557      374
+   1       1008      999     1011     3442
+   1       1008      999     3442     2555
+   1        999     1011     3442     2557
+   1        999     2555     2557     3442
+   1       1019      376     3468     2684
+   1       1023     3468      380     2687
+   1       1013     2684     2687      242
+   1       1019     1023     1013     2684
+   1       1019     1023     2684     3468
+   1       1023     1013     2684     2687
+   1       1023     3468     2687     2684
+   1        977      352     3348     3351
+   1        978     3348      353     3357
+   1        982     3351     3357      357
+   1        977      978      982     3351
+   1        977      978     3351     3348
+   1        978      982     3351     3357
+   1        978     3348     3357     3351
+   1        977      352     3351     3350
+   1        981     3350     3370      356
+   1        982     3351      357     3370
+   1        977      981     3351      982
+   1        977      981     3350     3351
+   1        981      982     3370     3351
+   1        981     3350     3351     3370
+   1       1004      367     3422     3424
+   1       1009     3422      372     3447
+   1       1011     3424     3447      374
+   1       1004     1009     1011     3424
+   1       1004     1009     3424     3422
+   1       1009     1011     3424     3447
+   1       1009     3422     3447     3424
+   1       1008      371     3442     3441
+   1       1009     3441     3447      372
+   1       1011     3442      374     3447
+   1       1008     1009     3442     1011
+   1       1008     1009     3441     3442
+   1       1009     1011     3447     3442
+   1       1009     3441     3442     3447
+   1        965      194     2318     2319
+   1        971     2318      349     3334
+   1        972     2319     3334      350
+   1        965      971      972     2319
+   1        965      971     2319     2318
+   1        971      972     2319     3334
+   1        971     2318     3334     2319
+   1        988      360     2456     3394
+   1        984     2456      213     2457
+   1        990     3394     2457      362
+   1        988      984      990     3394
+   1        988      984     3394     2456
+   1        984      990     3394     2457
+   1        984     2456     2457     3394
+   1       1007      370     3438     2554
+   1       1010     3438      373     2556
+   1        999     2554     2556      228
+   1       1007     1010      999     2554
+   1       1007     1010     2554     3438
+   1       1010      999     2554     2556
+   1       1010     3438     2556     2554
+   1        967      345     3312     3314
+   1        968     3312      346     3319
+   1        972     3314     3319      350
+   1        967      968      972     3314
+   1        967      968     3314     3312
+   1        968      972     3314     3319
+   1        968     3312     3319     3314
+   1        967      345     3314     3313
+   1        971     3313     3334      349
+   1        972     3314      350     3334
+   1        967      971     3314      972
+   1        967      971     3313     3314
+   1        971      972     3334     3314
+   1        971     3313     3314     3334
+   1        986      358     3382     3383
+   1        989     3382      361     3397
+   1        990     3383     3397      362
+   1        986      989      990     3383
+   1        986      989     3383     3382
+   1        989      990     3383     3397
+   1        989     3382     3397     3383
+   1        988      360     3394     3393
+   1        989     3393     3397      361
+   1        990     3394      362     3397
+   1        988      989     3394      990
+   1        988      989     3393     3394
+   1        989      990     3397     3394
+   1        989     3393     3394     3397
+   1        974      203     2385     2383
+   1        982     2385      357     3366
+   1        980     2383     3366      355
+   1        974      982      980     2383
+   1        974      982     2383     2385
+   1        982      980     2383     3366
+   1        982     2385     3366     2383
+   1       1019      376     2684     3467
+   1       1013     2684      242     2686
+   1       1022     3467     2686      379
+   1       1019     1013     1022     3467
+   1       1019     1013     3467     2684
+   1       1013     1022     3467     2686
+   1       1013     2684     2686     3467
+   1        996      365     3416     2519
+   1        997     3416      366     2520
+   1        993     2519     2520      222
+   1        996      997      993     2519
+   1        996      997     2519     3416
+   1        997      993     2519     2520
+   1        997     3416     2520     2519
+   1        978      353     3343     3356
+   1        976     3343      351     3344
+   1        980     3356     3344      355
+   1        978      976      980     3356
+   1        978      976     3356     3343
+   1        976      980     3356     3344
+   1        976     3343     3344     3356
+   1        978      353     3356     3357
+   1        982     3357     3366      357
+   1        980     3356      355     3366
+   1        978      982     3356      980
+   1        978      982     3357     3356
+   1        982      980     3366     3356
+   1        982     3357     3356     3366
+   1       1016      364     3414     3415
+   1       1018     3414      375     3463
+   1       1022     3415     3463      379
+   1       1016     1018     1022     3415
+   1       1016     1018     3415     3414
+   1       1018     1022     3415     3463
+   1       1018     3414     3463     3415
+   1       1019      376     3467     3462
+   1       1018     3462     3463      375
+   1       1022     3467      379     3463
+   1       1019     1018     3467     1022
+   1       1019     1018     3462     3467
+   1       1018     1022     3463     3467
+   1       1018     3462     3467     3463
+   1        927      164     2128     2129
+   1        932     2128      326     3232
+   1        933     2129     3232      327
+   1        927      932      933     2129
+   1        927      932     2129     2128
+   1        932      933     2129     3232
+   1        932     2128     3232     2129
+   1        944      332     2210     3256
+   1        941     2210      178     2211
+   1        946     3256     2211      334
+   1        944      941      946     3256
+   1        944      941     3256     2210
+   1        941      946     3256     2211
+   1        941     2210     2211     3256
+   1        953      336     3274     2253
+   1        955     3274      338     2255
+   1        948     2253     2255      185
+   1        953      955      948     2253
+   1        953      955     2253     3274
+   1        955      948     2253     2255
+   1        955     3274     2255     2253
+   1        929      323     3215     3217
+   1        930     3215      324     3222
+   1        933     3217     3222      327
+   1        929      930      933     3217
+   1        929      930     3217     3215
+   1        930      933     3217     3222
+   1        930     3215     3222     3217
+   1        929      323     3217     3216
+   1        932     3216     3232      326
+   1        933     3217      327     3232
+   1        929      932     3217      933
+   1        929      932     3216     3217
+   1        932      933     3232     3217
+   1        932     3216     3217     3232
+   1        943      331     3251     3252
+   1        945     3251      333     3259
+   1        946     3252     3259      334
+   1        943      945      946     3252
+   1        943      945     3252     3251
+   1        945      946     3252     3259
+   1        945     3251     3259     3252
+   1        944      332     3256     3255
+   1        945     3255     3259      333
+   1        946     3256      334     3259
+   1        944      945     3256      946
+   1        944      945     3255     3256
+   1        945      946     3259     3256
+   1        945     3255     3256     3259
+   1        927      164     2129     2127
+   1        933     2129      327     3228
+   1        931     2127     3228      325
+   1        927      933      931     2127
+   1        927      933     2127     2129
+   1        933      931     2127     3228
+   1        933     2129     3228     2127
+   1        953      336     2253     3273
+   1        948     2253      185     2254
+   1        954     3273     2254      337
+   1        953      948      954     3273
+   1        953      948     3273     2253
+   1        948      954     3273     2254
+   1        948     2253     2254     3273
+   1        938      329     3245     2179
+   1        939     3245      330     2180
+   1        935     2179     2180      172
+   1        938      939      935     2179
+   1        938      939     2179     3245
+   1        939      935     2179     2180
+   1        939     3245     2180     2179
+   1        930      324     3210     3221
+   1        928     3210      322     3211
+   1        931     3221     3211      325
+   1        930      928      931     3221
+   1        930      928     3221     3210
+   1        928      931     3221     3211
+   1        928     3210     3211     3221
+   1        930      324     3221     3222
+   1        933     3222     3228      327
+   1        931     3221      325     3228
+   1        930      933     3221      931
+   1        930      933     3222     3221
+   1        933      931     3228     3221
+   1        933     3222     3221     3228
+   1        950      328     3243     3244
+   1        952     3243      335     3269
+   1        954     3244     3269      337
+   1        950      952      954     3244
+   1        950      952     3244     3243
+   1        952      954     3244     3269
+   1        952     3243     3269     3244
+   1        953      336     3273     3268
+   1        952     3268     3269      335
+   1        954     3273      337     3269
+   1        953      952     3273      954
+   1        953      952     3268     3273
+   1        952      954     3269     3273
+   1        952     3268     3273     3269
+   1       1095      146     2043     2042
+   1       1099     2043      424     3667
+   1       1098     2042     3667      423
+   1       1095     1099     1098     2042
+   1       1095     1099     2042     2043
+   1       1099     1098     2042     3667
+   1       1099     2043     3667     2042
+   1       1622      437     3105     3730
+   1       1619     3105      304     3108
+   1       1627     3730     3108      657
+   1       1622     1619     1627     3730
+   1       1622     1619     3730     3105
+   1       1619     1627     3730     3108
+   1       1619     3105     3108     3730
+   1       1607      433     3718     3050
+   1       1617     3718      654     3055
+   1       1605     3050     3055      295
+   1       1607     1617     1605     3050
+   1       1607     1617     3050     3718
+   1       1617     1605     3050     3055
+   1       1617     3718     3055     3050
+   1       1102      427     3685     3669
+   1       1101     3685      426     3668
+   1       1098     3669     3668      423
+   1       1102     1101     1098     3669
+   1       1102     1101     3669     3685
+   1       1101     1098     3669     3668
+   1       1101     3685     3668     3669
+   1       1102      427     3669     3676
+   1       1099     3676     3667      424
+   1       1098     3669      423     3667
+   1       1102     1099     3669     1098
+   1       1102     1099     3676     3669
+   1       1099     1098     3667     3669
+   1       1099     3676     3669     3667
+   1       1624      649     3722     4654
+   1       1621     3722      434     3724
+   1       1627     4654     3724      657
+   1       1624     1621     1627     4654
+   1       1624     1621     4654     3722
+   1       1621     1627     4654     3724
+   1       1621     3722     3724     4654
+   1       1622      437     3730     3720
+   1       1621     3720     3724      434
+   1       1627     3730      657     3724
+   1       1622     1621     3730     1627
+   1       1622     1621     3720     3730
+   1       1621     1627     3724     3730
+   1       1621     3720     3730     3724
+   1       1785      305     3112     3115
+   1       1787     3112      501     4032
+   1       1793     3115     4032      712
+   1       1785     1787     1793     3115
+   1       1785     1787     3115     3112
+   1       1787     1793     3115     4032
+   1       1787     3112     4032     3115
+   1       1204      485     2105     3949
+   1       1201     2105      159     2107
+   1       1206     3949     2107      487
+   1       1204     1201     1206     3949
+   1       1204     1201     3949     2105
+   1       1201     1206     3949     2107
+   1       1201     2105     2107     3949
+   1       1817      717     4041     3189
+   1       1808     4041      505     3183
+   1       1805     3189     3183      317
+   1       1817     1808     1805     3189
+   1       1817     1808     3189     4041
+   1       1808     1805     3189     3183
+   1       1808     4041     3183     3189
+   1       1786      489     3978     3979
+   1       1791     3978      710     4890
+   1       1793     3979     4890      712
+   1       1786     1791     1793     3979
+   1       1786     1791     3979     3978
+   1       1791     1793     3979     4890
+   1       1791     3978     4890     3979
+   1       1786      489     3979     3977
+   1       1787     3977     4032      501
+   1       1793     3979      712     4032
+   1       1786     1787     3979     1793
+   1       1786     1787     3977     3979
+   1       1787     1793     4032     3979
+   1       1787     3977     3979     4032
+   1       1210      491     3984     3960
+   1       1212     3984      493     3961
+   1       1206     3960     3961      487
+   1       1210     1212     1206     3960
+   1       1210     1212     3960     3984
+   1       1212     1206     3960     3961
+   1       1212     3984     3961     3960
+   1       1204      485     3949     3951
+   1       1212     3951     3961      493
+   1       1206     3949      487     3961
+   1       1204     1212     3949     1206
+   1       1204     1212     3951     3949
+   1       1212     1206     3961     3949
+   1       1212     3951     3949     3961
+   1       1715      296     3065     3059
+   1       1727     3065      689     3922
+   1       1718     3059     3922      477
+   1       1715     1727     1718     3059
+   1       1715     1727     3059     3065
+   1       1727     1718     3059     3922
+   1       1727     3065     3922     3059
+   1       1741      694     3178     3936
+   1       1729     3178      316     3173
+   1       1732     3936     3173      481
+   1       1741     1729     1732     3936
+   1       1741     1729     3936     3178
+   1       1729     1732     3936     3173
+   1       1729     3178     3173     3936
+   1       1158      458     3825     2080
+   1       1159     3825      459     2081
+   1       1153     2080     2081      154
+   1       1158     1159     1153     2080
+   1       1158     1159     2080     3825
+   1       1159     1153     2080     2081
+   1       1159     3825     2081     2080
+   1       1724      686     3869     3920
+   1       1716     3869      464     3866
+   1       1718     3920     3866      477
+   1       1724     1716     1718     3920
+   1       1724     1716     3920     3869
+   1       1716     1718     3920     3866
+   1       1716     3869     3866     3920
+   1       1724      686     3920     4800
+   1       1727     4800     3922      689
+   1       1718     3920      477     3922
+   1       1724     1727     3920     1718
+   1       1724     1727     4800     3920
+   1       1727     1718     3922     3920
+   1       1727     4800     3920     3922
+   1       1730      465     3871     3872
+   1       1731     3871      478     3924
+   1       1732     3872     3924      481
+   1       1730     1731     1732     3872
+   1       1730     1731     3872     3871
+   1       1731     1732     3872     3924
+   1       1731     3871     3924     3872
+   1       1741      694     3936     3928
+   1       1731     3928     3924      478
+   1       1732     3936      481     3924
+   1       1741     1731     3936     1732
+   1       1741     1731     3928     3936
+   1       1731     1732     3924     3936
+   1       1731     3928     3936     3924
+   1       1571      245     2715     2716
+   1       1577     2715      636     4593
+   1       1578     2716     4593      637
+   1       1571     1577     1578     2716
+   1       1571     1577     2716     2715
+   1       1577     1578     2716     4593
+   1       1577     2715     4593     2716
+   1       1566      630     2627     4560
+   1       1557     2627      235     2629
+   1       1568     4560     2629      632
+   1       1566     1557     1568     4560
+   1       1566     1557     4560     2627
+   1       1557     1568     4560     2629
+   1       1557     2627     2629     4560
+   1       1614      651     4655     3052
+   1       1613     4655      650     3051
+   1       1605     3052     3051      295
+   1       1614     1613     1605     3052
+   1       1614     1613     3052     4655
+   1       1613     1605     3052     3051
+   1       1613     4655     3051     3052
+   1       1574      627     4544     4546
+   1       1575     4544      634     4584
+   1       1578     4546     4584      637
+   1       1574     1575     1578     4546
+   1       1574     1575     4546     4544
+   1       1575     1578     4546     4584
+   1       1575     4544     4584     4546
+   1       1574      627     4546     4545
+   1       1577     4545     4593      636
+   1       1578     4546      637     4593
+   1       1574     1577     4546     1578
+   1       1574     1577     4545     4546
+   1       1577     1578     4593     4546
+   1       1577     4545     4546     4593
+   1       1565      629     4554     4553
+   1       1569     4554      633     4569
+   1       1568     4553     4569      632
+   1       1565     1569     1568     4553
+   1       1565     1569     4553     4554
+   1       1569     1568     4553     4569
+   1       1569     4554     4569     4553
+   1       1566      630     4560     4561
+   1       1569     4561     4569      633
+   1       1568     4560      632     4569
+   1       1566     1569     4560     1568
+   1       1566     1569     4561     4560
+   1       1569     1568     4569     4560
+   1       1569     4561     4560     4569
+   1       1571      245     2716     2717
+   1       1579     2717     4595      638
+   1       1578     2716      637     4595
+   1       1571     1579     2716     1578
+   1       1571     1579     2717     2716
+   1       1579     1578     4595     2716
+   1       1579     2717     2716     4595
+   1       1626      656     4675     3107
+   1       1619     3107     3108      304
+   1       1627     4675      657     3108
+   1       1626     1619     4675     1627
+   1       1626     1619     3107     4675
+   1       1619     1627     3108     4675
+   1       1619     3107     4675     3108
+   1       1614      651     3052     4659
+   1       1617     4659     3055      654
+   1       1605     3052      295     3055
+   1       1614     1617     3052     1605
+   1       1614     1617     4659     3052
+   1       1617     1605     3055     3052
+   1       1617     4659     3052     3055
+   1       1576      635     4588     4583
+   1       1575     4583     4584      634
+   1       1578     4588      637     4584
+   1       1576     1575     4588     1578
+   1       1576     1575     4583     4588
+   1       1575     1578     4584     4588
+   1       1575     4583     4588     4584
+   1       1576      635     4589     4588
+   1       1579     4589      638     4595
+   1       1578     4588     4595      637
+   1       1576     1579     1578     4588
+   1       1576     1579     4588     4589
+   1       1579     1578     4588     4595
+   1       1579     4589     4595     4588
+   1       1624      649     4654     4653
+   1       1625     4653     4671      655
+   1       1627     4654      657     4671
+   1       1624     1625     4654     1627
+   1       1624     1625     4653     4654
+   1       1625     1627     4671     4654
+   1       1625     4653     4654     4671
+   1       1626      656     4670     4675
+   1       1625     4670      655     4671
+   1       1627     4675     4671      657
+   1       1626     1625     1627     4675
+   1       1626     1625     4675     4670
+   1       1625     1627     4675     4671
+   1       1625     4670     4671     4675
+   1       1658      236     2638     2639
+   1       1667     2638      669     4723
+   1       1668     2639     4723      670
+   1       1658     1667     1668     2639
+   1       1658     1667     2639     2638
+   1       1667     1668     2639     4723
+   1       1667     2638     4723     2639
+   1       1777      687     3071     4805
+   1       1771     3071      297     3074
+   1       1782     4805     3074      708
+   1       1777     1771     1782     4805
+   1       1777     1771     4805     3071
+   1       1771     1782     4805     3074
+   1       1771     3071     3074     4805
+   1       1811      691     4818     3185
+   1       1816     4818      716     3188
+   1       1805     3185     3188      317
+   1       1811     1816     1805     3185
+   1       1811     1816     3185     4818
+   1       1816     1805     3185     3188
+   1       1816     4818     3188     3185
+   1       1670      672     4739     4728
+   1       1671     4739      673     4729
+   1       1668     4728     4729      670
+   1       1670     1671     1668     4728
+   1       1670     1671     4728     4739
+   1       1671     1668     4728     4729
+   1       1671     4739     4729     4728
+   1       1670      672     4728     4724
+   1       1667     4724     4723      669
+   1       1668     4728      670     4723
+   1       1670     1667     4728     1668
+   1       1670     1667     4724     4728
+   1       1667     1668     4723     4728
+   1       1667     4724     4728     4723
+   1       1780      706     4811     4868
+   1       1778     4811      690     4812
+   1       1782     4868     4812      708
+   1       1780     1778     1782     4868
+   1       1780     1778     4868     4811
+   1       1778     1782     4868     4812
+   1       1778     4811     4812     4868
+   1       1777      687     4805     4804
+   1       1778     4804     4812      690
+   1       1782     4805      708     4812
+   1       1777     1778     4805     1782
+   1       1777     1778     4804     4805
+   1       1778     1782     4812     4805
+   1       1778     4804     4805     4812
+   1       1785      305     3115     3114
+   1       1792     3114     4892      711
+   1       1793     3115      712     4892
+   1       1785     1792     3115     1793
+   1       1785     1792     3114     3115
+   1       1792     1793     4892     3115
+   1       1792     3114     3115     4892
+   1       1781      707     4873     3073
+   1       1771     3073     3074      297
+   1       1782     4873      708     3074
+   1       1781     1771     4873     1782
+   1       1781     1771     3073     4873
+   1       1771     1782     3074     4873
+   1       1771     3073     4873     3074
+   1       1817      717     3189     4899
+   1       1816     4899     3188      716
+   1       1805     3189      317     3188
+   1       1817     1816     3189     1805
+   1       1817     1816     4899     3189
+   1       1816     1805     3188     3189
+   1       1816     4899     3189     3188
+   1       1790      705     4867     4865
+   1       1791     4865     4890      710
+   1       1793     4867      712     4890
+   1       1790     1791     4867     1793
+   1       1790     1791     4865     4867
+   1       1791     1793     4890     4867
+   1       1791     4865     4867     4890
+   1       1790      705     4866     4867
+   1       1792     4866      711     4892
+   1       1793     4867     4892      712
+   1       1790     1792     1793     4867
+   1       1790     1792     4867     4866
+   1       1792     1793     4867     4892
+   1       1792     4866     4892     4867
+   1       1780      706     4868     4869
+   1       1783     4869     4878      709
+   1       1782     4868      708     4878
+   1       1780     1783     4868     1782
+   1       1780     1783     4869     4868
+   1       1783     1782     4878     4868
+   1       1783     4869     4868     4878
+   1       1781      707     4874     4873
+   1       1783     4874      709     4878
+   1       1782     4873     4878      708
+   1       1781     1783     1782     4873
+   1       1781     1783     4873     4874
+   1       1783     1782     4873     4878
+   1       1783     4874     4878     4873
+   1       1061      142     2024     2025
+   1       1065     2024      404     3590
+   1       1066     2025     3590      405
+   1       1061     1065     1066     2025
+   1       1061     1065     2025     2024
+   1       1065     1066     2025     3590
+   1       1065     2024     3590     2025
+   1       1532      416     2942     3644
+   1       1529     2942      280     2947
+   1       1541     3644     2947      621
+   1       1532     1529     1541     3644
+   1       1532     1529     3644     2942
+   1       1529     1541     3644     2947
+   1       1529     2942     2947     3644
+   1       1546      419     3657     2985
+   1       1555     3657      626     2990
+   1       1543     2985     2990      286
+   1       1546     1555     1543     2985
+   1       1546     1555     2985     3657
+   1       1555     1543     2985     2990
+   1       1555     3657     2990     2985
+   1       1069      408     3608     3595
+   1       1070     3608      409     3596
+   1       1066     3595     3596      405
+   1       1069     1070     1066     3595
+   1       1069     1070     3595     3608
+   1       1070     1066     3595     3596
+   1       1070     3608     3596     3595
+   1       1069      408     3595     3591
+   1       1065     3591     3590      404
+   1       1066     3595      405     3590
+   1       1069     1065     3595     1066
+   1       1069     1065     3591     3595
+   1       1065     1066     3590     3595
+   1       1065     3591     3595     3590
+   1       1538      618     3650     4509
+   1       1533     3650      418     3651
+   1       1541     4509     3651      621
+   1       1538     1533     1541     4509
+   1       1538     1533     4509     3650
+   1       1533     1541     4509     3651
+   1       1533     3650     3651     4509
+   1       1532      416     3644     3642
+   1       1533     3642     3651      418
+   1       1541     3644      621     3651
+   1       1532     1533     3644     1541
+   1       1532     1533     3642     3644
+   1       1533     1541     3651     3644
+   1       1533     3642     3644     3651
+   1       1687      281     2951     2956
+   1       1689     2951      474     3910
+   1       1699     2956     3910      679
+   1       1687     1689     1699     2956
+   1       1687     1689     2956     2951
+   1       1689     1699     2956     3910
+   1       1689     2951     3910     2956
+   1       1157      457     2079     3817
+   1       1153     2079      154     2081
+   1       1159     3817     2081      459
+   1       1157     1153     1159     3817
+   1       1157     1153     3817     2079
+   1       1153     1159     3817     2081
+   1       1153     2079     2081     3817
+   1       1739      692     3935     3176
+   1       1732     3935      481     3173
+   1       1729     3176     3173      316
+   1       1739     1732     1729     3176
+   1       1739     1732     3176     3935
+   1       1732     1729     3176     3173
+   1       1732     3935     3173     3176
+   1       1688      463     3862     3863
+   1       1697     3862      677     4757
+   1       1699     3863     4757      679
+   1       1688     1697     1699     3863
+   1       1688     1697     3863     3862
+   1       1697     1699     3863     4757
+   1       1697     3862     4757     3863
+   1       1688      463     3863     3859
+   1       1689     3859     3910      474
+   1       1699     3863      679     3910
+   1       1688     1689     3863     1699
+   1       1688     1689     3859     3863
+   1       1689     1699     3910     3863
+   1       1689     3859     3863     3910
+   1       1165      465     3870     3833
+   1       1166     3870      466     3834
+   1       1159     3833     3834      459
+   1       1165     1166     1159     3833
+   1       1165     1166     3833     3870
+   1       1166     1159     3833     3834
+   1       1166     3870     3834     3833
+   1       1157      457     3817     3820
+   1       1166     3820     3834      466
+   1       1159     3817      459     3834
+   1       1157     1166     3817     1159
+   1       1157     1166     3820     3817
+   1       1166     1159     3834     3817
+   1       1166     3820     3817     3834
+   1       1757      288     3011     3006
+   1       1769     3011      704     4017
+   1       1759     3006     4017      496
+   1       1757     1769     1759     3006
+   1       1757     1769     3006     3011
+   1       1769     1759     3006     4017
+   1       1769     3011     4017     3006
+   1       1815      715     3187     4040
+   1       1805     3187      317     3183
+   1       1808     4040     3183      505
+   1       1815     1805     1808     4040
+   1       1815     1805     4040     3187
+   1       1805     1808     4040     3183
+   1       1805     3187     3183     4040
+   1       1203      484     3940     2104
+   1       1206     3940      487     2107
+   1       1201     2104     2107      159
+   1       1203     1206     1201     2104
+   1       1203     1206     2104     3940
+   1       1206     1201     2104     2107
+   1       1206     3940     2107     2104
+   1       1766      701     3973     4015
+   1       1758     3973      488     3970
+   1       1759     4015     3970      496
+   1       1766     1758     1759     4015
+   1       1766     1758     4015     3973
+   1       1758     1759     4015     3970
+   1       1758     3973     3970     4015
+   1       1766      701     4015     4855
+   1       1769     4855     4017      704
+   1       1759     4015      496     4017
+   1       1766     1769     4015     1759
+   1       1766     1769     4855     4015
+   1       1769     1759     4017     4015
+   1       1769     4855     4015     4017
+   1       1806      491     3985     3986
+   1       1807     3985      497     4019
+   1       1808     3986     4019      505
+   1       1806     1807     1808     3986
+   1       1806     1807     3986     3985
+   1       1807     1808     3986     4019
+   1       1807     3985     4019     3986
+   1       1815      715     4040     4023
+   1       1807     4023     4019      497
+   1       1808     4040      505     4019
+   1       1815     1807     4040     1808
+   1       1815     1807     4023     4040
+   1       1807     1808     4019     4040
+   1       1807     4023     4040     4019
+   1       1491      234     2618     2620
+   1       1501     2618      604     4448
+   1       1503     2620     4448      606
+   1       1491     1501     1503     2620
+   1       1491     1501     2620     2618
+   1       1501     1503     2620     4448
+   1       1501     2618     4448     2620
+   1       1514      610     2707     4476
+   1       1505     2707      244     2709
+   1       1517     4476     2709      613
+   1       1514     1505     1517     4476
+   1       1514     1505     4476     2707
+   1       1505     1517     4476     2709
+   1       1505     2707     2709     4476
+   1       1551      622     4525     2987
+   1       1553     4525      624     2988
+   1       1543     2987     2988      286
+   1       1551     1553     1543     2987
+   1       1551     1553     2987     4525
+   1       1553     1543     2987     2988
+   1       1553     4525     2988     2987
+   1       1498      601     4430     4432
+   1       1500     4430      603     4442
+   1       1503     4432     4442      606
+   1       1498     1500     1503     4432
+   1       1498     1500     4432     4430
+   1       1500     1503     4432     4442
+   1       1500     4430     4442     4432
+   1       1498      601     4432     4431
+   1       1501     4431     4448      604
+   1       1503     4432      606     4448
+   1       1498     1501     4432     1503
+   1       1498     1501     4431     4432
+   1       1501     1503     4448     4432
+   1       1501     4431     4432     4448
+   1       1512      608     4466     4468
+   1       1515     4466      611     4479
+   1       1517     4468     4479      613
+   1       1512     1515     1517     4468
+   1       1512     1515     4468     4466
+   1       1515     1517     4468     4479
+   1       1515     4466     4479     4468
+   1       1514      610     4476     4475
+   1       1515     4475     4479      611
+   1       1517     4476      613     4479
+   1       1514     1515     4476     1517
+   1       1514     1515     4475     4476
+   1       1515     1517     4479     4476
+   1       1515     4475     4476     4479
+   1       1491      234     2620     2619
+   1       1502     2619     4452      605
+   1       1503     2620      606     4452
+   1       1491     1502     2620     1503
+   1       1491     1502     2619     2620
+   1       1502     1503     4452     2620
+   1       1502     2619     2620     4452
+   1       1539      619     4513     2946
+   1       1529     2946     2947      280
+   1       1541     4513      621     2947
+   1       1539     1529     4513     1541
+   1       1539     1529     2946     4513
+   1       1529     1541     2947     4513
+   1       1529     2946     4513     2947
+   1       1551      622     2987     4526
+   1       1555     4526     2990      626
+   1       1543     2987      286     2990
+   1       1551     1555     2987     1543
+   1       1551     1555     4526     2987
+   1       1555     1543     2990     2987
+   1       1555     4526     2987     2990
+   1       1499      602     4438     4436
+   1       1500     4436     4442      603
+   1       1503     4438      606     4442
+   1       1499     1500     4438     1503
+   1       1499     1500     4436     4438
+   1       1500     1503     4442     4438
+   1       1500     4436     4438     4442
+   1       1499      602     4437     4438
+   1       1502     4437      605     4452
+   1       1503     4438     4452      606
+   1       1499     1502     1503     4438
+   1       1499     1502     4438     4437
+   1       1502     1503     4438     4452
+   1       1502     4437     4452     4438
+   1       1538      618     4509     4508
+   1       1540     4508     4516      620
+   1       1541     4509      621     4516
+   1       1538     1540     4509     1541
+   1       1538     1540     4508     4509
+   1       1540     1541     4516     4509
+   1       1540     4508     4509     4516
+   1       1539      619     4512     4513
+   1       1540     4512      620     4516
+   1       1541     4513     4516      621
+   1       1539     1540     1541     4513
+   1       1539     1540     4513     4512
+   1       1540     1541     4513     4516
+   1       1540     4512     4516     4513
+   1       1659      247     2730     2732
+   1       1669     2730      671     4735
+   1       1671     2732     4735      673
+   1       1659     1669     1671     2732
+   1       1659     1669     2732     2730
+   1       1669     1671     2732     4735
+   1       1669     2730     4735     2732
+   1       1709      681     2998     4775
+   1       1701     2998      287     3000
+   1       1713     4775     3000      685
+   1       1709     1701     1713     4775
+   1       1709     1701     4775     2998
+   1       1701     1713     4775     3000
+   1       1701     2998     3000     4775
+   1       1738      691     4814     3175
+   1       1740     4814      693     3177
+   1       1729     3175     3177      316
+   1       1738     1740     1729     3175
+   1       1738     1740     3175     4814
+   1       1740     1729     3175     3177
+   1       1740     4814     3177     3175
+   1       1666      668     4717     4719
+   1       1668     4717      670     4729
+   1       1671     4719     4729      673
+   1       1666     1668     1671     4719
+   1       1666     1668     4719     4717
+   1       1668     1671     4719     4729
+   1       1668     4717     4729     4719
+   1       1666      668     4719     4718
+   1       1669     4718     4735      671
+   1       1671     4719      673     4735
+   1       1666     1669     4719     1671
+   1       1666     1669     4718     4719
+   1       1669     1671     4735     4719
+   1       1669     4718     4719     4735
+   1       1708      680     4768     4770
+   1       1710     4768      682     4778
+   1       1713     4770     4778      685
+   1       1708     1710     1713     4770
+   1       1708     1710     4770     4768
+   1       1710     1713     4770     4778
+   1       1710     4768     4778     4770
+   1       1709      681     4775     4774
+   1       1710     4774     4778      682
+   1       1713     4775      685     4778
+   1       1709     1710     4775     1713
+   1       1709     1710     4774     4775
+   1       1710     1713     4778     4775
+   1       1710     4774     4775     4778
+   1       1687      281     2956     2955
+   1       1698     2955     4761      678
+   1       1699     2956      679     4761
+   1       1687     1698     2956     1699
+   1       1687     1698     2955     2956
+   1       1698     1699     4761     2956
+   1       1698     2955     2956     4761
+   1       1711      683     4785     2999
+   1       1701     2999     3000      287
+   1       1713     4785      685     3000
+   1       1711     1701     4785     1713
+   1       1711     1701     2999     4785
+   1       1701     1713     3000     4785
+   1       1701     2999     4785     3000
+   1       1739      692     3176     4819
+   1       1740     4819     3177      693
+   1       1729     3176      316     3177
+   1       1739     1740     3176     1729
+   1       1739     1740     4819     3176
+   1       1740     1729     3177     3176
+   1       1740     4819     3176     3177
+   1       1696      676     4753     4751
+   1       1697     4751     4757      677
+   1       1699     4753      679     4757
+   1       1696     1697     4753     1699
+   1       1696     1697     4751     4753
+   1       1697     1699     4757     4753
+   1       1697     4751     4753     4757
+   1       1696      676     4752     4753
+   1       1698     4752      678     4761
+   1       1699     4753     4761      679
+   1       1696     1698     1699     4753
+   1       1696     1698     4753     4752
+   1       1698     1699     4753     4761
+   1       1698     4752     4761     4753
+   1       1708      680     4770     4769
+   1       1712     4769     4788      684
+   1       1713     4770      685     4788
+   1       1708     1712     4770     1713
+   1       1708     1712     4769     4770
+   1       1712     1713     4788     4770
+   1       1712     4769     4770     4788
+   1       1711      683     4784     4785
+   1       1712     4784      684     4788
+   1       1713     4785     4788      685
+   1       1711     1712     1713     4785
+   1       1711     1712     4785     4784
+   1       1712     1713     4785     4788
+   1       1712     4784     4788     4785
+   1       1030      138     2005     2006
+   1       1033     2005      385     3502
+   1       1034     2006     3502      386
+   1       1030     1033     1034     2006
+   1       1030     1033     2006     2005
+   1       1033     1034     2006     3502
+   1       1033     2005     3502     2006
+   1       1459      392     2787     3539
+   1       1457     2787      256     2790
+   1       1465     3539     2790      592
+   1       1459     1457     1465     3539
+   1       1459     1457     3539     2787
+   1       1457     1465     3539     2790
+   1       1457     2787     2790     3539
+   1       1469      396     3553     2838
+   1       1479     3553      595     2843
+   1       1467     2838     2843      264
+   1       1469     1479     1467     2838
+   1       1469     1479     2838     3553
+   1       1479     1467     2838     2843
+   1       1479     3553     2843     2838
+   1       1037      389     3524     3508
+   1       1038     3524      390     3509
+   1       1034     3508     3509      386
+   1       1037     1038     1034     3508
+   1       1037     1038     3508     3524
+   1       1038     1034     3508     3509
+   1       1038     3524     3509     3508
+   1       1037      389     3508     3503
+   1       1033     3503     3502      385
+   1       1034     3508      386     3502
+   1       1037     1033     3508     1034
+   1       1037     1033     3503     3508
+   1       1033     1034     3502     3508
+   1       1033     3503     3508     3502
+   1       1462      589     3547     4380
+   1       1460     3547      395     3548
+   1       1465     4380     3548      592
+   1       1462     1460     1465     4380
+   1       1462     1460     4380     3547
+   1       1460     1465     4380     3548
+   1       1460     3547     3548     4380
+   1       1459      392     3539     3538
+   1       1460     3538     3548      395
+   1       1465     3539      592     3548
+   1       1459     1460     3539     1465
+   1       1459     1460     3538     3539
+   1       1460     1465     3548     3539
+   1       1460     3538     3539     3548
+   1       1581      257     2794     2797
+   1       1583     2794      430     3706
+   1       1589     2797     3706      642
+   1       1581     1583     1589     2797
+   1       1581     1583     2797     2794
+   1       1583     1589     2797     3706
+   1       1583     2794     3706     2797
+   1       1097      422     2041     3661
+   1       1095     2041      146     2042
+   1       1098     3661     2042      423
+   1       1097     1095     1098     3661
+   1       1097     1095     3661     2041
+   1       1095     1098     3661     2042
+   1       1095     2041     2042     3661
+   1       1615      652     3717     3053
+   1       1607     3717      433     3050
+   1       1605     3053     3050      295
+   1       1615     1607     1605     3053
+   1       1615     1607     3053     3717
+   1       1607     1605     3053     3050
+   1       1607     3717     3050     3053
+   1       1582      425     3683     3684
+   1       1587     3683      640     4609
+   1       1589     3684     4609      642
+   1       1582     1587     1589     3684
+   1       1582     1587     3684     3683
+   1       1587     1589     3684     4609
+   1       1587     3683     4609     3684
+   1       1582      425     3684     3682
+   1       1583     3682     3706      430
+   1       1589     3684      642     3706
+   1       1582     1583     3684     1589
+   1       1582     1583     3682     3684
+   1       1583     1589     3706     3684
+   1       1583     3682     3684     3706
+   1       1101      426     3686     3668
+   1       1103     3686      428     3670
+   1       1098     3668     3670      423
+   1       1101     1103     1098     3668
+   1       1101     1103     3668     3686
+   1       1103     1098     3668     3670
+   1       1103     3686     3670     3668
+   1       1097      422     3661     3663
+   1       1103     3663     3670      428
+   1       1098     3661      423     3670
+   1       1097     1103     3661     1098
+   1       1097     1103     3663     3661
+   1       1103     1098     3670     3661
+   1       1103     3663     3661     3670
+   1       1673      266     2862     2857
+   1       1685     2862      675     3894
+   1       1676     2857     3894      469
+   1       1673     1685     1676     2857
+   1       1673     1685     2857     2862
+   1       1685     1676     2857     3894
+   1       1685     2862     3894     2857
+   1       1726      688     3064     3921
+   1       1715     3064      296     3059
+   1       1718     3921     3059      477
+   1       1726     1715     1718     3921
+   1       1726     1715     3921     3064
+   1       1715     1718     3921     3059
+   1       1715     3064     3059     3921
+   1       1156      456     3811     2078
+   1       1158     3811      458     2080
+   1       1153     2078     2080      154
+   1       1156     1158     1153     2078
+   1       1156     1158     2078     3811
+   1       1158     1153     2078     2080
+   1       1158     3811     2080     2078
+   1       1684      674     3856     3893
+   1       1675     3856      462     3853
+   1       1676     3893     3853      469
+   1       1684     1675     1676     3893
+   1       1684     1675     3893     3856
+   1       1675     1676     3893     3853
+   1       1675     3856     3853     3893
+   1       1684      674     3893     4748
+   1       1685     4748     3894      675
+   1       1676     3893      469     3894
+   1       1684     1685     3893     1676
+   1       1684     1685     4748     3893
+   1       1685     1676     3894     3893
+   1       1685     4748     3893     3894
+   1       1716      464     3865     3866
+   1       1717     3865      470     3896
+   1       1718     3866     3896      477
+   1       1716     1717     1718     3866
+   1       1716     1717     3866     3865
+   1       1717     1718     3866     3896
+   1       1717     3865     3896     3866
+   1       1726      688     3921     3900
+   1       1717     3900     3896      470
+   1       1718     3921      477     3896
+   1       1726     1717     3921     1718
+   1       1726     1717     3900     3921
+   1       1717     1718     3896     3921
+   1       1717     3900     3921     3896
+   1       1433      215     2471     2473
+   1       1439     2471      582     4349
+   1       1441     2473     4349      584
+   1       1433     1439     1441     2473
+   1       1433     1439     2473     2471
+   1       1439     1441     2473     4349
+   1       1439     2471     4349     2473
+   1       1453      586     2609     4367
+   1       1443     2609      233     2610
+   1       1455     4367     2610      588
+   1       1453     1443     1455     4367
+   1       1453     1443     4367     2609
+   1       1443     1455     4367     2610
+   1       1443     2609     2610     4367
+   1       1477      593     4396     2841
+   1       1478     4396      594     2842
+   1       1467     2841     2842      264
+   1       1477     1478     1467     2841
+   1       1477     1478     2841     4396
+   1       1478     1467     2841     2842
+   1       1478     4396     2842     2841
+   1       1436      579     4331     4333
+   1       1438     4331      581     4343
+   1       1441     4333     4343      584
+   1       1436     1438     1441     4333
+   1       1436     1438     4333     4331
+   1       1438     1441     4333     4343
+   1       1438     4331     4343     4333
+   1       1436      579     4333     4332
+   1       1439     4332     4349      582
+   1       1441     4333      584     4349
+   1       1436     1439     4333     1441
+   1       1436     1439     4332     4333
+   1       1439     1441     4349     4333
+   1       1439     4332     4333     4349
+   1       1452      585     4362     4363
+   1       1454     4362      587     4370
+   1       1455     4363     4370      588
+   1       1452     1454     1455     4363
+   1       1452     1454     4363     4362
+   1       1454     1455     4363     4370
+   1       1454     4362     4370     4363
+   1       1453      586     4367     4366
+   1       1454     4366     4370      587
+   1       1455     4367      588     4370
+   1       1453     1454     4367     1455
+   1       1453     1454     4366     4367
+   1       1454     1455     4370     4367
+   1       1454     4366     4367     4370
+   1       1433      215     2473     2472
+   1       1440     2472     4353      583
+   1       1441     2473      584     4353
+   1       1433     1440     2473     1441
+   1       1433     1440     2472     2473
+   1       1440     1441     4353     2473
+   1       1440     2472     2473     4353
+   1       1463      590     4384     2789
+   1       1457     2789     2790      256
+   1       1465     4384      592     2790
+   1       1463     1457     4384     1465
+   1       1463     1457     2789     4384
+   1       1457     1465     2790     4384
+   1       1457     2789     4384     2790
+   1       1477      593     2841     4397
+   1       1479     4397     2843      595
+   1       1467     2841      264     2843
+   1       1477     1479     2841     1467
+   1       1477     1479     4397     2841
+   1       1479     1467     2843     2841
+   1       1479     4397     2841     2843
+   1       1437      580     4339     4337
+   1       1438     4337     4343      581
+   1       1441     4339      584     4343
+   1       1437     1438     4339     1441
+   1       1437     1438     4337     4339
+   1       1438     1441     4343     4339
+   1       1438     4337     4339     4343
+   1       1437      580     4338     4339
+   1       1440     4338      583     4353
+   1       1441     4339     4353      584
+   1       1437     1440     1441     4339
+   1       1437     1440     4339     4338
+   1       1440     1441     4339     4353
+   1       1440     4338     4353     4339
+   1       1462      589     4380     4379
+   1       1464     4379     4387      591
+   1       1465     4380      592     4387
+   1       1462     1464     4380     1465
+   1       1462     1464     4379     4380
+   1       1464     1465     4387     4380
+   1       1464     4379     4380     4387
+   1       1463      590     4383     4384
+   1       1464     4383      591     4387
+   1       1465     4384     4387      592
+   1       1463     1464     1465     4384
+   1       1463     1464     4384     4383
+   1       1464     1465     4384     4387
+   1       1464     4383     4387     4384
+   1       1557      235     2628     2629
+   1       1567     2628      631     4565
+   1       1568     2629     4565      632
+   1       1557     1567     1568     2629
+   1       1557     1567     2629     2628
+   1       1567     1568     2629     4565
+   1       1567     2628     4565     2629
+   1       1599      644     2850     4627
+   1       1591     2850      265     2852
+   1       1603     4627     2852      648
+   1       1599     1591     1603     4627
+   1       1599     1591     4627     2850
+   1       1591     1603     4627     2852
+   1       1591     2850     2852     4627
+   1       1613      650     4656     3051
+   1       1616     4656      653     3054
+   1       1605     3051     3054      295
+   1       1613     1616     1605     3051
+   1       1613     1616     3051     4656
+   1       1616     1605     3051     3054
+   1       1616     4656     3054     3051
+   1       1564      628     4547     4549
+   1       1565     4547      629     4553
+   1       1568     4549     4553      632
+   1       1564     1565     1568     4549
+   1       1564     1565     4549     4547
+   1       1565     1568     4549     4553
+   1       1565     4547     4553     4549
+   1       1564      628     4549     4548
+   1       1567     4548     4565      631
+   1       1568     4549      632     4565
+   1       1564     1567     4549     1568
+   1       1564     1567     4548     4549
+   1       1567     1568     4565     4549
+   1       1567     4548     4549     4565
+   1       1598      643     4620     4622
+   1       1600     4620      645     4630
+   1       1603     4622     4630      648
+   1       1598     1600     1603     4622
+   1       1598     1600     4622     4620
+   1       1600     1603     4622     4630
+   1       1600     4620     4630     4622
+   1       1599      644     4627     4626
+   1       1600     4626     4630      645
+   1       1603     4627      648     4630
+   1       1599     1600     4627     1603
+   1       1599     1600     4626     4627
+   1       1600     1603     4630     4627
+   1       1600     4626     4627     4630
+   1       1581      257     2797     2796
+   1       1588     2796     4613      641
+   1       1589     2797      642     4613
+   1       1581     1588     2797     1589
+   1       1581     1588     2796     2797
+   1       1588     1589     4613     2797
+   1       1588     2796     2797     4613
+   1       1601      646     4637     2851
+   1       1591     2851     2852      265
+   1       1603     4637      648     2852
+   1       1601     1591     4637     1603
+   1       1601     1591     2851     4637
+   1       1591     1603     2852     4637
+   1       1591     2851     4637     2852
+   1       1615      652     3053     4663
+   1       1616     4663     3054      653
+   1       1605     3053      295     3054
+   1       1615     1616     3053     1605
+   1       1615     1616     4663     3053
+   1       1616     1605     3054     3053
+   1       1616     4663     3053     3054
+   1       1586      639     4605     4603
+   1       1587     4603     4609      640
+   1       1589     4605      642     4609
+   1       1586     1587     4605     1589
+   1       1586     1587     4603     4605
+   1       1587     1589     4609     4605
+   1       1587     4603     4605     4609
+   1       1586      639     4604     4605
+   1       1588     4604      641     4613
+   1       1589     4605     4613      642
+   1       1586     1588     1589     4605
+   1       1586     1588     4605     4604
+   1       1588     1589     4605     4613
+   1       1588     4604     4613     4605
+   1       1598      643     4622     4621
+   1       1602     4621     4640      647
+   1       1603     4622      648     4640
+   1       1598     1602     4622     1603
+   1       1598     1602     4621     4622
+   1       1602     1603     4640     4622
+   1       1602     4621     4622     4640
+   1       1601      646     4636     4637
+   1       1602     4636      647     4640
+   1       1603     4637     4640      648
+   1       1601     1602     1603     4637
+   1       1601     1602     4637     4636
+   1       1602     1603     4637     4640
+   1       1602     4636     4640     4637
+   1       1061      142     2025     2023
+   1       1066     2025      405     3584
+   1       1064     2023     3584      403
+   1       1061     1066     1064     2023
+   1       1061     1066     2023     2025
+   1       1066     1064     2023     3584
+   1       1066     2025     3584     2023
+   1       1546      419     2985     3656
+   1       1543     2985      286     2989
+   1       1554     3656     2989      625
+   1       1546     1543     1554     3656
+   1       1546     1543     3656     2985
+   1       1543     1554     3656     2989
+   1       1543     2985     2989     3656
+   1       1521      411     3625     2885
+   1       1527     3625      617     2888
+   1       1519     2885     2888      271
+   1       1521     1527     1519     2885
+   1       1521     1527     2885     3625
+   1       1527     1519     2885     2888
+   1       1527     3625     2888     2885
+   1       1070      409     3604     3586
+   1       1068     3604      407     3585
+   1       1064     3586     3585      403
+   1       1070     1068     1064     3586
+   1       1070     1068     3586     3604
+   1       1068     1064     3586     3585
+   1       1068     3604     3585     3586
+   1       1070      409     3586     3596
+   1       1066     3596     3584      405
+   1       1064     3586      403     3584
+   1       1070     1066     3586     1064
+   1       1070     1066     3596     3586
+   1       1066     1064     3584     3586
+   1       1066     3596     3586     3584
+   1       1549      614     3629     4498
+   1       1545     3629      412     3631
+   1       1554     4498     3631      625
+   1       1549     1545     1554     4498
+   1       1549     1545     4498     3629
+   1       1545     1554     4498     3631
+   1       1545     3629     3631     4498
+   1       1546      419     3656     3627
+   1       1545     3627     3631      412
+   1       1554     3656      625     3631
+   1       1546     1545     3656     1554
+   1       1546     1545     3627     3656
+   1       1545     1554     3631     3656
+   1       1545     3627     3656     3631
+   1       1757      288     3006     3010
+   1       1759     3006      496     4016
+   1       1768     3010     4016      703
+   1       1757     1759     1768     3010
+   1       1757     1759     3010     3006
+   1       1759     1768     3010     4016
+   1       1759     3006     4016     3010
+   1       1203      484     2104     3939
+   1       1201     2104      159     2106
+   1       1205     3939     2106      486
+   1       1203     1201     1205     3939
+   1       1203     1201     3939     2104
+   1       1201     1205     3939     2106
+   1       1201     2104     2106     3939
+   1       1803      714     4036     3146
+   1       1797     4036      503     3143
+   1       1795     3146     3143      311
+   1       1803     1797     1795     3146
+   1       1803     1797     3146     4036
+   1       1797     1795     3146     3143
+   1       1797     4036     3143     3146
+   1       1758      488     3972     3974
+   1       1765     3972      700     4853
+   1       1768     3974     4853      703
+   1       1758     1765     1768     3974
+   1       1758     1765     3974     3972
+   1       1765     1768     3974     4853
+   1       1765     3972     4853     3974
+   1       1758      488     3974     3970
+   1       1759     3970     4016      496
+   1       1768     3974      703     4016
+   1       1758     1759     3974     1768
+   1       1758     1759     3970     3974
+   1       1759     1768     4016     3974
+   1       1759     3970     3974     4016
+   1       1209      490     3980     3955
+   1       1211     3980      492     3956
+   1       1205     3955     3956      486
+   1       1209     1211     1205     3955
+   1       1209     1211     3955     3980
+   1       1211     1205     3955     3956
+   1       1211     3980     3956     3955
+   1       1203      484     3939     3943
+   1       1211     3943     3956      492
+   1       1205     3939      486     3956
+   1       1203     1211     3939     1205
+   1       1203     1211     3943     3939
+   1       1211     1205     3956     3939
+   1       1211     3943     3939     3956
+   1       1639      272     2894     2891
+   1       1647     2894      664     3756
+   1       1641     2891     3756      444
+   1       1639     1647     1641     2891
+   1       1639     1647     2891     2894
+   1       1647     1641     2891     3756
+   1       1647     2894     3756     2891
+   1       1657      667     3139     3767
+   1       1649     3139      310     3136
+   1       1652     3767     3136      447
+   1       1657     1649     1652     3767
+   1       1657     1649     3767     3139
+   1       1649     1652     3767     3136
+   1       1649     3139     3136     3767
+   1       1127      439     3732     2057
+   1       1128     3732      440     2058
+   1       1125     2057     2058      150
+   1       1127     1128     1125     2057
+   1       1127     1128     2057     3732
+   1       1128     1125     2057     2058
+   1       1128     3732     2058     2057
+   1       1645      662     3745     3755
+   1       1640     3745      441     3743
+   1       1641     3755     3743      444
+   1       1645     1640     1641     3755
+   1       1645     1640     3755     3745
+   1       1640     1641     3755     3743
+   1       1640     3745     3743     3755
+   1       1645      662     3755     4698
+   1       1647     4698     3756      664
+   1       1641     3755      444     3756
+   1       1645     1647     3755     1641
+   1       1645     1647     4698     3755
+   1       1647     1641     3756     3755
+   1       1647     4698     3755     3756
+   1       1650      442     3746     3747
+   1       1651     3746      445     3758
+   1       1652     3747     3758      447
+   1       1650     1651     1652     3747
+   1       1650     1651     3747     3746
+   1       1651     1652     3747     3758
+   1       1651     3746     3758     3747
+   1       1657      667     3767     3762
+   1       1651     3762     3758      445
+   1       1652     3767      447     3758
+   1       1657     1651     3767     1652
+   1       1657     1651     3762     3767
+   1       1651     1652     3758     3767
+   1       1651     3762     3767     3758
+   1       1505      244     2706     2708
+   1       1513     2706      609     4473
+   1       1516     2708     4473      612
+   1       1505     1513     1516     2708
+   1       1505     1513     2708     2706
+   1       1513     1516     2708     4473
+   1       1513     2706     4473     2708
+   1       1487      598     2529     4413
+   1       1481     2529      224     2530
+   1       1488     4413     2530      599
+   1       1487     1481     1488     4413
+   1       1487     1481     4413     2529
+   1       1481     1488     4413     2530
+   1       1481     2529     2530     4413
+   1       1526      616     4499     2887
+   1       1525     4499      615     2886
+   1       1519     2887     2886      271
+   1       1526     1525     1519     2887
+   1       1526     1525     2887     4499
+   1       1525     1519     2887     2886
+   1       1525     4499     2886     2887
+   1       1509      596     4405     4407
+   1       1511     4405      607     4462
+   1       1516     4407     4462      612
+   1       1509     1511     1516     4407
+   1       1509     1511     4407     4405
+   1       1511     1516     4407     4462
+   1       1511     4405     4462     4407
+   1       1509      596     4407     4406
+   1       1513     4406     4473      609
+   1       1516     4407      612     4473
+   1       1509     1513     4407     1516
+   1       1509     1513     4406     4407
+   1       1513     1516     4473     4407
+   1       1513     4406     4407     4473
+   1       1486      597     4409     4408
+   1       1489     4409      600     4418
+   1       1488     4408     4418      599
+   1       1486     1489     1488     4408
+   1       1486     1489     4408     4409
+   1       1489     1488     4408     4418
+   1       1489     4409     4418     4408
+   1       1487      598     4413     4414
+   1       1489     4414     4418      600
+   1       1488     4413      599     4418
+   1       1487     1489     4413     1488
+   1       1487     1489     4414     4413
+   1       1489     1488     4418     4413
+   1       1489     4414     4413     4418
+   1       1505      244     2708     2709
+   1       1517     2709     4485      613
+   1       1516     2708      612     4485
+   1       1505     1517     2708     1516
+   1       1505     1517     2709     2708
+   1       1517     1516     4485     2708
+   1       1517     2709     2708     4485
+   1       1553      624     4534     2988
+   1       1543     2988     2989      286
+   1       1554     4534      625     2989
+   1       1553     1543     4534     1554
+   1       1553     1543     2988     4534
+   1       1543     1554     2989     4534
+   1       1543     2988     4534     2989
+   1       1526      616     2887     4501
+   1       1527     4501     2888      617
+   1       1519     2887      271     2888
+   1       1526     1527     2887     1519
+   1       1526     1527     4501     2887
+   1       1527     1519     2888     2887
+   1       1527     4501     2887     2888
+   1       1512      608     4467     4461
+   1       1511     4461     4462      607
+   1       1516     4467      612     4462
+   1       1512     1511     4467     1516
+   1       1512     1511     4461     4467
+   1       1511     1516     4462     4467
+   1       1511     4461     4467     4462
+   1       1512      608     4468     4467
+   1       1517     4468      613     4485
+   1       1516     4467     4485      612
+   1       1512     1517     1516     4467
+   1       1512     1517     4467     4468
+   1       1517     1516     4467     4485
+   1       1517     4468     4485     4467
+   1       1549      614     4498     4497
+   1       1552     4497     4530      623
+   1       1554     4498      625     4530
+   1       1549     1552     4498     1554
+   1       1549     1552     4497     4498
+   1       1552     1554     4530     4498
+   1       1552     4497     4498     4530
+   1       1553      624     4529     4534
+   1       1552     4529      623     4530
+   1       1554     4534     4530      625
+   1       1553     1552     1554     4534
+   1       1553     1552     4534     4529
+   1       1552     1554     4534     4530
+   1       1552     4529     4530     4534
+   1       1628      225     2536     2537
+   1       1634     2536      658     4680
+   1       1635     2537     4680      659
+   1       1628     1634     1635     2537
+   1       1628     1634     2537     2536
+   1       1634     1635     2537     4680
+   1       1634     2536     4680     2537
+   1       1749      663     2900     4703
+   1       1743     2900      273     2903
+   1       1754     4703     2903      698
+   1       1749     1743     1754     4703
+   1       1749     1743     4703     2900
+   1       1743     1754     4703     2903
+   1       1743     2900     2903     4703
+   1       1799      666     4714     3144
+   1       1802     4714      713     3145
+   1       1795     3144     3145      311
+   1       1799     1802     1795     3144
+   1       1799     1802     3144     4714
+   1       1802     1795     3144     3145
+   1       1802     4714     3145     3144
+   1       1636      660     4690     4685
+   1       1637     4690      661     4686
+   1       1635     4685     4686      659
+   1       1636     1637     1635     4685
+   1       1636     1637     4685     4690
+   1       1637     1635     4685     4686
+   1       1637     4690     4686     4685
+   1       1636      660     4685     4681
+   1       1634     4681     4680      658
+   1       1635     4685      659     4680
+   1       1636     1634     4685     1635
+   1       1636     1634     4681     4685
+   1       1634     1635     4680     4685
+   1       1634     4681     4685     4680
+   1       1752      696     4709     4831
+   1       1750     4709      665     4710
+   1       1754     4831     4710      698
+   1       1752     1750     1754     4831
+   1       1752     1750     4831     4709
+   1       1750     1754     4831     4710
+   1       1750     4709     4710     4831
+   1       1749      663     4703     4702
+   1       1750     4702     4710      665
+   1       1754     4703      698     4710
+   1       1749     1750     4703     1754
+   1       1749     1750     4702     4703
+   1       1750     1754     4710     4703
+   1       1750     4702     4703     4710
+   1       1757      288     3010     3009
+   1       1767     3009     4857      702
+   1       1768     3010      703     4857
+   1       1757     1767     3010     1768
+   1       1757     1767     3009     3010
+   1       1767     1768     4857     3010
+   1       1767     3009     3010     4857
+   1       1753      697     4836     2902
+   1       1743     2902     2903      273
+   1       1754     4836      698     2903
+   1       1753     1743     4836     1754
+   1       1753     1743     2902     4836
+   1       1743     1754     2903     4836
+   1       1743     2902     4836     2903
+   1       1803      714     3146     4896
+   1       1802     4896     3145      713
+   1       1795     3146      311     3145
+   1       1803     1802     3146     1795
+   1       1803     1802     4896     3146
+   1       1802     1795     3145     3146
+   1       1802     4896     3146     3145
+   1       1764      695     4830     4828
+   1       1765     4828     4853      700
+   1       1768     4830      703     4853
+   1       1764     1765     4830     1768
+   1       1764     1765     4828     4830
+   1       1765     1768     4853     4830
+   1       1765     4828     4830     4853
+   1       1764      695     4829     4830
+   1       1767     4829      702     4857
+   1       1768     4830     4857      703
+   1       1764     1767     1768     4830
+   1       1764     1767     4830     4829
+   1       1767     1768     4830     4857
+   1       1767     4829     4857     4830
+   1       1752      696     4831     4832
+   1       1755     4832     4841      699
+   1       1754     4831      698     4841
+   1       1752     1755     4831     1754
+   1       1752     1755     4832     4831
+   1       1755     1754     4841     4831
+   1       1755     4832     4831     4841
+   1       1753      697     4837     4836
+   1       1755     4837      699     4841
+   1       1754     4836     4841      698
+   1       1753     1755     1754     4836
+   1       1753     1755     4836     4837
+   1       1755     1754     4836     4841
+   1       1755     4837     4841     4836
+   1        956      130     1959     1960
+   1        959     1959      340     3287
+   1        960     1960     3287      341
+   1        956      959      960     1960
+   1        956      959     1960     1959
+   1        959      960     1960     3287
+   1        959     1959     3287     1960
+   1       1289      354     2396     3365
+   1       1287     2396      205     2399
+   1       1295     3365     2399      533
+   1       1289     1287     1295     3365
+   1       1289     1287     3365     2396
+   1       1287     1295     3365     2399
+   1       1287     2396     2399     3365
+   1       1300      369     3437     2576
+   1       1309     3437      538     2581
+   1       1297     2576     2581      230
+   1       1300     1309     1297     2576
+   1       1300     1309     2576     3437
+   1       1309     1297     2576     2581
+   1       1309     3437     2581     2576
+   1        962      343     3303     3292
+   1        963     3303      344     3293
+   1        960     3292     3293      341
+   1        962      963      960     3292
+   1        962      963     3292     3303
+   1        963      960     3292     3293
+   1        963     3303     3293     3292
+   1        962      343     3292     3288
+   1        959     3288     3287      340
+   1        960     3292      341     3287
+   1        962      959     3292      960
+   1        962      959     3288     3292
+   1        959      960     3287     3292
+   1        959     3288     3292     3287
+   1       1292      530     3430     4151
+   1       1290     3430      368     3431
+   1       1295     4151     3431      533
+   1       1292     1290     1295     4151
+   1       1292     1290     4151     3430
+   1       1290     1295     4151     3431
+   1       1290     3430     3431     4151
+   1       1289      354     3365     3364
+   1       1290     3364     3431      368
+   1       1295     3365      533     3431
+   1       1289     1290     3365     1295
+   1       1289     1290     3364     3365
+   1       1290     1295     3431     3365
+   1       1290     3364     3365     3431
+   1       1351      206     2403     2406
+   1       1353     2403      406     3603
+   1       1359     2406     3603      556
+   1       1351     1353     1359     2406
+   1       1351     1353     2406     2403
+   1       1353     1359     2406     3603
+   1       1353     2403     3603     2406
+   1       1056      398     2016     3556
+   1       1054     2016      141     2017
+   1       1057     3556     2017      399
+   1       1056     1054     1057     3556
+   1       1056     1054     3556     2016
+   1       1054     1057     3556     2017
+   1       1054     2016     2017     3556
+   1       1382      564     3640     2931
+   1       1377     3640      415     2929
+   1       1375     2931     2929      278
+   1       1382     1377     1375     2931
+   1       1382     1377     2931     3640
+   1       1377     1375     2931     2929
+   1       1377     3640     2929     2931
+   1       1352      400     3570     3571
+   1       1357     3570      554     4243
+   1       1359     3571     4243      556
+   1       1352     1357     1359     3571
+   1       1352     1357     3571     3570
+   1       1357     1359     3571     4243
+   1       1357     3570     4243     3571
+   1       1352      400     3571     3569
+   1       1353     3569     3603      406
+   1       1359     3571      556     3603
+   1       1352     1353     3571     1359
+   1       1352     1353     3569     3571
+   1       1353     1359     3603     3571
+   1       1353     3569     3571     3603
+   1       1059      401     3572     3562
+   1       1060     3572      402     3563
+   1       1057     3562     3563      399
+   1       1059     1060     1057     3562
+   1       1059     1060     3562     3572
+   1       1060     1057     3562     3563
+   1       1060     3572     3563     3562
+   1       1056      398     3556     3558
+   1       1060     3558     3563      402
+   1       1057     3556      399     3563
+   1       1056     1060     3556     1057
+   1       1056     1060     3558     3556
+   1       1060     1057     3563     3556
+   1       1060     3558     3556     3563
+   1       1399      232     2602     2597
+   1       1411     2602      575     3845
+   1       1401     2597     3845      460
+   1       1399     1411     1401     2597
+   1       1399     1411     2597     2602
+   1       1411     1401     2597     3845
+   1       1411     2602     3845     2597
+   1       1431      578     2938     3907
+   1       1423     2938      279     2934
+   1       1426     3907     2934      473
+   1       1431     1423     1426     3907
+   1       1431     1423     3907     2938
+   1       1423     1426     3907     2934
+   1       1423     2938     2934     3907
+   1       1146      449     3770     2068
+   1       1148     3770      451     2070
+   1       1144     2068     2070      153
+   1       1146     1148     1144     2068
+   1       1146     1148     2068     3770
+   1       1148     1144     2068     2070
+   1       1148     3770     2070     2068
+   1       1408      572     3794     3843
+   1       1400     3794      452     3791
+   1       1401     3843     3791      460
+   1       1408     1400     1401     3843
+   1       1408     1400     3843     3794
+   1       1400     1401     3843     3791
+   1       1400     3794     3791     3843
+   1       1408      572     3843     4321
+   1       1411     4321     3845      575
+   1       1401     3843      460     3845
+   1       1408     1411     3843     1401
+   1       1408     1411     4321     3843
+   1       1411     1401     3845     3843
+   1       1411     4321     3843     3845
+   1       1424      454     3800     3801
+   1       1425     3800      461     3847
+   1       1426     3801     3847      473
+   1       1424     1425     1426     3801
+   1       1424     1425     3801     3800
+   1       1425     1426     3801     3847
+   1       1425     3800     3847     3801
+   1       1431      578     3907     3851
+   1       1425     3851     3847      461
+   1       1426     3907      473     3847
+   1       1431     1425     3907     1426
+   1       1431     1425     3851     3907
+   1       1425     1426     3847     3907
+   1       1425     3851     3907     3847
+   1       1253      180     2222     2224
+   1       1259     2222      516     4090
+   1       1261     2224     4090      518
+   1       1253     1259     1261     2224
+   1       1253     1259     2224     2222
+   1       1259     1261     2224     4090
+   1       1259     2222     4090     2224
+   1       1272      522     2271     4118
+   1       1263     2271      187     2273
+   1       1275     4118     2273      525
+   1       1272     1263     1275     4118
+   1       1272     1263     4118     2271
+   1       1263     1275     4118     2273
+   1       1263     2271     2273     4118
+   1       1305      534     4167     2578
+   1       1307     4167      536     2579
+   1       1297     2578     2579      230
+   1       1305     1307     1297     2578
+   1       1305     1307     2578     4167
+   1       1307     1297     2578     2579
+   1       1307     4167     2579     2578
+   1       1256      513     4072     4074
+   1       1258     4072      515     4084
+   1       1261     4074     4084      518
+   1       1256     1258     1261     4074
+   1       1256     1258     4074     4072
+   1       1258     1261     4074     4084
+   1       1258     4072     4084     4074
+   1       1256      513     4074     4073
+   1       1259     4073     4090      516
+   1       1261     4074      518     4090
+   1       1256     1259     4074     1261
+   1       1256     1259     4073     4074
+   1       1259     1261     4090     4074
+   1       1259     4073     4074     4090
+   1       1270      520     4108     4110
+   1       1273     4108      523     4121
+   1       1275     4110     4121      525
+   1       1270     1273     1275     4110
+   1       1270     1273     4110     4108
+   1       1273     1275     4110     4121
+   1       1273     4108     4121     4110
+   1       1272      522     4118     4117
+   1       1273     4117     4121      523
+   1       1275     4118      525     4121
+   1       1272     1273     4118     1275
+   1       1272     1273     4117     4118
+   1       1273     1275     4121     4118
+   1       1273     4117     4118     4121
+   1       1253      180     2224     2223
+   1       1260     2223     4094      517
+   1       1261     2224      518     4094
+   1       1253     1260     2224     1261
+   1       1253     1260     2223     2224
+   1       1260     1261     4094     2224
+   1       1260     2223     2224     4094
+   1       1293      531     4155     2398
+   1       1287     2398     2399      205
+   1       1295     4155      533     2399
+   1       1293     1287     4155     1295
+   1       1293     1287     2398     4155
+   1       1287     1295     2399     4155
+   1       1287     2398     4155     2399
+   1       1305      534     2578     4168
+   1       1309     4168     2581      538
+   1       1297     2578      230     2581
+   1       1305     1309     2578     1297
+   1       1305     1309     4168     2578
+   1       1309     1297     2581     2578
+   1       1309     4168     2578     2581
+   1       1257      514     4080     4078
+   1       1258     4078     4084      515
+   1       1261     4080      518     4084
+   1       1257     1258     4080     1261
+   1       1257     1258     4078     4080
+   1       1258     1261     4084     4080
+   1       1258     4078     4080     4084
+   1       1257      514     4079     4080
+   1       1260     4079      517     4094
+   1       1261     4080     4094      518
+   1       1257     1260     1261     4080
+   1       1257     1260     4080     4079
+   1       1260     1261     4080     4094
+   1       1260     4079     4094     4080
+   1       1292      530     4151     4150
+   1       1294     4150     4158      532
+   1       1295     4151      533     4158
+   1       1292     1294     4151     1295
+   1       1292     1294     4150     4151
+   1       1294     1295     4158     4151
+   1       1294     4150     4151     4158
+   1       1293      531     4154     4155
+   1       1294     4154      532     4158
+   1       1295     4155     4158      533
+   1       1293     1294     1295     4155
+   1       1293     1294     4155     4154
+   1       1294     1295     4155     4158
+   1       1294     4154     4158     4155
+   1       1341      189     2285     2286
+   1       1348     2285      551     4230
+   1       1349     2286     4230      552
+   1       1341     1348     1349     2286
+   1       1341     1348     2286     2285
+   1       1348     1349     2286     4230
+   1       1348     2285     4230     2286
+   1       1369      558     2589     4261
+   1       1361     2589      231     2591
+   1       1373     4261     2591      562
+   1       1369     1361     1373     4261
+   1       1369     1361     4261     2589
+   1       1361     1373     4261     2591
+   1       1361     2589     2591     4261
+   1       1381      563     4285     2930
+   1       1383     4285      565     2932
+   1       1375     2930     2932      278
+   1       1381     1383     1375     2930
+   1       1381     1383     2930     4285
+   1       1383     1375     2930     2932
+   1       1383     4285     2932     2930
+   1       1346      549     4220     4222
+   1       1347     4220      550     4226
+   1       1349     4222     4226      552
+   1       1346     1347     1349     4222
+   1       1346     1347     4222     4220
+   1       1347     1349     4222     4226
+   1       1347     4220     4226     4222
+   1       1346      549     4222     4221
+   1       1348     4221     4230      551
+   1       1349     4222      552     4230
+   1       1346     1348     4222     1349
+   1       1346     1348     4221     4222
+   1       1348     1349     4230     4222
+   1       1348     4221     4222     4230
+   1       1368      557     4254     4256
+   1       1370     4254      559     4264
+   1       1373     4256     4264      562
+   1       1368     1370     1373     4256
+   1       1368     1370     4256     4254
+   1       1370     1373     4256     4264
+   1       1370     4254     4264     4256
+   1       1369      558     4261     4260
+   1       1370     4260     4264      559
+   1       1373     4261      562     4264
+   1       1369     1370     4261     1373
+   1       1369     1370     4260     4261
+   1       1370     1373     4264     4261
+   1       1370     4260     4261     4264
+   1       1351      206     2406     2405
+   1       1358     2405     4247      555
+   1       1359     2406      556     4247
+   1       1351     1358     2406     1359
+   1       1351     1358     2405     2406
+   1       1358     1359     4247     2406
+   1       1358     2405     2406     4247
+   1       1371      560     4271     2590
+   1       1361     2590     2591      231
+   1       1373     4271      562     2591
+   1       1371     1361     4271     1373
+   1       1371     1361     2590     4271
+   1       1361     1373     2591     4271
+   1       1361     2590     4271     2591
+   1       1382      564     2931     4287
+   1       1383     4287     2932      565
+   1       1375     2931      278     2932
+   1       1382     1383     2931     1375
+   1       1382     1383     4287     2931
+   1       1383     1375     2932     2931
+   1       1383     4287     2931     2932
+   1       1356      553     4239     4237
+   1       1357     4237     4243      554
+   1       1359     4239      556     4243
+   1       1356     1357     4239     1359
+   1       1356     1357     4237     4239
+   1       1357     1359     4243     4239
+   1       1357     4237     4239     4243
+   1       1356      553     4238     4239
+   1       1358     4238      555     4247
+   1       1359     4239     4247      556
+   1       1356     1358     1359     4239
+   1       1356     1358     4239     4238
+   1       1358     1359     4239     4247
+   1       1358     4238     4247     4239
+   1       1368      557     4256     4255
+   1       1372     4255     4274      561
+   1       1373     4256      562     4274
+   1       1368     1372     4256     1373
+   1       1368     1372     4255     4256
+   1       1372     1373     4274     4256
+   1       1372     4255     4256     4274
+   1       1371      560     4270     4271
+   1       1372     4270      561     4274
+   1       1373     4271     4274      562
+   1       1371     1372     1373     4271
+   1       1371     1372     4271     4270
+   1       1372     1373     4271     4274
+   1       1372     4270     4274     4271
+   1        956      130     1960     1958
+   1        960     1960      341     3281
+   1        958     1958     3281      339
+   1        956      960      958     1958
+   1        956      960     1958     1960
+   1        960      958     1958     3281
+   1        960     1960     3281     1958
+   1       1300      369     2576     3436
+   1       1297     2576      230     2580
+   1       1308     3436     2580      537
+   1       1300     1297     1308     3436
+   1       1300     1297     3436     2576
+   1       1297     1308     3436     2580
+   1       1297     2576     2580     3436
+   1       1279      347     3327     2331
+   1       1285     3327      529     2334
+   1       1277     2331     2334      196
+   1       1279     1285     1277     2331
+   1       1279     1285     2331     3327
+   1       1285     1277     2331     2334
+   1       1285     3327     2334     2331
+   1        963      344     3299     3283
+   1        961     3299      342     3282
+   1        958     3283     3282      339
+   1        963      961      958     3283
+   1        963      961     3283     3299
+   1        961      958     3283     3282
+   1        961     3299     3282     3283
+   1        963      344     3283     3293
+   1        960     3293     3281      341
+   1        958     3283      339     3281
+   1        963      960     3283      958
+   1        963      960     3293     3283
+   1        960      958     3281     3283
+   1        960     3293     3283     3281
+   1       1303      526     3331     4140
+   1       1299     3331      348     3333
+   1       1308     4140     3333      537
+   1       1303     1299     1308     4140
+   1       1303     1299     4140     3331
+   1       1299     1308     4140     3333
+   1       1299     3331     3333     4140
+   1       1300      369     3436     3329
+   1       1299     3329     3333      348
+   1       1308     3436      537     3333
+   1       1300     1299     3436     1308
+   1       1300     1299     3329     3436
+   1       1299     1308     3333     3436
+   1       1299     3329     3436     3333
+   1       1399      232     2597     2601
+   1       1401     2597      460     3844
+   1       1410     2601     3844      574
+   1       1399     1401     1410     2601
+   1       1399     1401     2601     2597
+   1       1401     1410     2601     3844
+   1       1401     2597     3844     2601
+   1       1146      449     2068     3769
+   1       1144     2068      153     2069
+   1       1147     3769     2069      450
+   1       1146     1144     1147     3769
+   1       1146     1144     3769     2068
+   1       1144     1147     3769     2069
+   1       1144     2068     2069     3769
+   1       1421      577     3889     2834
+   1       1415     3889      468     2831
+   1       1413     2834     2831      263
+   1       1421     1415     1413     2834
+   1       1421     1415     2834     3889
+   1       1415     1413     2834     2831
+   1       1415     3889     2831     2834
+   1       1400      452     3793     3795
+   1       1407     3793      571     4319
+   1       1410     3795     4319      574
+   1       1400     1407     1410     3795
+   1       1400     1407     3795     3793
+   1       1407     1410     3795     4319
+   1       1407     3793     4319     3795
+   1       1400      452     3795     3791
+   1       1401     3791     3844      460
+   1       1410     3795      574     3844
+   1       1400     1401     3795     1410
+   1       1400     1401     3791     3795
+   1       1401     1410     3844     3795
+   1       1401     3791     3795     3844
+   1       1150      453     3796     3779
+   1       1152     3796      455     3780
+   1       1147     3779     3780      450
+   1       1150     1152     1147     3779
+   1       1150     1152     3779     3796
+   1       1152     1147     3779     3780
+   1       1152     3796     3780     3779
+   1       1146      449     3769     3773
+   1       1152     3773     3780      455
+   1       1147     3769      450     3780
+   1       1146     1152     3769     1147
+   1       1146     1152     3773     3769
+   1       1152     1147     3780     3769
+   1       1152     3773     3769     3780
+   1       1321      197     2340     2337
+   1       1329     2340      545     3517
+   1       1323     2337     3517      387
+   1       1321     1329     1323     2337
+   1       1321     1329     2337     2340
+   1       1329     1323     2337     3517
+   1       1329     2340     3517     2337
+   1       1339      548     2827     3544
+   1       1331     2827      262     2824
+   1       1334     3544     2824      394
+   1       1339     1331     1334     3544
+   1       1339     1331     3544     2827
+   1       1331     1334     3544     2824
+   1       1331     2827     2824     3544
+   1       1026      381     3485     1999
+   1       1027     3485      382     2000
+   1       1024     1999     2000      137
+   1       1026     1027     1024     1999
+   1       1026     1027     1999     3485
+   1       1027     1024     1999     2000
+   1       1027     3485     2000     1999
+   1       1327      543     3498     3516
+   1       1322     3498      383     3496
+   1       1323     3516     3496      387
+   1       1327     1322     1323     3516
+   1       1327     1322     3516     3498
+   1       1322     1323     3516     3496
+   1       1322     3498     3496     3516
+   1       1327      543     3516     4201
+   1       1329     4201     3517      545
+   1       1323     3516      387     3517
+   1       1327     1329     3516     1323
+   1       1327     1329     4201     3516
+   1       1329     1323     3517     3516
+   1       1329     4201     3516     3517
+   1       1332      384     3499     3500
+   1       1333     3499      388     3519
+   1       1334     3500     3519      394
+   1       1332     1333     1334     3500
+   1       1332     1333     3500     3499
+   1       1333     1334     3500     3519
+   1       1333     3499     3519     3500
+   1       1339      548     3544     3523
+   1       1333     3523     3519      388
+   1       1334     3544      394     3519
+   1       1339     1333     3544     1334
+   1       1339     1333     3523     3544
+   1       1333     1334     3519     3544
+   1       1333     3523     3544     3519
+   1       1263      187     2270     2272
+   1       1271     2270      521     4115
+   1       1274     2272     4115      524
+   1       1263     1271     1274     2272
+   1       1263     1271     2272     2270
+   1       1271     1274     2272     4115
+   1       1271     2270     4115     2272
+   1       1249      510     2189     4055
+   1       1243     2189      174     2190
+   1       1250     4055     2190      511
+   1       1249     1243     1250     4055
+   1       1249     1243     4055     2189
+   1       1243     1250     4055     2190
+   1       1243     2189     2190     4055
+   1       1284      528     4141     2333
+   1       1283     4141      527     2332
+   1       1277     2333     2332      196
+   1       1284     1283     1277     2333
+   1       1284     1283     2333     4141
+   1       1283     1277     2333     2332
+   1       1283     4141     2332     2333
+   1       1267      508     4047     4049
+   1       1269     4047      519     4104
+   1       1274     4049     4104      524
+   1       1267     1269     1274     4049
+   1       1267     1269     4049     4047
+   1       1269     1274     4049     4104
+   1       1269     4047     4104     4049
+   1       1267      508     4049     4048
+   1       1271     4048     4115      521
+   1       1274     4049      524     4115
+   1       1267     1271     4049     1274
+   1       1267     1271     4048     4049
+   1       1271     1274     4115     4049
+   1       1271     4048     4049     4115
+   1       1248      509     4051     4050
+   1       1251     4051      512     4060
+   1       1250     4050     4060      511
+   1       1248     1251     1250     4050
+   1       1248     1251     4050     4051
+   1       1251     1250     4050     4060
+   1       1251     4051     4060     4050
+   1       1249      510     4055     4056
+   1       1251     4056     4060      512
+   1       1250     4055      511     4060
+   1       1249     1251     4055     1250
+   1       1249     1251     4056     4055
+   1       1251     1250     4060     4055
+   1       1251     4056     4055     4060
+   1       1263      187     2272     2273
+   1       1275     2273     4127      525
+   1       1274     2272      524     4127
+   1       1263     1275     2272     1274
+   1       1263     1275     2273     2272
+   1       1275     1274     4127     2272
+   1       1275     2273     2272     4127
+   1       1307      536     4176     2579
+   1       1297     2579     2580      230
+   1       1308     4176      537     2580
+   1       1307     1297     4176     1308
+   1       1307     1297     2579     4176
+   1       1297     1308     2580     4176
+   1       1297     2579     4176     2580
+   1       1284      528     2333     4143
+   1       1285     4143     2334      529
+   1       1277     2333      196     2334
+   1       1284     1285     2333     1277
+   1       1284     1285     4143     2333
+   1       1285     1277     2334     2333
+   1       1285     4143     2333     2334
+   1       1270      520     4109     4103
+   1       1269     4103     4104      519
+   1       1274     4109      524     4104
+   1       1270     1269     4109     1274
+   1       1270     1269     4103     4109
+   1       1269     1274     4104     4109
+   1       1269     4103     4109     4104
+   1       1270      520     4110     4109
+   1       1275     4110      525     4127
+   1       1274     4109     4127      524
+   1       1270     1275     1274     4109
+   1       1270     1275     4109     4110
+   1       1275     1274     4109     4127
+   1       1275     4110     4127     4109
+   1       1303      526     4140     4139
+   1       1306     4139     4172      535
+   1       1308     4140      537     4172
+   1       1303     1306     4140     1308
+   1       1303     1306     4139     4140
+   1       1306     1308     4172     4140
+   1       1306     4139     4140     4172
+   1       1307      536     4171     4176
+   1       1306     4171      535     4172
+   1       1308     4176     4172      537
+   1       1307     1306     1308     4176
+   1       1307     1306     4176     4171
+   1       1306     1308     4176     4172
+   1       1306     4171     4172     4176
+   1       1310      175     2196     2197
+   1       1316     2196      539     4183
+   1       1317     2197     4183      540
+   1       1310     1316     1317     2197
+   1       1310     1316     2197     2196
+   1       1316     1317     2197     4183
+   1       1316     2196     4183     2197
+   1       1391      544     2346     4206
+   1       1385     2346      198     2349
+   1       1396     4206     2349      569
+   1       1391     1385     1396     4206
+   1       1391     1385     4206     2346
+   1       1385     1396     4206     2349
+   1       1385     2346     2349     4206
+   1       1417      547     4217     2832
+   1       1420     4217      576     2833
+   1       1413     2832     2833      263
+   1       1417     1420     1413     2832
+   1       1417     1420     2832     4217
+   1       1420     1413     2832     2833
+   1       1420     4217     2833     2832
+   1       1318      541     4193     4188
+   1       1319     4193      542     4189
+   1       1317     4188     4189      540
+   1       1318     1319     1317     4188
+   1       1318     1319     4188     4193
+   1       1319     1317     4188     4189
+   1       1319     4193     4189     4188
+   1       1318      541     4188     4184
+   1       1316     4184     4183      539
+   1       1317     4188      540     4183
+   1       1318     1316     4188     1317
+   1       1318     1316     4184     4188
+   1       1316     1317     4183     4188
+   1       1316     4184     4188     4183
+   1       1394      567     4212     4297
+   1       1392     4212      546     4213
+   1       1396     4297     4213      569
+   1       1394     1392     1396     4297
+   1       1394     1392     4297     4212
+   1       1392     1396     4297     4213
+   1       1392     4212     4213     4297
+   1       1391      544     4206     4205
+   1       1392     4205     4213      546
+   1       1396     4206      569     4213
+   1       1391     1392     4206     1396
+   1       1391     1392     4205     4206
+   1       1392     1396     4213     4206
+   1       1392     4205     4206     4213
+   1       1399      232     2601     2600
+   1       1409     2600     4323      573
+   1       1410     2601      574     4323
+   1       1399     1409     2601     1410
+   1       1399     1409     2600     2601
+   1       1409     1410     4323     2601
+   1       1409     2600     2601     4323
+   1       1395      568     4302     2348
+   1       1385     2348     2349      198
+   1       1396     4302      569     2349
+   1       1395     1385     4302     1396
+   1       1395     1385     2348     4302
+   1       1385     1396     2349     4302
+   1       1385     2348     4302     2349
+   1       1421      577     2834     4328
+   1       1420     4328     2833      576
+   1       1413     2834      263     2833
+   1       1421     1420     2834     1413
+   1       1421     1420     4328     2834
+   1       1420     1413     2833     2834
+   1       1420     4328     2834     2833
+   1       1406      566     4296     4294
+   1       1407     4294     4319      571
+   1       1410     4296      574     4319
+   1       1406     1407     4296     1410
+   1       1406     1407     4294     4296
+   1       1407     1410     4319     4296
+   1       1407     4294     4296     4319
+   1       1406      566     4295     4296
+   1       1409     4295      573     4323
+   1       1410     4296     4323      574
+   1       1406     1409     1410     4296
+   1       1406     1409     4296     4295
+   1       1409     1410     4296     4323
+   1       1409     4295     4323     4296
+   1       1394      567     4297     4298
+   1       1397     4298     4307      570
+   1       1396     4297      569     4307
+   1       1394     1397     4297     1396
+   1       1394     1397     4298     4297
+   1       1397     1396     4307     4297
+   1       1397     4298     4297     4307
+   1       1395      568     4303     4302
+   1       1397     4303      570     4307
+   1       1396     4302     4307      569
+   1       1395     1397     1396     4302
+   1       1395     1397     4302     4303
+   1       1397     1396     4302     4307
+   1       1397     4303     4307     4302
+   1        983       35      987      986
+   1       1979      987      359     3381
+   1       1978      986     3381      358
+   1        983     1979     1978      986
+   1        983     1979      986      987
+   1       1979     1978      986     3381
+   1       1979      987     3381      986
+   1       1994      359     1015     3390
+   1       1012     1015       38     1017
+   1       1996     3390     1017      367
+   1       1994     1012     1996     3390
+   1       1994     1012     3390     1015
+   1       1012     1996     3390     1017
+   1       1012     1015     1017     3390
+   1       1989      358     3384     1003
+   1       1990     3384      367     1004
+   1        998     1003     1004       37
+   1       1989     1990      998     1003
+   1       1989     1990     1003     3384
+   1       1990      998     1003     1004
+   1       1990     3384     1004     1003
+   1       1975      136     1983     1993
+   1       1974     1983      135     1989
+   1       1978     1993     1989      358
+   1       1975     1974     1978     1993
+   1       1975     1974     1993     1983
+   1       1974     1978     1993     1989
+   1       1974     1983     1989     1993
+   1       1975      136     1993     1994
+   1       1979     1994     3381      359
+   1       1978     1993      358     3381
+   1       1975     1979     1993     1978
+   1       1975     1979     1994     1993
+   1       1979     1978     3381     1993
+   1       1979     1994     1993     3381
+   1       1983      135     1989     1990
+   1       1993     1989      358     3384
+   1       1996     1990     3384      367
+   1       1983     1993     1996     1990
+   1       1983     1993     1990     1989
+   1       1993     1996     1990     3384
+   1       1993     1989     3384     1990
+   1       1994      359     3390     3381
+   1       1993     3381     3384      358
+   1       1996     3390      367     3384
+   1       1994     1993     3390     1996
+   1       1994     1993     3381     3390
+   1       1993     1996     3384     3390
+   1       1993     3381     3390     3384
+   1        973       34      977      978
+   1       1972      977      352     3348
+   1       1973      978     3348      353
+   1        973     1972     1973      978
+   1        973     1972      978      977
+   1       1972     1973      978     3348
+   1       1972      977     3348      978
+   1       1987      352     1002     3352
+   1        998     1002       37     1004
+   1       1990     3352     1004      367
+   1       1987      998     1990     3352
+   1       1987      998     3352     1002
+   1        998     1990     3352     1004
+   1        998     1002     1004     3352
+   1       1992      353     3359     1014
+   1       1996     3359      367     1017
+   1       1012     1014     1017       38
+   1       1992     1996     1012     1014
+   1       1992     1996     1014     3359
+   1       1996     1012     1014     1017
+   1       1996     3359     1017     1014
+   1       1968      135     1983     1988
+   1       1969     1983      136     1992
+   1       1973     1988     1992      353
+   1       1968     1969     1973     1988
+   1       1968     1969     1988     1983
+   1       1969     1973     1988     1992
+   1       1969     1983     1992     1988
+   1       1968      135     1988     1987
+   1       1972     1987     3348      352
+   1       1973     1988      353     3348
+   1       1968     1972     1988     1973
+   1       1968     1972     1987     1988
+   1       1972     1973     3348     1988
+   1       1972     1987     1988     3348
+   1       1983      136     1992     1996
+   1       1988     1992      353     3359
+   1       1990     1996     3359      367
+   1       1983     1988     1990     1996
+   1       1983     1988     1996     1992
+   1       1988     1990     1996     3359
+   1       1988     1992     3359     1996
+   1       1987      352     3352     3348
+   1       1988     3348     3359      353
+   1       1990     3352      367     3359
+   1       1987     1988     3352     1990
+   1       1987     1988     3348     3352
+   1       1988     1990     3359     3352
+   1       1988     3348     3352     3359
+   1        964       33      967      968
+   1       1965      967      345     3312
+   1       1966      968     3312      346
+   1        964     1965     1966      968
+   1        964     1965      968      967
+   1       1965     1966      968     3312
+   1       1965      967     3312      968
+   1       1976      345      985     3315
+   1        983      985       35      986
+   1       1978     3315      986      358
+   1       1976      983     1978     3315
+   1       1976      983     3315      985
+   1        983     1978     3315      986
+   1        983      985      986     3315
+   1       1986      346     3320     1001
+   1       1989     3320      358     1003
+   1        998     1001     1003       37
+   1       1986     1989      998     1001
+   1       1986     1989     1001     3320
+   1       1989      998     1001     1003
+   1       1989     3320     1003     1001
+   1       1961      133     1974     1977
+   1       1962     1974      135     1986
+   1       1966     1977     1986      346
+   1       1961     1962     1966     1977
+   1       1961     1962     1977     1974
+   1       1962     1966     1977     1986
+   1       1962     1974     1986     1977
+   1       1961      133     1977     1976
+   1       1965     1976     3312      345
+   1       1966     1977      346     3312
+   1       1961     1965     1977     1966
+   1       1961     1965     1976     1977
+   1       1965     1966     3312     1977
+   1       1965     1976     1977     3312
+   1       1974      135     1986     1989
+   1       1977     1986      346     3320
+   1       1978     1989     3320      358
+   1       1974     1977     1978     1989
+   1       1974     1977     1989     1986
+   1       1977     1978     1989     3320
+   1       1977     1986     3320     1989
+   1       1976      345     3315     3312
+   1       1977     3312     3320      346
+   1       1978     3315      358     3320
+   1       1976     1977     3315     1978
+   1       1976     1977     3312     3315
+   1       1977     1978     3320     3315
+   1       1977     3312     3315     3320
+   1        973       34      978      976
+   1       1973      978      353     3343
+   1       1971      976     3343      351
+   1        973     1973     1971      976
+   1        973     1973      976      978
+   1       1973     1971      976     3343
+   1       1973      978     3343      976
+   1       1992      353     1014     3358
+   1       1012     1014       38     1016
+   1       1995     3358     1016      364
+   1       1992     1012     1995     3358
+   1       1992     1012     3358     1014
+   1       1012     1995     3358     1016
+   1       1012     1014     1016     3358
+   1       1981      351     3345      994
+   1       1982     3345      364      995
+   1        992      994      995       36
+   1       1981     1982      992      994
+   1       1981     1982      994     3345
+   1       1982      992      994      995
+   1       1982     3345      995      994
+   1       1969      136     1980     1991
+   1       1967     1980      134     1981
+   1       1971     1991     1981      351
+   1       1969     1967     1971     1991
+   1       1969     1967     1991     1980
+   1       1967     1971     1991     1981
+   1       1967     1980     1981     1991
+   1       1969      136     1991     1992
+   1       1973     1992     3343      353
+   1       1971     1991      351     3343
+   1       1969     1973     1991     1971
+   1       1969     1973     1992     1991
+   1       1973     1971     3343     1991
+   1       1973     1992     1991     3343
+   1       1980      134     1981     1982
+   1       1991     1981      351     3345
+   1       1995     1982     3345      364
+   1       1980     1991     1995     1982
+   1       1980     1991     1982     1981
+   1       1991     1995     1982     3345
+   1       1991     1981     3345     1982
+   1       1992      353     3358     3343
+   1       1991     3343     3345      351
+   1       1995     3358      364     3345
+   1       1992     1991     3358     1995
+   1       1992     1991     3343     3358
+   1       1991     1995     3345     3358
+   1       1991     3343     3358     3345
+   1        926       28      929      930
+   1       1942      929      323     3215
+   1       1943      930     3215      324
+   1        926     1942     1943      930
+   1        926     1942      930      929
+   1       1942     1943      930     3215
+   1       1942      929     3215      930
+   1       1948      323      942     3218
+   1        940      942       30      943
+   1       1950     3218      943      331
+   1       1948      940     1950     3218
+   1       1948      940     3218      942
+   1        940     1950     3218      943
+   1        940      942      943     3218
+   1       1952      324     3224      949
+   1       1954     3224      331      951
+   1        947      949      951       31
+   1       1952     1954      947      949
+   1       1952     1954      949     3224
+   1       1954      947      949      951
+   1       1954     3224      951      949
+   1       1939      128     1947     1949
+   1       1940     1947      129     1952
+   1       1943     1949     1952      324
+   1       1939     1940     1943     1949
+   1       1939     1940     1949     1947
+   1       1940     1943     1949     1952
+   1       1940     1947     1952     1949
+   1       1939      128     1949     1948
+   1       1942     1948     3215      323
+   1       1943     1949      324     3215
+   1       1939     1942     1949     1943
+   1       1939     1942     1948     1949
+   1       1942     1943     3215     1949
+   1       1942     1948     1949     3215
+   1       1947      129     1952     1954
+   1       1949     1952      324     3224
+   1       1950     1954     3224      331
+   1       1947     1949     1950     1954
+   1       1947     1949     1954     1952
+   1       1949     1950     1954     3224
+   1       1949     1952     3224     1954
+   1       1948      323     3218     3215
+   1       1949     3215     3224      324
+   1       1950     3218      331     3224
+   1       1948     1949     3218     1950
+   1       1948     1949     3215     3218
+   1       1949     1950     3224     3218
+   1       1949     3215     3218     3224
+   1        926       28      930      928
+   1       1943      930      324     3210
+   1       1941      928     3210      322
+   1        926     1943     1941      928
+   1        926     1943      928      930
+   1       1943     1941      928     3210
+   1       1943      930     3210      928
+   1       1952      324      949     3223
+   1        947      949       31      950
+   1       1953     3223      950      328
+   1       1952      947     1953     3223
+   1       1952      947     3223      949
+   1        947     1953     3223      950
+   1        947      949      950     3223
+   1       1945      322     3212      936
+   1       1946     3212      328      937
+   1        934      936      937       29
+   1       1945     1946      934      936
+   1       1945     1946      936     3212
+   1       1946      934      936      937
+   1       1946     3212      937      936
+   1       1940      129     1944     1951
+   1       1938     1944      127     1945
+   1       1941     1951     1945      322
+   1       1940     1938     1941     1951
+   1       1940     1938     1951     1944
+   1       1938     1941     1951     1945
+   1       1938     1944     1945     1951
+   1       1940      129     1951     1952
+   1       1943     1952     3210      324
+   1       1941     1951      322     3210
+   1       1940     1943     1951     1941
+   1       1940     1943     1952     1951
+   1       1943     1941     3210     1951
+   1       1943     1952     1951     3210
+   1       1944      127     1945     1946
+   1       1951     1945      322     3212
+   1       1953     1946     3212      328
+   1       1944     1951     1953     1946
+   1       1944     1951     1946     1945
+   1       1951     1953     1946     3212
+   1       1951     1945     3212     1946
+   1       1952      324     3223     3210
+   1       1951     3210     3212      322
+   1       1953     3223      328     3212
+   1       1952     1951     3223     1953
+   1       1952     1951     3210     3223
+   1       1951     1953     3212     3223
+   1       1951     3210     3223     3212
+   1       1096       48     1102     1101
+   1       2465     1102      427     3685
+   1       2464     1101     3685      426
+   1       1096     2465     2464     1101
+   1       1096     2465     1101     1102
+   1       2465     2464     1101     3685
+   1       2465     1102     3685     1101
+   1       2513      427     1620     3694
+   1       1618     1620       98     1624
+   1       2516     3694     1624      649
+   1       2513     1618     2516     3694
+   1       2513     1618     3694     1620
+   1       1618     2516     3694     1624
+   1       1618     1620     1624     3694
+   1       2506      426     3690     1606
+   1       2511     3690      649     1612
+   1       1604     1606     1612       97
+   1       2506     2511     1604     1606
+   1       2506     2511     1606     3690
+   1       2511     1604     1606     1612
+   1       2511     3690     1612     1606
+   1       2462      221     2505     2512
+   1       2461     2505      220     2506
+   1       2464     2512     2506      426
+   1       2462     2461     2464     2512
+   1       2462     2461     2512     2505
+   1       2461     2464     2512     2506
+   1       2461     2505     2506     2512
+   1       2462      221     2512     2513
+   1       2465     2513     3685      427
+   1       2464     2512      426     3685
+   1       2462     2465     2512     2464
+   1       2462     2465     2513     2512
+   1       2465     2464     3685     2512
+   1       2465     2513     2512     3685
+   1       2505      220     2506     2511
+   1       2512     2506      426     3690
+   1       2516     2511     3690      649
+   1       2505     2512     2516     2511
+   1       2505     2512     2511     2506
+   1       2512     2516     2511     3690
+   1       2512     2506     3690     2511
+   1       2513      427     3694     3685
+   1       2512     3685     3690      426
+   1       2516     3694      649     3690
+   1       2513     2512     3694     2516
+   1       2513     2512     3685     3694
+   1       2512     2516     3690     3694
+   1       2512     3685     3694     3690
+   1       1784      111     1786     1791
+   1       2762     1786      489     3978
+   1       2765     1791     3978      710
+   1       1784     2762     2765     1791
+   1       1784     2762     1791     1786
+   1       2762     2765     1791     3978
+   1       2762     1786     3978     1791
+   1       2695      489     1208     3975
+   1       1202     1208       61     1210
+   1       2697     3975     1210      491
+   1       2695     1202     2697     3975
+   1       2695     1202     3975     1208
+   1       1202     2697     3975     1210
+   1       1202     1208     1210     3975
+   1       2776      710     3988     1814
+   1       2771     3988      491     1806
+   1       1804     1814     1806      113
+   1       2776     2771     1804     1814
+   1       2776     2771     1814     3988
+   1       2771     1804     1814     1806
+   1       2771     3988     1806     1814
+   1       2691      243     2693     2699
+   1       2761     2693      253     2776
+   1       2765     2699     2776      710
+   1       2691     2761     2765     2699
+   1       2691     2761     2699     2693
+   1       2761     2765     2699     2776
+   1       2761     2693     2776     2699
+   1       2691      243     2699     2695
+   1       2762     2695     3978      489
+   1       2765     2699      710     3978
+   1       2691     2762     2699     2765
+   1       2691     2762     2695     2699
+   1       2762     2765     3978     2699
+   1       2762     2695     2699     3978
+   1       2693      253     2776     2771
+   1       2699     2776      710     3988
+   1       2697     2771     3988      491
+   1       2693     2699     2697     2771
+   1       2693     2699     2771     2776
+   1       2699     2697     2771     3988
+   1       2699     2776     3988     2771
+   1       2695      489     3975     3978
+   1       2699     3978     3988      710
+   1       2697     3975      491     3988
+   1       2695     2699     3975     2697
+   1       2695     2699     3978     3975
+   1       2699     2697     3988     3975
+   1       2699     3978     3975     3988
+   1       1714      106     1724     1716
+   1       2672     1724      686     3869
+   1       2667     1716     3869      464
+   1       1714     2672     2667     1716
+   1       1714     2672     1716     1724
+   1       2672     2667     1716     3869
+   1       2672     1724     3869     1716
+   1       2679      686     1736     3874
+   1       1728     1736      107     1730
+   1       2674     3874     1730      465
+   1       2679     1728     2674     3874
+   1       2679     1728     3874     1736
+   1       1728     2674     3874     1730
+   1       1728     1736     1730     3874
+   1       2568      464     3864     1164
+   1       2569     3864      465     1165
+   1       1154     1164     1165       56
+   1       2568     2569     1154     1164
+   1       2568     2569     1164     3864
+   1       2569     1154     1164     1165
+   1       2569     3864     1165     1164
+   1       2665      241     2564     2673
+   1       2563     2564      229     2568
+   1       2667     2673     2568      464
+   1       2665     2563     2667     2673
+   1       2665     2563     2673     2564
+   1       2563     2667     2673     2568
+   1       2563     2564     2568     2673
+   1       2665      241     2673     2679
+   1       2672     2679     3869      686
+   1       2667     2673      464     3869
+   1       2665     2672     2673     2667
+   1       2665     2672     2679     2673
+   1       2672     2667     3869     2673
+   1       2672     2679     2673     3869
+   1       2564      229     2568     2569
+   1       2673     2568      464     3864
+   1       2674     2569     3864      465
+   1       2564     2673     2674     2569
+   1       2564     2673     2569     2568
+   1       2673     2674     2569     3864
+   1       2673     2568     3864     2569
+   1       2679      686     3874     3869
+   1       2673     3869     3864      464
+   1       2674     3874      465     3864
+   1       2679     2673     3874     2674
+   1       2679     2673     3869     3874
+   1       2673     2674     3864     3874
+   1       2673     3869     3874     3864
+   1       1570       94     1574     1575
+   1       2487     1574      627     4544
+   1       2488     1575     4544      634
+   1       1570     2487     2488     1575
+   1       1570     2487     1575     1574
+   1       2487     2488     1575     4544
+   1       2487     1574     4544     1575
+   1       2480      627     1563     4541
+   1       1556     1563       93     1565
+   1       2482     4541     1565      629
+   1       2480     1556     2482     4541
+   1       2480     1556     4541     1563
+   1       1556     2482     4541     1565
+   1       1556     1563     1565     4541
+   1       2508      634     4555     1609
+   1       2507     4555      629     1608
+   1       1604     1609     1608       97
+   1       2508     2507     1604     1609
+   1       2508     2507     1609     4555
+   1       2507     1604     1609     1608
+   1       2507     4555     1608     1609
+   1       2474      216     2476     2483
+   1       2484     2476      220     2508
+   1       2488     2483     2508      634
+   1       2474     2484     2488     2483
+   1       2474     2484     2483     2476
+   1       2484     2488     2483     2508
+   1       2484     2476     2508     2483
+   1       2474      216     2483     2480
+   1       2487     2480     4544      627
+   1       2488     2483      634     4544
+   1       2474     2487     2483     2488
+   1       2474     2487     2480     2483
+   1       2487     2488     4544     2483
+   1       2487     2480     2483     4544
+   1       2476      220     2508     2507
+   1       2483     2508      634     4555
+   1       2482     2507     4555      629
+   1       2476     2483     2482     2507
+   1       2476     2483     2507     2508
+   1       2483     2482     2507     4555
+   1       2483     2508     4555     2507
+   1       2480      627     4541     4544
+   1       2483     4544     4555      634
+   1       2482     4541      629     4555
+   1       2480     2483     4541     2482
+   1       2480     2483     4544     4541
+   1       2483     2482     4555     4541
+   1       2483     4544     4541     4555
+   1       1570       94     1575     1576
+   1       2489     1576     4583      635
+   1       2488     1575      634     4583
+   1       1570     2489     1575     2488
+   1       1570     2489     1576     1575
+   1       2489     2488     4583     1575
+   1       2489     1576     1575     4583
+   1       2515      635     4590     1623
+   1       1618     1623     1624       98
+   1       2516     4590      649     1624
+   1       2515     1618     4590     2516
+   1       2515     1618     1623     4590
+   1       1618     2516     1624     4590
+   1       1618     1623     4590     1624
+   1       2508      634     1609     4585
+   1       2511     4585     1612      649
+   1       1604     1609       97     1612
+   1       2508     2511     1609     1604
+   1       2508     2511     4585     1609
+   1       2511     1604     1612     1609
+   1       2511     4585     1609     1612
+   1       2485      221     2514     2505
+   1       2484     2505     2508      220
+   1       2488     2514      634     2508
+   1       2485     2484     2514     2488
+   1       2485     2484     2505     2514
+   1       2484     2488     2508     2514
+   1       2484     2505     2514     2508
+   1       2485      221     2515     2514
+   1       2489     2515      635     4583
+   1       2488     2514     4583      634
+   1       2485     2489     2488     2514
+   1       2485     2489     2514     2515
+   1       2489     2488     2514     4583
+   1       2489     2515     4583     2514
+   1       2505      220     2511     2508
+   1       2514     2508     4585      634
+   1       2516     2511      649     4585
+   1       2505     2514     2511     2516
+   1       2505     2514     2508     2511
+   1       2514     2516     4585     2511
+   1       2514     2508     2511     4585
+   1       2515      635     4583     4590
+   1       2514     4583      634     4585
+   1       2516     4590     4585      649
+   1       2515     2514     2516     4590
+   1       2515     2514     4590     4583
+   1       2514     2516     4590     4585
+   1       2514     4583     4585     4590
+   1       1659      102     1670     1671
+   1       2731     1670      672     4739
+   1       2732     1671     4739      673
+   1       1659     2731     2732     1671
+   1       1659     2731     1671     1670
+   1       2731     2732     1671     4739
+   1       2731     1670     4739     1671
+   1       2756      672     1776     4742
+   1       1770     1776      110     1780
+   1       2759     4742     1780      706
+   1       2756     1770     2759     4742
+   1       2756     1770     4742     1776
+   1       1770     2759     4742     1780
+   1       1770     1776     1780     4742
+   1       2773      673     4747     1809
+   1       2775     4747      706     1813
+   1       1804     1809     1813      113
+   1       2773     2775     1804     1809
+   1       2773     2775     1809     4747
+   1       2775     1804     1809     1813
+   1       2775     4747     1813     1809
+   1       2725      250     2752     2757
+   1       2726     2752      253     2773
+   1       2732     2757     2773      673
+   1       2725     2726     2732     2757
+   1       2725     2726     2757     2752
+   1       2726     2732     2757     2773
+   1       2726     2752     2773     2757
+   1       2725      250     2757     2756
+   1       2731     2756     4739      672
+   1       2732     2757      673     4739
+   1       2725     2731     2757     2732
+   1       2725     2731     2756     2757
+   1       2731     2732     4739     2757
+   1       2731     2756     2757     4739
+   1       2752      253     2773     2775
+   1       2757     2773      673     4747
+   1       2759     2775     4747      706
+   1       2752     2757     2759     2775
+   1       2752     2757     2775     2773
+   1       2757     2759     2775     4747
+   1       2757     2773     4747     2775
+   1       2756      672     4742     4739
+   1       2757     4739     4747      673
+   1       2759     4742      706     4747
+   1       2756     2757     4742     2759
+   1       2756     2757     4739     4742
+   1       2757     2759     4747     4742
+   1       2757     4739     4742     4747
+   1       1784      111     1791     1790
+   1       2764     1790     4865      705
+   1       2765     1791      710     4865
+   1       1784     2764     1791     2765
+   1       1784     2764     1790     1791
+   1       2764     2765     4865     1791
+   1       2764     1790     1791     4865
+   1       2758      705     4862     1779
+   1       1770     1779     1780      110
+   1       2759     4862      706     1780
+   1       2758     1770     4862     2759
+   1       2758     1770     1779     4862
+   1       1770     2759     1780     4862
+   1       1770     1779     4862     1780
+   1       2776      710     1814     4870
+   1       2775     4870     1813      706
+   1       1804     1814      113     1813
+   1       2776     2775     1814     1804
+   1       2776     2775     4870     1814
+   1       2775     1804     1813     1814
+   1       2775     4870     1814     1813
+   1       2751      250     2760     2752
+   1       2761     2752     2776      253
+   1       2765     2760      710     2776
+   1       2751     2761     2760     2765
+   1       2751     2761     2752     2760
+   1       2761     2765     2776     2760
+   1       2761     2752     2760     2776
+   1       2751      250     2758     2760
+   1       2764     2758      705     4865
+   1       2765     2760     4865      710
+   1       2751     2764     2765     2760
+   1       2751     2764     2760     2758
+   1       2764     2765     2760     4865
+   1       2764     2758     4865     2760
+   1       2752      253     2775     2776
+   1       2760     2776     4870      710
+   1       2759     2775      706     4870
+   1       2752     2760     2775     2759
+   1       2752     2760     2776     2775
+   1       2760     2759     4870     2775
+   1       2760     2776     2775     4870
+   1       2758      705     4865     4862
+   1       2760     4865      710     4870
+   1       2759     4862     4870      706
+   1       2758     2760     2759     4862
+   1       2758     2760     4862     4865
+   1       2760     2759     4862     4870
+   1       2760     4865     4870     4862
+   1       1062       44     1069     1070
+   1       2392     1069      408     3608
+   1       2393     1070     3608      409
+   1       1062     2392     2393     1070
+   1       1062     2392     1070     1069
+   1       2392     2393     1070     3608
+   1       2392     1069     3608     1070
+   1       2439      408     1531     3612
+   1       1528     1531       91     1538
+   1       2445     3612     1538      618
+   1       2439     1528     2445     3612
+   1       2439     1528     3612     1531
+   1       1528     2445     3612     1538
+   1       1528     1531     1538     3612
+   1       2447      409     3617     1544
+   1       2452     3617      618     1550
+   1       1542     1544     1550       92
+   1       2447     2452     1542     1544
+   1       2447     2452     1544     3617
+   1       2452     1542     1544     1550
+   1       2452     3617     1550     1544
+   1       2388      211     2437     2440
+   1       2389     2437      212     2447
+   1       2393     2440     2447      409
+   1       2388     2389     2393     2440
+   1       2388     2389     2440     2437
+   1       2389     2393     2440     2447
+   1       2389     2437     2447     2440
+   1       2388      211     2440     2439
+   1       2392     2439     3608      408
+   1       2393     2440      409     3608
+   1       2388     2392     2440     2393
+   1       2388     2392     2439     2440
+   1       2392     2393     3608     2440
+   1       2392     2439     2440     3608
+   1       2437      212     2447     2452
+   1       2440     2447      409     3617
+   1       2445     2452     3617      618
+   1       2437     2440     2445     2452
+   1       2437     2440     2452     2447
+   1       2440     2445     2452     3617
+   1       2440     2447     3617     2452
+   1       2439      408     3612     3608
+   1       2440     3608     3617      409
+   1       2445     3612      618     3617
+   1       2439     2440     3612     2445
+   1       2439     2440     3608     3612
+   1       2440     2445     3617     3612
+   1       2440     3608     3612     3617
+   1       1686      104     1688     1697
+   1       2650     1688      463     3862
+   1       2655     1697     3862      677
+   1       1686     2650     2655     1697
+   1       1686     2650     1697     1688
+   1       2650     2655     1697     3862
+   1       2650     1688     3862     1697
+   1       2567      463     1163     3857
+   1       1154     1163       56     1165
+   1       2569     3857     1165      465
+   1       2567     1154     2569     3857
+   1       2567     1154     3857     1163
+   1       1154     2569     3857     1165
+   1       1154     1163     1165     3857
+   1       2677      677     3873     1734
+   1       2674     3873      465     1730
+   1       1728     1734     1730      107
+   1       2677     2674     1728     1734
+   1       2677     2674     1734     3873
+   1       2674     1728     1734     1730
+   1       2674     3873     1730     1734
+   1       2562      229     2564     2571
+   1       2649     2564      241     2677
+   1       2655     2571     2677      677
+   1       2562     2649     2655     2571
+   1       2562     2649     2571     2564
+   1       2649     2655     2571     2677
+   1       2649     2564     2677     2571
+   1       2562      229     2571     2567
+   1       2650     2567     3862      463
+   1       2655     2571      677     3862
+   1       2562     2650     2571     2655
+   1       2562     2650     2567     2571
+   1       2650     2655     3862     2571
+   1       2650     2567     2571     3862
+   1       2564      241     2677     2674
+   1       2571     2677      677     3873
+   1       2569     2674     3873      465
+   1       2564     2571     2569     2674
+   1       2564     2571     2674     2677
+   1       2571     2569     2674     3873
+   1       2571     2677     3873     2674
+   1       2567      463     3857     3862
+   1       2571     3862     3873      677
+   1       2569     3857      465     3873
+   1       2567     2571     3857     2569
+   1       2567     2571     3862     3857
+   1       2571     2569     3873     3857
+   1       2571     3862     3857     3873
+   1       1756      109     1766     1758
+   1       2750     1766      701     3973
+   1       2745     1758     3973      488
+   1       1756     2750     2745     1758
+   1       1756     2750     1758     1766
+   1       2750     2745     1758     3973
+   1       2750     1766     3973     1758
+   1       2774      701     1812     3987
+   1       1804     1812      113     1806
+   1       2771     3987     1806      491
+   1       2774     1804     2771     3987
+   1       2774     1804     3987     1812
+   1       1804     2771     3987     1806
+   1       1804     1812     1806     3987
+   1       2694      488     3968     1207
+   1       2697     3968      491     1210
+   1       1202     1207     1210       61
+   1       2694     2697     1202     1207
+   1       2694     2697     1207     3968
+   1       2697     1202     1207     1210
+   1       2697     3968     1210     1207
+   1       2744      253     2693     2770
+   1       2690     2693      243     2694
+   1       2745     2770     2694      488
+   1       2744     2690     2745     2770
+   1       2744     2690     2770     2693
+   1       2690     2745     2770     2694
+   1       2690     2693     2694     2770
+   1       2744      253     2770     2774
+   1       2750     2774     3973      701
+   1       2745     2770      488     3973
+   1       2744     2750     2770     2745
+   1       2744     2750     2774     2770
+   1       2750     2745     3973     2770
+   1       2750     2774     2770     3973
+   1       2693      243     2694     2697
+   1       2770     2694      488     3968
+   1       2771     2697     3968      491
+   1       2693     2770     2771     2697
+   1       2693     2770     2697     2694
+   1       2770     2771     2697     3968
+   1       2770     2694     3968     2697
+   1       2774      701     3987     3973
+   1       2770     3973     3968      488
+   1       2771     3987      491     3968
+   1       2774     2770     3987     2771
+   1       2774     2770     3973     3987
+   1       2770     2771     3968     3987
+   1       2770     3973     3987     3968
+   1       1490       88     1498     1500
+   1       2420     1498      601     4430
+   1       2422     1500     4430      603
+   1       1490     2420     2422     1500
+   1       1490     2420     1500     1498
+   1       2420     2422     1500     4430
+   1       2420     1498     4430     1500
+   1       2428      601     1510     4433
+   1       1504     1510       89     1512
+   1       2431     4433     1512      608
+   1       2428     1504     2431     4433
+   1       2428     1504     4433     1510
+   1       1504     2431     4433     1512
+   1       1504     1510     1512     4433
+   1       2448      603     4443     1547
+   1       2450     4443      608     1548
+   1       1542     1547     1548       92
+   1       2448     2450     1542     1547
+   1       2448     2450     1547     4443
+   1       2450     1542     1547     1548
+   1       2450     4443     1548     1547
+   1       2414      209     2424     2429
+   1       2416     2424      212     2448
+   1       2422     2429     2448      603
+   1       2414     2416     2422     2429
+   1       2414     2416     2429     2424
+   1       2416     2422     2429     2448
+   1       2416     2424     2448     2429
+   1       2414      209     2429     2428
+   1       2420     2428     4430      601
+   1       2422     2429      603     4430
+   1       2414     2420     2429     2422
+   1       2414     2420     2428     2429
+   1       2420     2422     4430     2429
+   1       2420     2428     2429     4430
+   1       2424      212     2448     2450
+   1       2429     2448      603     4443
+   1       2431     2450     4443      608
+   1       2424     2429     2431     2450
+   1       2424     2429     2450     2448
+   1       2429     2431     2450     4443
+   1       2429     2448     4443     2450
+   1       2428      601     4433     4430
+   1       2429     4430     4443      603
+   1       2431     4433      608     4443
+   1       2428     2429     4433     2431
+   1       2428     2429     4430     4433
+   1       2429     2431     4443     4433
+   1       2429     4430     4433     4443
+   1       1490       88     1500     1499
+   1       2421     1499     4436      602
+   1       2422     1500      603     4436
+   1       1490     2421     1500     2422
+   1       1490     2421     1499     1500
+   1       2421     2422     4436     1500
+   1       2421     1499     1500     4436
+   1       2443      602     4439     1537
+   1       1528     1537     1538       91
+   1       2445     4439      618     1538
+   1       2443     1528     4439     2445
+   1       2443     1528     1537     4439
+   1       1528     2445     1538     4439
+   1       1528     1537     4439     1538
+   1       2448      603     1547     4445
+   1       2452     4445     1550      618
+   1       1542     1547       92     1550
+   1       2448     2452     1547     1542
+   1       2448     2452     4445     1547
+   1       2452     1542     1550     1547
+   1       2452     4445     1547     1550
+   1       2415      211     2444     2437
+   1       2416     2437     2448      212
+   1       2422     2444      603     2448
+   1       2415     2416     2444     2422
+   1       2415     2416     2437     2444
+   1       2416     2422     2448     2444
+   1       2416     2437     2444     2448
+   1       2415      211     2443     2444
+   1       2421     2443      602     4436
+   1       2422     2444     4436      603
+   1       2415     2421     2422     2444
+   1       2415     2421     2444     2443
+   1       2421     2422     2444     4436
+   1       2421     2443     4436     2444
+   1       2437      212     2452     2448
+   1       2444     2448     4445      603
+   1       2445     2452      618     4445
+   1       2437     2444     2452     2445
+   1       2437     2444     2448     2452
+   1       2444     2445     4445     2452
+   1       2444     2448     2452     4445
+   1       2443      602     4436     4439
+   1       2444     4436      603     4445
+   1       2445     4439     4445      618
+   1       2443     2444     2445     4439
+   1       2443     2444     4439     4436
+   1       2444     2445     4439     4445
+   1       2444     4436     4445     4439
+   1       1658      102     1666     1668
+   1       2637     1666      668     4717
+   1       2639     1668     4717      670
+   1       1658     2637     2639     1668
+   1       1658     2637     1668     1666
+   1       2637     2639     1668     4717
+   1       2637     1666     4717     1668
+   1       2660      668     1706     4720
+   1       1700     1706      105     1708
+   1       2664     4720     1708      680
+   1       2660     1700     2664     4720
+   1       2660     1700     4720     1706
+   1       1700     2664     4720     1708
+   1       1700     1706     1708     4720
+   1       2676      670     4730     1733
+   1       2678     4730      680     1735
+   1       1728     1733     1735      107
+   1       2676     2678     1728     1733
+   1       2676     2678     1733     4730
+   1       2678     1728     1733     1735
+   1       2678     4730     1735     1733
+   1       2631      239     2656     2661
+   1       2633     2656      241     2676
+   1       2639     2661     2676      670
+   1       2631     2633     2639     2661
+   1       2631     2633     2661     2656
+   1       2633     2639     2661     2676
+   1       2633     2656     2676     2661
+   1       2631      239     2661     2660
+   1       2637     2660     4717      668
+   1       2639     2661      670     4717
+   1       2631     2637     2661     2639
+   1       2631     2637     2660     2661
+   1       2637     2639     4717     2661
+   1       2637     2660     2661     4717
+   1       2656      241     2676     2678
+   1       2661     2676      670     4730
+   1       2664     2678     4730      680
+   1       2656     2661     2664     2678
+   1       2656     2661     2678     2676
+   1       2661     2664     2678     4730
+   1       2661     2676     4730     2678
+   1       2660      668     4720     4717
+   1       2661     4717     4730      670
+   1       2664     4720      680     4730
+   1       2660     2661     4720     2664
+   1       2660     2661     4717     4720
+   1       2661     2664     4730     4720
+   1       2661     4717     4720     4730
+   1       1686      104     1697     1696
+   1       2654     1696     4751      676
+   1       2655     1697      677     4751
+   1       1686     2654     1697     2655
+   1       1686     2654     1696     1697
+   1       2654     2655     4751     1697
+   1       2654     1696     1697     4751
+   1       2662      676     4754     1707
+   1       1700     1707     1708      105
+   1       2664     4754      680     1708
+   1       2662     1700     4754     2664
+   1       2662     1700     1707     4754
+   1       1700     2664     1708     4754
+   1       1700     1707     4754     1708
+   1       2677      677     1734     4758
+   1       2678     4758     1735      680
+   1       1728     1734      107     1735
+   1       2677     2678     1734     1728
+   1       2677     2678     4758     1734
+   1       2678     1728     1735     1734
+   1       2678     4758     1734     1735
+   1       2648      239     2663     2656
+   1       2649     2656     2677      241
+   1       2655     2663      677     2677
+   1       2648     2649     2663     2655
+   1       2648     2649     2656     2663
+   1       2649     2655     2677     2663
+   1       2649     2656     2663     2677
+   1       2648      239     2662     2663
+   1       2654     2662      676     4751
+   1       2655     2663     4751      677
+   1       2648     2654     2655     2663
+   1       2648     2654     2663     2662
+   1       2654     2655     2663     4751
+   1       2654     2662     4751     2663
+   1       2656      241     2678     2677
+   1       2663     2677     4758      677
+   1       2664     2678      680     4758
+   1       2656     2663     2678     2664
+   1       2656     2663     2677     2678
+   1       2663     2664     4758     2678
+   1       2663     2677     2678     4758
+   1       2662      676     4751     4754
+   1       2663     4751      677     4758
+   1       2664     4754     4758      680
+   1       2662     2663     2664     4754
+   1       2662     2663     4754     4751
+   1       2663     2664     4754     4758
+   1       2663     4751     4758     4754
+   1       1031       40     1037     1038
+   1       2325     1037      389     3524
+   1       2326     1038     3524      390
+   1       1031     2325     2326     1038
+   1       1031     2325     1038     1037
+   1       2325     2326     1038     3524
+   1       2325     1037     3524     1038
+   1       2367      389     1458     3527
+   1       1456     1458       85     1462
+   1       2371     3527     1462      589
+   1       2367     1456     2371     3527
+   1       2367     1456     3527     1458
+   1       1456     2371     3527     1462
+   1       1456     1458     1462     3527
+   1       2372      390     3532     1468
+   1       2377     3532      589     1476
+   1       1466     1468     1476       86
+   1       2372     2377     1466     1468
+   1       2372     2377     1468     3532
+   1       2377     1466     1468     1476
+   1       2377     3532     1476     1468
+   1       2322      201     2366     2368
+   1       2323     2366      202     2372
+   1       2326     2368     2372      390
+   1       2322     2323     2326     2368
+   1       2322     2323     2368     2366
+   1       2323     2326     2368     2372
+   1       2323     2366     2372     2368
+   1       2322      201     2368     2367
+   1       2325     2367     3524      389
+   1       2326     2368      390     3524
+   1       2322     2325     2368     2326
+   1       2322     2325     2367     2368
+   1       2325     2326     3524     2368
+   1       2325     2367     2368     3524
+   1       2366      202     2372     2377
+   1       2368     2372      390     3532
+   1       2371     2377     3532      589
+   1       2366     2368     2371     2377
+   1       2366     2368     2377     2372
+   1       2368     2371     2377     3532
+   1       2368     2372     3532     2377
+   1       2367      389     3527     3524
+   1       2368     3524     3532      390
+   1       2371     3527      589     3532
+   1       2367     2368     3527     2371
+   1       2367     2368     3524     3527
+   1       2368     2371     3532     3527
+   1       2368     3524     3527     3532
+   1       1580       95     1582     1587
+   1       2492     1582      425     3683
+   1       2495     1587     3683      640
+   1       1580     2492     2495     1587
+   1       1580     2492     1587     1582
+   1       2492     2495     1587     3683
+   1       2492     1582     3683     1587
+   1       2463      425     1100     3680
+   1       1096     1100       48     1101
+   1       2464     3680     1101      426
+   1       2463     1096     2464     3680
+   1       2463     1096     3680     1100
+   1       1096     2464     3680     1101
+   1       1096     1100     1101     3680
+   1       2509      640     3689     1610
+   1       2506     3689      426     1606
+   1       1604     1610     1606       97
+   1       2509     2506     1604     1610
+   1       2509     2506     1610     3689
+   1       2506     1604     1610     1606
+   1       2506     3689     1606     1610
+   1       2460      214     2461     2466
+   1       2491     2461      220     2509
+   1       2495     2466     2509      640
+   1       2460     2491     2495     2466
+   1       2460     2491     2466     2461
+   1       2491     2495     2466     2509
+   1       2491     2461     2509     2466
+   1       2460      214     2466     2463
+   1       2492     2463     3683      425
+   1       2495     2466      640     3683
+   1       2460     2492     2466     2495
+   1       2460     2492     2463     2466
+   1       2492     2495     3683     2466
+   1       2492     2463     2466     3683
+   1       2461      220     2509     2506
+   1       2466     2509      640     3689
+   1       2464     2506     3689      426
+   1       2461     2466     2464     2506
+   1       2461     2466     2506     2509
+   1       2466     2464     2506     3689
+   1       2466     2509     3689     2506
+   1       2463      425     3680     3683
+   1       2466     3683     3689      640
+   1       2464     3680      426     3689
+   1       2463     2466     3680     2464
+   1       2463     2466     3683     3680
+   1       2466     2464     3689     3680
+   1       2466     3683     3680     3689
+   1       1672      103     1684     1675
+   1       2647     1684      674     3856
+   1       2642     1675     3856      462
+   1       1672     2647     2642     1675
+   1       1672     2647     1675     1684
+   1       2647     2642     1675     3856
+   1       2647     1684     3856     1675
+   1       2671      674     1723     3868
+   1       1714     1723      106     1716
+   1       2667     3868     1716      464
+   1       2671     1714     2667     3868
+   1       2671     1714     3868     1723
+   1       1714     2667     3868     1716
+   1       1714     1723     1716     3868
+   1       2566      462     3852     1162
+   1       2568     3852      464     1164
+   1       1154     1162     1164       56
+   1       2566     2568     1154     1162
+   1       2566     2568     1162     3852
+   1       2568     1154     1162     1164
+   1       2568     3852     1164     1162
+   1       2640      240     2563     2666
+   1       2561     2563      229     2566
+   1       2642     2666     2566      462
+   1       2640     2561     2642     2666
+   1       2640     2561     2666     2563
+   1       2561     2642     2666     2566
+   1       2561     2563     2566     2666
+   1       2640      240     2666     2671
+   1       2647     2671     3856      674
+   1       2642     2666      462     3856
+   1       2640     2647     2666     2642
+   1       2640     2647     2671     2666
+   1       2647     2642     3856     2666
+   1       2647     2671     2666     3856
+   1       2563      229     2566     2568
+   1       2666     2566      462     3852
+   1       2667     2568     3852      464
+   1       2563     2666     2667     2568
+   1       2563     2666     2568     2566
+   1       2666     2667     2568     3852
+   1       2666     2566     3852     2568
+   1       2671      674     3868     3856
+   1       2666     3856     3852      462
+   1       2667     3868      464     3852
+   1       2671     2666     3868     2667
+   1       2671     2666     3856     3868
+   1       2666     2667     3852     3868
+   1       2666     3856     3868     3852
+   1       1432       83     1436     1438
+   1       2355     1436      579     4331
+   1       2357     1438     4331      581
+   1       1432     2355     2357     1438
+   1       1432     2355     1438     1436
+   1       2355     2357     1438     4331
+   1       2355     1436     4331     1438
+   1       2363      579     1451     4334
+   1       1442     1451       84     1452
+   1       2365     4334     1452      585
+   1       2363     1442     2365     4334
+   1       2363     1442     4334     1451
+   1       1442     2365     4334     1452
+   1       1442     1451     1452     4334
+   1       2375      581     4344     1474
+   1       2376     4344      585     1475
+   1       1466     1474     1475       86
+   1       2375     2376     1466     1474
+   1       2375     2376     1474     4344
+   1       2376     1466     1474     1475
+   1       2376     4344     1475     1474
+   1       2351      200     2358     2364
+   1       2353     2358      202     2375
+   1       2357     2364     2375      581
+   1       2351     2353     2357     2364
+   1       2351     2353     2364     2358
+   1       2353     2357     2364     2375
+   1       2353     2358     2375     2364
+   1       2351      200     2364     2363
+   1       2355     2363     4331      579
+   1       2357     2364      581     4331
+   1       2351     2355     2364     2357
+   1       2351     2355     2363     2364
+   1       2355     2357     4331     2364
+   1       2355     2363     2364     4331
+   1       2358      202     2375     2376
+   1       2364     2375      581     4344
+   1       2365     2376     4344      585
+   1       2358     2364     2365     2376
+   1       2358     2364     2376     2375
+   1       2364     2365     2376     4344
+   1       2364     2375     4344     2376
+   1       2363      579     4334     4331
+   1       2364     4331     4344      581
+   1       2365     4334      585     4344
+   1       2363     2364     4334     2365
+   1       2363     2364     4331     4334
+   1       2364     2365     4344     4334
+   1       2364     4331     4334     4344
+   1       1432       83     1438     1437
+   1       2356     1437     4337      580
+   1       2357     1438      581     4337
+   1       1432     2356     1438     2357
+   1       1432     2356     1437     1438
+   1       2356     2357     4337     1438
+   1       2356     1437     1438     4337
+   1       2369      580     4340     1461
+   1       1456     1461     1462       85
+   1       2371     4340      589     1462
+   1       2369     1456     4340     2371
+   1       2369     1456     1461     4340
+   1       1456     2371     1462     4340
+   1       1456     1461     4340     1462
+   1       2375      581     1474     4346
+   1       2377     4346     1476      589
+   1       1466     1474       86     1476
+   1       2375     2377     1474     1466
+   1       2375     2377     4346     1474
+   1       2377     1466     1476     1474
+   1       2377     4346     1474     1476
+   1       2352      201     2370     2366
+   1       2353     2366     2375      202
+   1       2357     2370      581     2375
+   1       2352     2353     2370     2357
+   1       2352     2353     2366     2370
+   1       2353     2357     2375     2370
+   1       2353     2366     2370     2375
+   1       2352      201     2369     2370
+   1       2356     2369      580     4337
+   1       2357     2370     4337      581
+   1       2352     2356     2357     2370
+   1       2352     2356     2370     2369
+   1       2356     2357     2370     4337
+   1       2356     2369     4337     2370
+   1       2366      202     2377     2375
+   1       2370     2375     4346      581
+   1       2371     2377      589     4346
+   1       2366     2370     2377     2371
+   1       2366     2370     2375     2377
+   1       2370     2371     4346     2377
+   1       2370     2375     2377     4346
+   1       2369      580     4337     4340
+   1       2370     4337      581     4346
+   1       2371     4340     4346      589
+   1       2369     2370     2371     4340
+   1       2369     2370     4340     4337
+   1       2370     2371     4340     4346
+   1       2370     4337     4346     4340
+   1       1556       93     1564     1565
+   1       2481     1564      628     4547
+   1       2482     1565     4547      629
+   1       1556     2481     2482     1565
+   1       1556     2481     1565     1564
+   1       2481     2482     1565     4547
+   1       2481     1564     4547     1565
+   1       2500      628     1596     4550
+   1       1590     1596       96     1598
+   1       2504     4550     1598      643
+   1       2500     1590     2504     4550
+   1       2500     1590     4550     1596
+   1       1590     2504     4550     1598
+   1       1590     1596     1598     4550
+   1       2507      629     4556     1608
+   1       2510     4556      643     1611
+   1       1604     1608     1611       97
+   1       2507     2510     1604     1608
+   1       2507     2510     1608     4556
+   1       2510     1604     1608     1611
+   1       2510     4556     1611     1608
+   1       2475      219     2496     2501
+   1       2476     2496      220     2507
+   1       2482     2501     2507      629
+   1       2475     2476     2482     2501
+   1       2475     2476     2501     2496
+   1       2476     2482     2501     2507
+   1       2476     2496     2507     2501
+   1       2475      219     2501     2500
+   1       2481     2500     4547      628
+   1       2482     2501      629     4547
+   1       2475     2481     2501     2482
+   1       2475     2481     2500     2501
+   1       2481     2482     4547     2501
+   1       2481     2500     2501     4547
+   1       2496      220     2507     2510
+   1       2501     2507      629     4556
+   1       2504     2510     4556      643
+   1       2496     2501     2504     2510
+   1       2496     2501     2510     2507
+   1       2501     2504     2510     4556
+   1       2501     2507     4556     2510
+   1       2500      628     4550     4547
+   1       2501     4547     4556      629
+   1       2504     4550      643     4556
+   1       2500     2501     4550     2504
+   1       2500     2501     4547     4550
+   1       2501     2504     4556     4550
+   1       2501     4547     4550     4556
+   1       1580       95     1587     1586
+   1       2494     1586     4603      639
+   1       2495     1587      640     4603
+   1       1580     2494     1587     2495
+   1       1580     2494     1586     1587
+   1       2494     2495     4603     1587
+   1       2494     1586     1587     4603
+   1       2502      639     4606     1597
+   1       1590     1597     1598       96
+   1       2504     4606      643     1598
+   1       2502     1590     4606     2504
+   1       2502     1590     1597     4606
+   1       1590     2504     1598     4606
+   1       1590     1597     4606     1598
+   1       2509      640     1610     4610
+   1       2510     4610     1611      643
+   1       1604     1610       97     1611
+   1       2509     2510     1610     1604
+   1       2509     2510     4610     1610
+   1       2510     1604     1611     1610
+   1       2510     4610     1610     1611
+   1       2490      219     2503     2496
+   1       2491     2496     2509      220
+   1       2495     2503      640     2509
+   1       2490     2491     2503     2495
+   1       2490     2491     2496     2503
+   1       2491     2495     2509     2503
+   1       2491     2496     2503     2509
+   1       2490      219     2502     2503
+   1       2494     2502      639     4603
+   1       2495     2503     4603      640
+   1       2490     2494     2495     2503
+   1       2490     2494     2503     2502
+   1       2494     2495     2503     4603
+   1       2494     2502     4603     2503
+   1       2496      220     2510     2509
+   1       2503     2509     4610      640
+   1       2504     2510      643     4610
+   1       2496     2503     2510     2504
+   1       2496     2503     2509     2510
+   1       2503     2504     4610     2510
+   1       2503     2509     2510     4610
+   1       2502      639     4603     4606
+   1       2503     4603      640     4610
+   1       2504     4606     4610      643
+   1       2502     2503     2504     4606
+   1       2502     2503     4606     4603
+   1       2503     2504     4606     4610
+   1       2503     4603     4610     4606
+   1       1062       44     1070     1068
+   1       2393     1070      409     3604
+   1       2391     1068     3604      407
+   1       1062     2393     2391     1068
+   1       1062     2393     1068     1070
+   1       2393     2391     1068     3604
+   1       2393     1070     3604     1068
+   1       2447      409     1544     3616
+   1       1542     1544       92     1549
+   1       2451     3616     1549      614
+   1       2447     1542     2451     3616
+   1       2447     1542     3616     1544
+   1       1542     2451     3616     1549
+   1       1542     1544     1549     3616
+   1       2433      407     3607     1520
+   1       2436     3607      614     1524
+   1       1518     1520     1524       90
+   1       2433     2436     1518     1520
+   1       2433     2436     1520     3607
+   1       2436     1518     1520     1524
+   1       2436     3607     1524     1520
+   1       2389      212     2432     2446
+   1       2387     2432      210     2433
+   1       2391     2446     2433      407
+   1       2389     2387     2391     2446
+   1       2389     2387     2446     2432
+   1       2387     2391     2446     2433
+   1       2387     2432     2433     2446
+   1       2389      212     2446     2447
+   1       2393     2447     3604      409
+   1       2391     2446      407     3604
+   1       2389     2393     2446     2391
+   1       2389     2393     2447     2446
+   1       2393     2391     3604     2446
+   1       2393     2447     2446     3604
+   1       2432      210     2433     2436
+   1       2446     2433      407     3607
+   1       2451     2436     3607      614
+   1       2432     2446     2451     2436
+   1       2432     2446     2436     2433
+   1       2446     2451     2436     3607
+   1       2446     2433     3607     2436
+   1       2447      409     3616     3604
+   1       2446     3604     3607      407
+   1       2451     3616      614     3607
+   1       2447     2446     3616     2451
+   1       2447     2446     3604     3616
+   1       2446     2451     3607     3616
+   1       2446     3604     3616     3607
+   1       1756      109     1758     1765
+   1       2745     1758      488     3972
+   1       2749     1765     3972      700
+   1       1756     2745     2749     1765
+   1       1756     2745     1765     1758
+   1       2745     2749     1765     3972
+   1       2745     1758     3972     1765
+   1       2694      488     1207     3967
+   1       1202     1207       61     1209
+   1       2696     3967     1209      490
+   1       2694     1202     2696     3967
+   1       2694     1202     3967     1207
+   1       1202     2696     3967     1209
+   1       1202     1207     1209     3967
+   1       2769      700     3982     1801
+   1       2766     3982      490     1796
+   1       1794     1801     1796      112
+   1       2769     2766     1794     1801
+   1       2769     2766     1801     3982
+   1       2766     1794     1801     1796
+   1       2766     3982     1796     1801
+   1       2690      243     2692     2698
+   1       2743     2692      252     2769
+   1       2749     2698     2769      700
+   1       2690     2743     2749     2698
+   1       2690     2743     2698     2692
+   1       2743     2749     2698     2769
+   1       2743     2692     2769     2698
+   1       2690      243     2698     2694
+   1       2745     2694     3972      488
+   1       2749     2698      700     3972
+   1       2690     2745     2698     2749
+   1       2690     2745     2694     2698
+   1       2745     2749     3972     2698
+   1       2745     2694     2698     3972
+   1       2692      252     2769     2766
+   1       2698     2769      700     3982
+   1       2696     2766     3982      490
+   1       2692     2698     2696     2766
+   1       2692     2698     2766     2769
+   1       2698     2696     2766     3982
+   1       2698     2769     3982     2766
+   1       2694      488     3967     3972
+   1       2698     3972     3982      700
+   1       2696     3967      490     3982
+   1       2694     2698     3967     2696
+   1       2694     2698     3972     3967
+   1       2698     2696     3982     3967
+   1       2698     3972     3967     3982
+   1       1638      100     1645     1640
+   1       2542     1645      662     3745
+   1       2539     1640     3745      441
+   1       1638     2542     2539     1640
+   1       1638     2542     1640     1645
+   1       2542     2539     1640     3745
+   1       2542     1645     3745     1640
+   1       2547      662     1654     3748
+   1       1648     1654      101     1650
+   1       2544     3748     1650      442
+   1       2547     1648     2544     3748
+   1       2547     1648     3748     1654
+   1       1648     2544     3748     1650
+   1       1648     1654     1650     3748
+   1       2523      441     3742     1129
+   1       2524     3742      442     1130
+   1       1126     1129     1130       52
+   1       2523     2524     1126     1129
+   1       2523     2524     1129     3742
+   1       2524     1126     1129     1130
+   1       2524     3742     1130     1129
+   1       2538      227     2522     2543
+   1       2521     2522      223     2523
+   1       2539     2543     2523      441
+   1       2538     2521     2539     2543
+   1       2538     2521     2543     2522
+   1       2521     2539     2543     2523
+   1       2521     2522     2523     2543
+   1       2538      227     2543     2547
+   1       2542     2547     3745      662
+   1       2539     2543      441     3745
+   1       2538     2542     2543     2539
+   1       2538     2542     2547     2543
+   1       2542     2539     3745     2543
+   1       2542     2547     2543     3745
+   1       2522      223     2523     2524
+   1       2543     2523      441     3742
+   1       2544     2524     3742      442
+   1       2522     2543     2544     2524
+   1       2522     2543     2524     2523
+   1       2543     2544     2524     3742
+   1       2543     2523     3742     2524
+   1       2547      662     3748     3745
+   1       2543     3745     3742      441
+   1       2544     3748      442     3742
+   1       2547     2543     3748     2544
+   1       2547     2543     3745     3748
+   1       2543     2544     3742     3748
+   1       2543     3745     3748     3742
+   1       1504       89     1509     1511
+   1       2427     1509      596     4405
+   1       2430     1511     4405      607
+   1       1504     2427     2430     1511
+   1       1504     2427     1511     1509
+   1       2427     2430     1511     4405
+   1       2427     1509     4405     1511
+   1       2411      596     1485     4402
+   1       1480     1485       87     1486
+   1       2412     4402     1486      597
+   1       2411     1480     2412     4402
+   1       2411     1480     4402     1485
+   1       1480     2412     4402     1486
+   1       1480     1485     1486     4402
+   1       2435      607     4410     1523
+   1       2434     4410      597     1522
+   1       1518     1523     1522       90
+   1       2435     2434     1518     1523
+   1       2435     2434     1523     4410
+   1       2434     1518     1523     1522
+   1       2434     4410     1522     1523
+   1       2407      207     2408     2413
+   1       2423     2408      210     2435
+   1       2430     2413     2435      607
+   1       2407     2423     2430     2413
+   1       2407     2423     2413     2408
+   1       2423     2430     2413     2435
+   1       2423     2408     2435     2413
+   1       2407      207     2413     2411
+   1       2427     2411     4405      596
+   1       2430     2413      607     4405
+   1       2407     2427     2413     2430
+   1       2407     2427     2411     2413
+   1       2427     2430     4405     2413
+   1       2427     2411     2413     4405
+   1       2408      210     2435     2434
+   1       2413     2435      607     4410
+   1       2412     2434     4410      597
+   1       2408     2413     2412     2434
+   1       2408     2413     2434     2435
+   1       2413     2412     2434     4410
+   1       2413     2435     4410     2434
+   1       2411      596     4402     4405
+   1       2413     4405     4410      607
+   1       2412     4402      597     4410
+   1       2411     2413     4402     2412
+   1       2411     2413     4405     4402
+   1       2413     2412     4410     4402
+   1       2413     4405     4402     4410
+   1       1504       89     1511     1512
+   1       2431     1512     4461      608
+   1       2430     1511      607     4461
+   1       1504     2431     1511     2430
+   1       1504     2431     1512     1511
+   1       2431     2430     4461     1511
+   1       2431     1512     1511     4461
+   1       2450      608     4469     1548
+   1       1542     1548     1549       92
+   1       2451     4469      614     1549
+   1       2450     1542     4469     2451
+   1       2450     1542     1548     4469
+   1       1542     2451     1549     4469
+   1       1542     1548     4469     1549
+   1       2435      607     1523     4463
+   1       2436     4463     1524      614
+   1       1518     1523       90     1524
+   1       2435     2436     1523     1518
+   1       2435     2436     4463     1523
+   1       2436     1518     1524     1523
+   1       2436     4463     1523     1524
+   1       2424      212     2449     2432
+   1       2423     2432     2435      210
+   1       2430     2449      607     2435
+   1       2424     2423     2449     2430
+   1       2424     2423     2432     2449
+   1       2423     2430     2435     2449
+   1       2423     2432     2449     2435
+   1       2424      212     2450     2449
+   1       2431     2450      608     4461
+   1       2430     2449     4461      607
+   1       2424     2431     2430     2449
+   1       2424     2431     2449     2450
+   1       2431     2430     2449     4461
+   1       2431     2450     4461     2449
+   1       2432      210     2436     2435
+   1       2449     2435     4463      607
+   1       2451     2436      614     4463
+   1       2432     2449     2436     2451
+   1       2432     2449     2435     2436
+   1       2449     2451     4463     2436
+   1       2449     2435     2436     4463
+   1       2450      608     4461     4469
+   1       2449     4461      607     4463
+   1       2451     4469     4463      614
+   1       2450     2449     2451     4469
+   1       2450     2449     4469     4461
+   1       2449     2451     4469     4463
+   1       2449     4461     4463     4469
+   1       1629       99     1636     1637
+   1       2722     1636      660     4690
+   1       2723     1637     4690      661
+   1       1629     2722     2723     1637
+   1       1629     2722     1637     1636
+   1       2722     2723     1637     4690
+   1       2722     1636     4690     1637
+   1       2738      660     1748     4693
+   1       1742     1748      108     1752
+   1       2741     4693     1752      696
+   1       2738     1742     2741     4693
+   1       2738     1742     4693     1748
+   1       1742     2741     4693     1752
+   1       1742     1748     1752     4693
+   1       2767      661     4696     1798
+   1       2768     4696      696     1800
+   1       1794     1798     1800      112
+   1       2767     2768     1794     1798
+   1       2767     2768     1798     4696
+   1       2768     1794     1798     1800
+   1       2768     4696     1800     1798
+   1       2718      248     2734     2739
+   1       2719     2734      252     2767
+   1       2723     2739     2767      661
+   1       2718     2719     2723     2739
+   1       2718     2719     2739     2734
+   1       2719     2723     2739     2767
+   1       2719     2734     2767     2739
+   1       2718      248     2739     2738
+   1       2722     2738     4690      660
+   1       2723     2739      661     4690
+   1       2718     2722     2739     2723
+   1       2718     2722     2738     2739
+   1       2722     2723     4690     2739
+   1       2722     2738     2739     4690
+   1       2734      252     2767     2768
+   1       2739     2767      661     4696
+   1       2741     2768     4696      696
+   1       2734     2739     2741     2768
+   1       2734     2739     2768     2767
+   1       2739     2741     2768     4696
+   1       2739     2767     4696     2768
+   1       2738      660     4693     4690
+   1       2739     4690     4696      661
+   1       2741     4693      696     4696
+   1       2738     2739     4693     2741
+   1       2738     2739     4690     4693
+   1       2739     2741     4696     4693
+   1       2739     4690     4693     4696
+   1       1756      109     1765     1764
+   1       2748     1764     4828      695
+   1       2749     1765      700     4828
+   1       1756     2748     1765     2749
+   1       1756     2748     1764     1765
+   1       2748     2749     4828     1765
+   1       2748     1764     1765     4828
+   1       2740      695     4825     1751
+   1       1742     1751     1752      108
+   1       2741     4825      696     1752
+   1       2740     1742     4825     2741
+   1       2740     1742     1751     4825
+   1       1742     2741     1752     4825
+   1       1742     1751     4825     1752
+   1       2769      700     1801     4833
+   1       2768     4833     1800      696
+   1       1794     1801      112     1800
+   1       2769     2768     1801     1794
+   1       2769     2768     4833     1801
+   1       2768     1794     1800     1801
+   1       2768     4833     1801     1800
+   1       2733      248     2742     2734
+   1       2743     2734     2769      252
+   1       2749     2742      700     2769
+   1       2733     2743     2742     2749
+   1       2733     2743     2734     2742
+   1       2743     2749     2769     2742
+   1       2743     2734     2742     2769
+   1       2733      248     2740     2742
+   1       2748     2740      695     4828
+   1       2749     2742     4828      700
+   1       2733     2748     2749     2742
+   1       2733     2748     2742     2740
+   1       2748     2749     2742     4828
+   1       2748     2740     4828     2742
+   1       2734      252     2768     2769
+   1       2742     2769     4833      700
+   1       2741     2768      696     4833
+   1       2734     2742     2768     2741
+   1       2734     2742     2769     2768
+   1       2742     2741     4833     2768
+   1       2742     2769     2768     4833
+   1       2740      695     4828     4825
+   1       2742     4828      700     4833
+   1       2741     4825     4833      696
+   1       2740     2742     2741     4825
+   1       2740     2742     4825     4828
+   1       2742     2741     4825     4833
+   1       2742     4828     4833     4825
+   1        957       32      962      963
+   1       2134      962      343     3303
+   1       2135      963     3303      344
+   1        957     2134     2135      963
+   1        957     2134      963      962
+   1       2134     2135      963     3303
+   1       2134      962     3303      963
+   1       2165      343     1288     3306
+   1       1286     1288       70     1292
+   1       2169     3306     1292      530
+   1       2165     1286     2169     3306
+   1       2165     1286     3306     1288
+   1       1286     2169     3306     1292
+   1       1286     1288     1292     3306
+   1       2171      344     3311     1298
+   1       2176     3311      530     1304
+   1       1296     1298     1304       71
+   1       2171     2176     1296     1298
+   1       2171     2176     1298     3311
+   1       2176     1296     1298     1304
+   1       2176     3311     1304     1298
+   1       2131      170     2164     2166
+   1       2132     2164      171     2171
+   1       2135     2166     2171      344
+   1       2131     2132     2135     2166
+   1       2131     2132     2166     2164
+   1       2132     2135     2166     2171
+   1       2132     2164     2171     2166
+   1       2131      170     2166     2165
+   1       2134     2165     3303      343
+   1       2135     2166      344     3303
+   1       2131     2134     2166     2135
+   1       2131     2134     2165     2166
+   1       2134     2135     3303     2166
+   1       2134     2165     2166     3303
+   1       2164      171     2171     2176
+   1       2166     2171      344     3311
+   1       2169     2176     3311      530
+   1       2164     2166     2169     2176
+   1       2164     2166     2176     2171
+   1       2166     2169     2176     3311
+   1       2166     2171     3311     2176
+   1       2165      343     3306     3303
+   1       2166     3303     3311      344
+   1       2169     3306      530     3311
+   1       2165     2166     3306     2169
+   1       2165     2166     3303     3306
+   1       2166     2169     3311     3306
+   1       2166     3303     3306     3311
+   1       1350       76     1352     1357
+   1       2233     1352      400     3570
+   1       2236     1357     3570      554
+   1       1350     2233     2236     1357
+   1       1350     2233     1357     1352
+   1       2233     2236     1357     3570
+   1       2233     1352     3570     1357
+   1       2215      400     1058     3567
+   1       1055     1058       43     1059
+   1       2216     3567     1059      401
+   1       2215     1055     2216     3567
+   1       2215     1055     3567     1058
+   1       1055     2216     3567     1059
+   1       1055     1058     1059     3567
+   1       2248      554     3574     1379
+   1       2246     3574      401     1376
+   1       1374     1379     1376       78
+   1       2248     2246     1374     1379
+   1       2248     2246     1379     3574
+   1       2246     1374     1379     1376
+   1       2246     3574     1376     1379
+   1       2213      179     2214     2217
+   1       2232     2214      184     2248
+   1       2236     2217     2248      554
+   1       2213     2232     2236     2217
+   1       2213     2232     2217     2214
+   1       2232     2236     2217     2248
+   1       2232     2214     2248     2217
+   1       2213      179     2217     2215
+   1       2233     2215     3570      400
+   1       2236     2217      554     3570
+   1       2213     2233     2217     2236
+   1       2213     2233     2215     2217
+   1       2233     2236     3570     2217
+   1       2233     2215     2217     3570
+   1       2214      184     2248     2246
+   1       2217     2248      554     3574
+   1       2216     2246     3574      401
+   1       2214     2217     2216     2246
+   1       2214     2217     2246     2248
+   1       2217     2216     2246     3574
+   1       2217     2248     3574     2246
+   1       2215      400     3567     3570
+   1       2217     3570     3574      554
+   1       2216     3567      401     3574
+   1       2215     2217     3567     2216
+   1       2215     2217     3570     3567
+   1       2217     2216     3574     3567
+   1       2217     3570     3567     3574
+   1       1398       80     1408     1400
+   1       2304     1408      572     3794
+   1       2299     1400     3794      452
+   1       1398     2304     2299     1400
+   1       1398     2304     1400     1408
+   1       2304     2299     1400     3794
+   1       2304     1408     3794     1400
+   1       2313      572     1430     3802
+   1       1422     1430       82     1424
+   1       2310     3802     1424      454
+   1       2313     1422     2310     3802
+   1       2313     1422     3802     1430
+   1       1422     2310     3802     1424
+   1       1422     1430     1424     3802
+   1       2260      452     3789     1149
+   1       2262     3789      454     1151
+   1       1145     1149     1151       55
+   1       2260     2262     1145     1149
+   1       2260     2262     1149     3789
+   1       2262     1145     1149     1151
+   1       2262     3789     1151     1149
+   1       2298      193     2259     2309
+   1       2257     2259      186     2260
+   1       2299     2309     2260      452
+   1       2298     2257     2299     2309
+   1       2298     2257     2309     2259
+   1       2257     2299     2309     2260
+   1       2257     2259     2260     2309
+   1       2298      193     2309     2313
+   1       2304     2313     3794      572
+   1       2299     2309      452     3794
+   1       2298     2304     2309     2299
+   1       2298     2304     2313     2309
+   1       2304     2299     3794     2309
+   1       2304     2313     2309     3794
+   1       2259      186     2260     2262
+   1       2309     2260      452     3789
+   1       2310     2262     3789      454
+   1       2259     2309     2310     2262
+   1       2259     2309     2262     2260
+   1       2309     2310     2262     3789
+   1       2309     2260     3789     2262
+   1       2313      572     3802     3794
+   1       2309     3794     3789      452
+   1       2310     3802      454     3789
+   1       2313     2309     3802     2310
+   1       2313     2309     3794     3802
+   1       2309     2310     3789     3802
+   1       2309     3794     3802     3789
+   1       1252       67     1256     1258
+   1       2147     1256      513     4072
+   1       2149     1258     4072      515
+   1       1252     2147     2149     1258
+   1       1252     2147     1258     1256
+   1       2147     2149     1258     4072
+   1       2147     1256     4072     1258
+   1       2155      513     1268     4075
+   1       1262     1268       68     1270
+   1       2158     4075     1270      520
+   1       2155     1262     2158     4075
+   1       2155     1262     4075     1268
+   1       1262     2158     4075     1270
+   1       1262     1268     1270     4075
+   1       2172      515     4085     1301
+   1       2174     4085      520     1302
+   1       1296     1301     1302       71
+   1       2172     2174     1296     1301
+   1       2172     2174     1301     4085
+   1       2174     1296     1301     1302
+   1       2174     4085     1302     1301
+   1       2143      168     2151     2156
+   1       2145     2151      171     2172
+   1       2149     2156     2172      515
+   1       2143     2145     2149     2156
+   1       2143     2145     2156     2151
+   1       2145     2149     2156     2172
+   1       2145     2151     2172     2156
+   1       2143      168     2156     2155
+   1       2147     2155     4072      513
+   1       2149     2156      515     4072
+   1       2143     2147     2156     2149
+   1       2143     2147     2155     2156
+   1       2147     2149     4072     2156
+   1       2147     2155     2156     4072
+   1       2151      171     2172     2174
+   1       2156     2172      515     4085
+   1       2158     2174     4085      520
+   1       2151     2156     2158     2174
+   1       2151     2156     2174     2172
+   1       2156     2158     2174     4085
+   1       2156     2172     4085     2174
+   1       2155      513     4075     4072
+   1       2156     4072     4085      515
+   1       2158     4075      520     4085
+   1       2155     2156     4075     2158
+   1       2155     2156     4072     4075
+   1       2156     2158     4085     4075
+   1       2156     4072     4075     4085
+   1       1252       67     1258     1257
+   1       2148     1257     4078      514
+   1       2149     1258      515     4078
+   1       1252     2148     1258     2149
+   1       1252     2148     1257     1258
+   1       2148     2149     4078     1258
+   1       2148     1257     1258     4078
+   1       2167      514     4081     1291
+   1       1286     1291     1292       70
+   1       2169     4081      530     1292
+   1       2167     1286     4081     2169
+   1       2167     1286     1291     4081
+   1       1286     2169     1292     4081
+   1       1286     1291     4081     1292
+   1       2172      515     1301     4087
+   1       2176     4087     1304      530
+   1       1296     1301       71     1304
+   1       2172     2176     1301     1296
+   1       2172     2176     4087     1301
+   1       2176     1296     1304     1301
+   1       2176     4087     1301     1304
+   1       2144      170     2168     2164
+   1       2145     2164     2172      171
+   1       2149     2168      515     2172
+   1       2144     2145     2168     2149
+   1       2144     2145     2164     2168
+   1       2145     2149     2172     2168
+   1       2145     2164     2168     2172
+   1       2144      170     2167     2168
+   1       2148     2167      514     4078
+   1       2149     2168     4078      515
+   1       2144     2148     2149     2168
+   1       2144     2148     2168     2167
+   1       2148     2149     2168     4078
+   1       2148     2167     4078     2168
+   1       2164      171     2176     2172
+   1       2168     2172     4087      515
+   1       2169     2176      530     4087
+   1       2164     2168     2176     2169
+   1       2164     2168     2172     2176
+   1       2168     2169     4087     2176
+   1       2168     2172     2176     4087
+   1       2167      514     4078     4081
+   1       2168     4078      515     4087
+   1       2169     4081     4087      530
+   1       2167     2168     2169     4081
+   1       2167     2168     4081     4078
+   1       2168     2169     4081     4087
+   1       2168     4078     4087     4081
+   1       1340       75     1346     1347
+   1       2229     1346      549     4220
+   1       2230     1347     4220      550
+   1       1340     2229     2230     1347
+   1       1340     2229     1347     1346
+   1       2229     2230     1347     4220
+   1       2229     1346     4220     1347
+   1       2241      549     1366     4223
+   1       1360     1366       77     1368
+   1       2245     4223     1368      557
+   1       2241     1360     2245     4223
+   1       2241     1360     4223     1366
+   1       1360     2245     4223     1368
+   1       1360     1366     1368     4223
+   1       2247      550     4227     1378
+   1       2249     4227      557     1380
+   1       1374     1378     1380       78
+   1       2247     2249     1374     1378
+   1       2247     2249     1378     4227
+   1       2249     1374     1378     1380
+   1       2249     4227     1380     1378
+   1       2225      183     2237     2242
+   1       2226     2237      184     2247
+   1       2230     2242     2247      550
+   1       2225     2226     2230     2242
+   1       2225     2226     2242     2237
+   1       2226     2230     2242     2247
+   1       2226     2237     2247     2242
+   1       2225      183     2242     2241
+   1       2229     2241     4220      549
+   1       2230     2242      550     4220
+   1       2225     2229     2242     2230
+   1       2225     2229     2241     2242
+   1       2229     2230     4220     2242
+   1       2229     2241     2242     4220
+   1       2237      184     2247     2249
+   1       2242     2247      550     4227
+   1       2245     2249     4227      557
+   1       2237     2242     2245     2249
+   1       2237     2242     2249     2247
+   1       2242     2245     2249     4227
+   1       2242     2247     4227     2249
+   1       2241      549     4223     4220
+   1       2242     4220     4227      550
+   1       2245     4223      557     4227
+   1       2241     2242     4223     2245
+   1       2241     2242     4220     4223
+   1       2242     2245     4227     4223
+   1       2242     4220     4223     4227
+   1       1350       76     1357     1356
+   1       2235     1356     4237      553
+   1       2236     1357      554     4237
+   1       1350     2235     1357     2236
+   1       1350     2235     1356     1357
+   1       2235     2236     4237     1357
+   1       2235     1356     1357     4237
+   1       2243      553     4240     1367
+   1       1360     1367     1368       77
+   1       2245     4240      557     1368
+   1       2243     1360     4240     2245
+   1       2243     1360     1367     4240
+   1       1360     2245     1368     4240
+   1       1360     1367     4240     1368
+   1       2248      554     1379     4244
+   1       2249     4244     1380      557
+   1       1374     1379       78     1380
+   1       2248     2249     1379     1374
+   1       2248     2249     4244     1379
+   1       2249     1374     1380     1379
+   1       2249     4244     1379     1380
+   1       2231      183     2244     2237
+   1       2232     2237     2248      184
+   1       2236     2244      554     2248
+   1       2231     2232     2244     2236
+   1       2231     2232     2237     2244
+   1       2232     2236     2248     2244
+   1       2232     2237     2244     2248
+   1       2231      183     2243     2244
+   1       2235     2243      553     4237
+   1       2236     2244     4237      554
+   1       2231     2235     2236     2244
+   1       2231     2235     2244     2243
+   1       2235     2236     2244     4237
+   1       2235     2243     4237     2244
+   1       2237      184     2249     2248
+   1       2244     2248     4244      554
+   1       2245     2249      557     4244
+   1       2237     2244     2249     2245
+   1       2237     2244     2248     2249
+   1       2244     2245     4244     2249
+   1       2244     2248     2249     4244
+   1       2243      553     4237     4240
+   1       2244     4237      554     4244
+   1       2245     4240     4244      557
+   1       2243     2244     2245     4240
+   1       2243     2244     4240     4237
+   1       2244     2245     4240     4244
+   1       2244     4237     4244     4240
+   1        957       32      963      961
+   1       2135      963      344     3299
+   1       2133      961     3299      342
+   1        957     2135     2133      961
+   1        957     2135      961      963
+   1       2135     2133      961     3299
+   1       2135      963     3299      961
+   1       2171      344     1298     3310
+   1       1296     1298       71     1303
+   1       2175     3310     1303      526
+   1       2171     1296     2175     3310
+   1       2171     1296     3310     1298
+   1       1296     2175     3310     1303
+   1       1296     1298     1303     3310
+   1       2160      342     3302     1278
+   1       2163     3302      526     1282
+   1       1276     1278     1282       69
+   1       2160     2163     1276     1278
+   1       2160     2163     1278     3302
+   1       2163     1276     1278     1282
+   1       2163     3302     1282     1278
+   1       2132      171     2159     2170
+   1       2130     2159      169     2160
+   1       2133     2170     2160      342
+   1       2132     2130     2133     2170
+   1       2132     2130     2170     2159
+   1       2130     2133     2170     2160
+   1       2130     2159     2160     2170
+   1       2132      171     2170     2171
+   1       2135     2171     3299      344
+   1       2133     2170      342     3299
+   1       2132     2135     2170     2133
+   1       2132     2135     2171     2170
+   1       2135     2133     3299     2170
+   1       2135     2171     2170     3299
+   1       2159      169     2160     2163
+   1       2170     2160      342     3302
+   1       2175     2163     3302      526
+   1       2159     2170     2175     2163
+   1       2159     2170     2163     2160
+   1       2170     2175     2163     3302
+   1       2170     2160     3302     2163
+   1       2171      344     3310     3299
+   1       2170     3299     3302      342
+   1       2175     3310      526     3302
+   1       2171     2170     3310     2175
+   1       2171     2170     3299     3310
+   1       2170     2175     3302     3310
+   1       2170     3299     3310     3302
+   1       1398       80     1400     1407
+   1       2299     1400      452     3793
+   1       2303     1407     3793      571
+   1       1398     2299     2303     1407
+   1       1398     2299     1407     1400
+   1       2299     2303     1407     3793
+   1       2299     1400     3793     1407
+   1       2260      452     1149     3788
+   1       1145     1149       55     1150
+   1       2261     3788     1150      453
+   1       2260     1145     2261     3788
+   1       2260     1145     3788     1149
+   1       1145     2261     3788     1150
+   1       1145     1149     1150     3788
+   1       2308      571     3798     1419
+   1       2305     3798      453     1414
+   1       1412     1419     1414       81
+   1       2308     2305     1412     1419
+   1       2308     2305     1419     3798
+   1       2305     1412     1419     1414
+   1       2305     3798     1414     1419
+   1       2257      186     2258     2263
+   1       2297     2258      192     2308
+   1       2303     2263     2308      571
+   1       2257     2297     2303     2263
+   1       2257     2297     2263     2258
+   1       2297     2303     2263     2308
+   1       2297     2258     2308     2263
+   1       2257      186     2263     2260
+   1       2299     2260     3793      452
+   1       2303     2263      571     3793
+   1       2257     2299     2263     2303
+   1       2257     2299     2260     2263
+   1       2299     2303     3793     2263
+   1       2299     2260     2263     3793
+   1       2258      192     2308     2305
+   1       2263     2308      571     3798
+   1       2261     2305     3798      453
+   1       2258     2263     2261     2305
+   1       2258     2263     2305     2308
+   1       2263     2261     2305     3798
+   1       2263     2308     3798     2305
+   1       2260      452     3788     3793
+   1       2263     3793     3798      571
+   1       2261     3788      453     3798
+   1       2260     2263     3788     2261
+   1       2260     2263     3793     3788
+   1       2263     2261     3798     3788
+   1       2263     3793     3788     3798
+   1       1320       73     1327     1322
+   1       2202     1327      543     3498
+   1       2199     1322     3498      383
+   1       1320     2202     2199     1322
+   1       1320     2202     1322     1327
+   1       2202     2199     1322     3498
+   1       2202     1327     3498     1322
+   1       2207      543     1336     3501
+   1       1330     1336       74     1332
+   1       2204     3501     1332      384
+   1       2207     1330     2204     3501
+   1       2207     1330     3501     1336
+   1       1330     2204     3501     1332
+   1       1330     1336     1332     3501
+   1       2183      383     3495     1028
+   1       2184     3495      384     1029
+   1       1025     1028     1029       39
+   1       2183     2184     1025     1028
+   1       2183     2184     1028     3495
+   1       2184     1025     1028     1029
+   1       2184     3495     1029     1028
+   1       2198      177     2182     2203
+   1       2181     2182      173     2183
+   1       2199     2203     2183      383
+   1       2198     2181     2199     2203
+   1       2198     2181     2203     2182
+   1       2181     2199     2203     2183
+   1       2181     2182     2183     2203
+   1       2198      177     2203     2207
+   1       2202     2207     3498      543
+   1       2199     2203      383     3498
+   1       2198     2202     2203     2199
+   1       2198     2202     2207     2203
+   1       2202     2199     3498     2203
+   1       2202     2207     2203     3498
+   1       2182      173     2183     2184
+   1       2203     2183      383     3495
+   1       2204     2184     3495      384
+   1       2182     2203     2204     2184
+   1       2182     2203     2184     2183
+   1       2203     2204     2184     3495
+   1       2203     2183     3495     2184
+   1       2207      543     3501     3498
+   1       2203     3498     3495      383
+   1       2204     3501      384     3495
+   1       2207     2203     3501     2204
+   1       2207     2203     3498     3501
+   1       2203     2204     3495     3501
+   1       2203     3498     3501     3495
+   1       1262       68     1267     1269
+   1       2154     1267      508     4047
+   1       2157     1269     4047      519
+   1       1262     2154     2157     1269
+   1       1262     2154     1269     1267
+   1       2154     2157     1269     4047
+   1       2154     1267     4047     1269
+   1       2140      508     1247     4044
+   1       1242     1247       66     1248
+   1       2141     4044     1248      509
+   1       2140     1242     2141     4044
+   1       2140     1242     4044     1247
+   1       1242     2141     4044     1248
+   1       1242     1247     1248     4044
+   1       2162      519     4052     1281
+   1       2161     4052      509     1280
+   1       1276     1281     1280       69
+   1       2162     2161     1276     1281
+   1       2162     2161     1281     4052
+   1       2161     1276     1281     1280
+   1       2161     4052     1280     1281
+   1       2136      166     2137     2142
+   1       2150     2137      169     2162
+   1       2157     2142     2162      519
+   1       2136     2150     2157     2142
+   1       2136     2150     2142     2137
+   1       2150     2157     2142     2162
+   1       2150     2137     2162     2142
+   1       2136      166     2142     2140
+   1       2154     2140     4047      508
+   1       2157     2142      519     4047
+   1       2136     2154     2142     2157
+   1       2136     2154     2140     2142
+   1       2154     2157     4047     2142
+   1       2154     2140     2142     4047
+   1       2137      169     2162     2161
+   1       2142     2162      519     4052
+   1       2141     2161     4052      509
+   1       2137     2142     2141     2161
+   1       2137     2142     2161     2162
+   1       2142     2141     2161     4052
+   1       2142     2162     4052     2161
+   1       2140      508     4044     4047
+   1       2142     4047     4052      519
+   1       2141     4044      509     4052
+   1       2140     2142     4044     2141
+   1       2140     2142     4047     4044
+   1       2142     2141     4052     4044
+   1       2142     4047     4044     4052
+   1       1262       68     1269     1270
+   1       2158     1270     4103      520
+   1       2157     1269      519     4103
+   1       1262     2158     1269     2157
+   1       1262     2158     1270     1269
+   1       2158     2157     4103     1269
+   1       2158     1270     1269     4103
+   1       2174      520     4111     1302
+   1       1296     1302     1303       71
+   1       2175     4111      526     1303
+   1       2174     1296     4111     2175
+   1       2174     1296     1302     4111
+   1       1296     2175     1303     4111
+   1       1296     1302     4111     1303
+   1       2162      519     1281     4105
+   1       2163     4105     1282      526
+   1       1276     1281       69     1282
+   1       2162     2163     1281     1276
+   1       2162     2163     4105     1281
+   1       2163     1276     1282     1281
+   1       2163     4105     1281     1282
+   1       2151      171     2173     2159
+   1       2150     2159     2162      169
+   1       2157     2173      519     2162
+   1       2151     2150     2173     2157
+   1       2151     2150     2159     2173
+   1       2150     2157     2162     2173
+   1       2150     2159     2173     2162
+   1       2151      171     2174     2173
+   1       2158     2174      520     4103
+   1       2157     2173     4103      519
+   1       2151     2158     2157     2173
+   1       2151     2158     2173     2174
+   1       2158     2157     2173     4103
+   1       2158     2174     4103     2173
+   1       2159      169     2163     2162
+   1       2173     2162     4105      519
+   1       2175     2163      526     4105
+   1       2159     2173     2163     2175
+   1       2159     2173     2162     2163
+   1       2173     2175     4105     2163
+   1       2173     2162     2163     4105
+   1       2174      520     4103     4111
+   1       2173     4103      519     4105
+   1       2175     4111     4105      526
+   1       2174     2173     2175     4111
+   1       2174     2173     4111     4103
+   1       2173     2175     4111     4105
+   1       2173     4103     4105     4111
+   1       1311       72     1318     1319
+   1       2279     1318      541     4193
+   1       2280     1319     4193      542
+   1       1311     2279     2280     1319
+   1       1311     2279     1319     1318
+   1       2279     2280     1319     4193
+   1       2279     1318     4193     1319
+   1       2292      541     1390     4196
+   1       1384     1390       79     1394
+   1       2295     4196     1394      567
+   1       2292     1384     2295     4196
+   1       2292     1384     4196     1390
+   1       1384     2295     4196     1394
+   1       1384     1390     1394     4196
+   1       2306      542     4199     1416
+   1       2307     4199      567     1418
+   1       1412     1416     1418       81
+   1       2306     2307     1412     1416
+   1       2306     2307     1416     4199
+   1       2307     1412     1416     1418
+   1       2307     4199     1418     1416
+   1       2275      190     2288     2293
+   1       2276     2288      192     2306
+   1       2280     2293     2306      542
+   1       2275     2276     2280     2293
+   1       2275     2276     2293     2288
+   1       2276     2280     2293     2306
+   1       2276     2288     2306     2293
+   1       2275      190     2293     2292
+   1       2279     2292     4193      541
+   1       2280     2293      542     4193
+   1       2275     2279     2293     2280
+   1       2275     2279     2292     2293
+   1       2279     2280     4193     2293
+   1       2279     2292     2293     4193
+   1       2288      192     2306     2307
+   1       2293     2306      542     4199
+   1       2295     2307     4199      567
+   1       2288     2293     2295     2307
+   1       2288     2293     2307     2306
+   1       2293     2295     2307     4199
+   1       2293     2306     4199     2307
+   1       2292      541     4196     4193
+   1       2293     4193     4199      542
+   1       2295     4196      567     4199
+   1       2292     2293     4196     2295
+   1       2292     2293     4193     4196
+   1       2293     2295     4199     4196
+   1       2293     4193     4196     4199
+   1       1398       80     1407     1406
+   1       2302     1406     4294      566
+   1       2303     1407      571     4294
+   1       1398     2302     1407     2303
+   1       1398     2302     1406     1407
+   1       2302     2303     4294     1407
+   1       2302     1406     1407     4294
+   1       2294      566     4291     1393
+   1       1384     1393     1394       79
+   1       2295     4291      567     1394
+   1       2294     1384     4291     2295
+   1       2294     1384     1393     4291
+   1       1384     2295     1394     4291
+   1       1384     1393     4291     1394
+   1       2308      571     1419     4299
+   1       2307     4299     1418      567
+   1       1412     1419       81     1418
+   1       2308     2307     1419     1412
+   1       2308     2307     4299     1419
+   1       2307     1412     1418     1419
+   1       2307     4299     1419     1418
+   1       2287      190     2296     2288
+   1       2297     2288     2308      192
+   1       2303     2296      571     2308
+   1       2287     2297     2296     2303
+   1       2287     2297     2288     2296
+   1       2297     2303     2308     2296
+   1       2297     2288     2296     2308
+   1       2287      190     2294     2296
+   1       2302     2294      566     4294
+   1       2303     2296     4294      571
+   1       2287     2302     2303     2296
+   1       2287     2302     2296     2294
+   1       2302     2303     2296     4294
+   1       2302     2294     4294     2296
+   1       2288      192     2307     2308
+   1       2296     2308     4299      571
+   1       2295     2307      567     4299
+   1       2288     2296     2307     2295
+   1       2288     2296     2308     2307
+   1       2296     2295     4299     2307
+   1       2296     2308     2307     4299
+   1       2294      566     4294     4291
+   1       2296     4294      571     4299
+   1       2295     4291     4299      567
+   1       2294     2296     2295     4291
+   1       2294     2296     4291     4294
+   1       2296     2295     4291     4299
+   1       2296     4294     4299     4291
+   1        817       15      821      820
+   1       2455      821      217     2474
+   1       2454      820     2474      216
+   1        817     2455     2454      820
+   1        817     2455      820      821
+   1       2455     2454      820     2474
+   1       2455      821     2474      820
+   1       2486      217     1570     2487
+   1       1572     1570       94     1574
+   1       3411     2487     1574      627
+   1       2486     1572     3411     2487
+   1       2486     1572     2487     1570
+   1       1572     3411     2487     1574
+   1       1572     1570     1574     2487
+   1       2477      216     2480     1556
+   1       3408     2480      627     1563
+   1       1558     1556     1563       93
+   1       2477     3408     1558     1556
+   1       2477     3408     1556     2480
+   1       3408     1558     1556     1563
+   1       3408     2480     1563     1556
+   1       2458      363     3403     2478
+   1       2457     3403      362     2477
+   1       2454     2478     2477      216
+   1       2458     2457     2454     2478
+   1       2458     2457     2478     3403
+   1       2457     2454     2478     2477
+   1       2457     3403     2477     2478
+   1       2458      363     2478     2486
+   1       2455     2486     2474      217
+   1       2454     2478      216     2474
+   1       2458     2455     2478     2454
+   1       2458     2455     2486     2478
+   1       2455     2454     2474     2478
+   1       2455     2486     2478     2474
+   1       3403      362     2477     3408
+   1       2478     2477      216     2480
+   1       3411     3408     2480      627
+   1       3403     2478     3411     3408
+   1       3403     2478     3408     2477
+   1       2478     3411     3408     2480
+   1       2478     2477     2480     3408
+   1       2486      217     2487     2474
+   1       2478     2474     2480      216
+   1       3411     2487      627     2480
+   1       2486     2478     2487     3411
+   1       2486     2478     2474     2487
+   1       2478     3411     2480     2487
+   1       2478     2474     2487     2480
+   1       1573       94     1571     1577
+   1       2714     1571      245     2715
+   1       3479     1577     2715      636
+   1       1573     2714     3479     1577
+   1       1573     2714     1577     1571
+   1       2714     3479     1577     2715
+   1       2714     1571     2715     1577
+   1       2681      245      849     2711
+   1        846      849       18      851
+   1       2683     2711      851      247
+   1       2681      846     2683     2711
+   1       2681      846     2711      849
+   1        846     2683     2711      851
+   1        846      849      851     2711
+   1       3484      636     2729     1665
+   1       2727     2729      247     1659
+   1       1661     1665     1659      102
+   1       3484     2727     1661     1665
+   1       3484     2727     1665     2729
+   1       2727     1661     1665     1659
+   1       2727     2729     1659     1665
+   1       2685      242     2687     2689
+   1       3477     2687      380     3484
+   1       3479     2689     3484      636
+   1       2685     3477     3479     2689
+   1       2685     3477     2689     2687
+   1       3477     3479     2689     3484
+   1       3477     2687     3484     2689
+   1       2685      242     2689     2681
+   1       2714     2681     2715      245
+   1       3479     2689      636     2715
+   1       2685     2714     2689     3479
+   1       2685     2714     2681     2689
+   1       2714     3479     2715     2689
+   1       2714     2681     2689     2715
+   1       2687      380     3484     2727
+   1       2689     3484      636     2729
+   1       2683     2727     2729      247
+   1       2687     2689     2683     2727
+   1       2687     2689     2727     3484
+   1       2689     2683     2727     2729
+   1       2689     3484     2729     2727
+   1       2681      245     2711     2715
+   1       2689     2715     2729      636
+   1       2683     2711      247     2729
+   1       2681     2689     2711     2683
+   1       2681     2689     2715     2711
+   1       2689     2683     2729     2711
+   1       2689     2715     2711     2729
+   1       1559       93     1566     1557
+   1       3456     1566      630     2627
+   1       2624     1557     2627      235
+   1       1559     3456     2624     1557
+   1       1559     3456     1557     1566
+   1       3456     2624     1557     2627
+   1       3456     1566     2627     1557
+   1       3461      630     1664     2636
+   1       1660     1664      102     1658
+   1       2634     2636     1658      236
+   1       3461     1660     2634     2636
+   1       3461     1660     2636     1664
+   1       1660     2634     2636     1658
+   1       1660     1664     1658     2636
+   1       2551      235     2621      839
+   1       2552     2621      236      840
+   1        832      839      840       17
+   1       2551     2552      832      839
+   1       2551     2552      839     2621
+   1       2552      832      839      840
+   1       2552     2621      840      839
+   1       3453      374     2557     2625
+   1       2556     2557      228     2551
+   1       2624     2625     2551      235
+   1       3453     2556     2624     2625
+   1       3453     2556     2625     2557
+   1       2556     2624     2625     2551
+   1       2556     2557     2551     2625
+   1       3453      374     2625     3461
+   1       3456     3461     2627      630
+   1       2624     2625      235     2627
+   1       3453     3456     2625     2624
+   1       3453     3456     3461     2625
+   1       3456     2624     2627     2625
+   1       3456     3461     2625     2627
+   1       2557      228     2551     2552
+   1       2625     2551      235     2621
+   1       2634     2552     2621      236
+   1       2557     2625     2634     2552
+   1       2557     2625     2552     2551
+   1       2625     2634     2552     2621
+   1       2625     2551     2621     2552
+   1       3461      630     2636     2627
+   1       2625     2627     2621      235
+   1       2634     2636      236     2621
+   1       3461     2625     2636     2634
+   1       3461     2625     2627     2636
+   1       2625     2634     2621     2636
+   1       2625     2627     2636     2621
+   1       1015       38     1017     1020
+   1       3390     1017      367     3426
+   1       3391     1020     3426      377
+   1       1015     3390     3391     1020
+   1       1015     3390     1020     1017
+   1       3390     3391     1020     3426
+   1       3390     1017     3426     1020
+   1       3384      367     1004     3423
+   1       1003     1004       37     1010
+   1       3386     3423     1010      373
+   1       3384     1003     3386     3423
+   1       3384     1003     3423     1004
+   1       1003     3386     3423     1010
+   1       1003     1004     1010     3423
+   1       3405      377     3454     1560
+   1       3404     3454      373     1559
+   1       1558     1560     1559       93
+   1       3405     3404     1558     1560
+   1       3405     3404     1560     3454
+   1       3404     1558     1560     1559
+   1       3404     3454     1559     1560
+   1       3381      358     3383     3387
+   1       3388     3383      362     3405
+   1       3391     3387     3405      377
+   1       3381     3388     3391     3387
+   1       3381     3388     3387     3383
+   1       3388     3391     3387     3405
+   1       3388     3383     3405     3387
+   1       3381      358     3387     3384
+   1       3390     3384     3426      367
+   1       3391     3387      377     3426
+   1       3381     3390     3387     3391
+   1       3381     3390     3384     3387
+   1       3390     3391     3426     3387
+   1       3390     3384     3387     3426
+   1       3383      362     3405     3404
+   1       3387     3405      377     3454
+   1       3386     3404     3454      373
+   1       3383     3387     3386     3404
+   1       3383     3387     3404     3405
+   1       3387     3386     3404     3454
+   1       3387     3405     3454     3404
+   1       3384      367     3423     3426
+   1       3387     3426     3454      377
+   1       3386     3423      373     3454
+   1       3384     3387     3423     3386
+   1       3384     3387     3426     3423
+   1       3387     3386     3454     3423
+   1       3387     3426     3423     3454
+   1       1015       38     1020     1021
+   1       3392     1021     3472      378
+   1       3391     1020      377     3472
+   1       1015     3392     1020     3391
+   1       1015     3392     1021     1020
+   1       3392     3391     3472     1020
+   1       3392     1021     1020     3472
+   1       3410      378     3478     1573
+   1       1572     1573     1574       94
+   1       3411     3478      627     1574
+   1       3410     1572     3478     3411
+   1       3410     1572     1573     3478
+   1       1572     3411     1574     3478
+   1       1572     1573     3478     1574
+   1       3405      377     1560     3474
+   1       3408     3474     1563      627
+   1       1558     1560       93     1563
+   1       3405     3408     1560     1558
+   1       3405     3408     3474     1560
+   1       3408     1558     1563     1560
+   1       3408     3474     1560     1563
+   1       3389      363     3409     3403
+   1       3388     3403     3405      362
+   1       3391     3409      377     3405
+   1       3389     3388     3409     3391
+   1       3389     3388     3403     3409
+   1       3388     3391     3405     3409
+   1       3388     3403     3409     3405
+   1       3389      363     3410     3409
+   1       3392     3410      378     3472
+   1       3391     3409     3472      377
+   1       3389     3392     3391     3409
+   1       3389     3392     3409     3410
+   1       3392     3391     3409     3472
+   1       3392     3410     3472     3409
+   1       3403      362     3408     3405
+   1       3409     3405     3474      377
+   1       3411     3408      627     3474
+   1       3403     3409     3408     3411
+   1       3403     3409     3405     3408
+   1       3409     3411     3474     3408
+   1       3409     3405     3408     3474
+   1       3410      378     3472     3478
+   1       3409     3472      377     3474
+   1       3411     3478     3474      627
+   1       3410     3409     3411     3478
+   1       3410     3409     3478     3472
+   1       3409     3411     3478     3474
+   1       3409     3472     3474     3478
+   1       1004       37     1010     1011
+   1       3423     1010      373     3453
+   1       3424     1011     3453      374
+   1       1004     3423     3424     1011
+   1       1004     3423     1011     1010
+   1       3423     3424     1011     3453
+   1       3423     1010     3453     1011
+   1       3454      373     1559     3456
+   1       1560     1559       93     1566
+   1       3475     3456     1566      630
+   1       3454     1560     3475     3456
+   1       3454     1560     3456     1559
+   1       1560     3475     3456     1566
+   1       1560     1559     1566     3456
+   1       3458      374     3461     1660
+   1       3483     3461      630     1664
+   1       1661     1660     1664      102
+   1       3458     3483     1661     1660
+   1       3458     3483     1660     3461
+   1       3483     1661     1660     1664
+   1       3483     3461     1664     1660
+   1       3426      377     3473     3457
+   1       3427     3473      380     3458
+   1       3424     3457     3458      374
+   1       3426     3427     3424     3457
+   1       3426     3427     3457     3473
+   1       3427     3424     3457     3458
+   1       3427     3473     3458     3457
+   1       3426      377     3457     3454
+   1       3423     3454     3453      373
+   1       3424     3457      374     3453
+   1       3426     3423     3457     3424
+   1       3426     3423     3454     3457
+   1       3423     3424     3453     3457
+   1       3423     3454     3457     3453
+   1       3473      380     3458     3483
+   1       3457     3458      374     3461
+   1       3475     3483     3461      630
+   1       3473     3457     3475     3483
+   1       3473     3457     3483     3458
+   1       3457     3475     3483     3461
+   1       3457     3458     3461     3483
+   1       3454      373     3456     3453
+   1       3457     3453     3461      374
+   1       3475     3456      630     3461
+   1       3454     3457     3456     3475
+   1       3454     3457     3453     3456
+   1       3457     3475     3461     3456
+   1       3457     3453     3456     3461
+   1       1573       94     1577     1574
+   1       3478     1574     4545      627
+   1       3479     1577      636     4545
+   1       1573     3478     1577     3479
+   1       1573     3478     1574     1577
+   1       3478     3479     4545     1577
+   1       3478     1574     1577     4545
+   1       3474      627     4542     1563
+   1       1560     1563     1566       93
+   1       3475     4542      630     1566
+   1       3474     1560     4542     3475
+   1       3474     1560     1563     4542
+   1       1560     3475     1566     4542
+   1       1560     1563     4542     1566
+   1       3484      636     1665     4562
+   1       3483     4562     1664      630
+   1       1661     1665      102     1664
+   1       3484     3483     1665     1661
+   1       3484     3483     4562     1665
+   1       3483     1661     1664     1665
+   1       3483     4562     1665     1664
+   1       3472      377     3476     3473
+   1       3477     3473     3484      380
+   1       3479     3476      636     3484
+   1       3472     3477     3476     3479
+   1       3472     3477     3473     3476
+   1       3477     3479     3484     3476
+   1       3477     3473     3476     3484
+   1       3472      377     3474     3476
+   1       3478     3474      627     4545
+   1       3479     3476     4545      636
+   1       3472     3478     3479     3476
+   1       3472     3478     3476     3474
+   1       3478     3479     3476     4545
+   1       3478     3474     4545     3476
+   1       3473      380     3483     3484
+   1       3476     3484     4562      636
+   1       3475     3483      630     4562
+   1       3473     3476     3483     3475
+   1       3473     3476     3484     3483
+   1       3476     3475     4562     3483
+   1       3476     3484     3483     4562
+   1       3474      627     4545     4542
+   1       3476     4545      636     4562
+   1       3475     4542     4562      630
+   1       3474     3476     3475     4542
+   1       3474     3476     4542     4545
+   1       3476     3475     4542     4562
+   1       3476     4545     4562     4542
+   1        807       14      812      813
+   1       2380      812      208     2414
+   1       2381      813     2414      209
+   1        807     2380     2381      813
+   1        807     2380      813      812
+   1       2380     2381      813     2414
+   1       2380      812     2414      813
+   1       2417      208     1490     2420
+   1       1492     1490       88     1498
+   1       3375     2420     1498      601
+   1       2417     1492     3375     2420
+   1       2417     1492     2420     1490
+   1       1492     3375     2420     1498
+   1       1492     1490     1498     2420
+   1       2426      209     2428     1504
+   1       3380     2428      601     1510
+   1       1506     1504     1510       89
+   1       2426     3380     1506     1504
+   1       2426     3380     1504     2428
+   1       3380     1506     1504     1510
+   1       3380     2428     1510     1504
+   1       2384      356     3370     2425
+   1       2385     3370      357     2426
+   1       2381     2425     2426      209
+   1       2384     2385     2381     2425
+   1       2384     2385     2425     3370
+   1       2385     2381     2425     2426
+   1       2385     3370     2426     2425
+   1       2384      356     2425     2417
+   1       2380     2417     2414      208
+   1       2381     2425      209     2414
+   1       2384     2380     2425     2381
+   1       2384     2380     2417     2425
+   1       2380     2381     2414     2425
+   1       2380     2417     2425     2414
+   1       3370      357     2426     3380
+   1       2425     2426      209     2428
+   1       3375     3380     2428      601
+   1       3370     2425     3375     3380
+   1       3370     2425     3380     2426
+   1       2425     3375     3380     2428
+   1       2425     2426     2428     3380
+   1       2417      208     2420     2414
+   1       2425     2414     2428      209
+   1       3375     2420      601     2428
+   1       2417     2425     2420     3375
+   1       2417     2425     2414     2420
+   1       2425     3375     2428     2420
+   1       2425     2414     2420     2428
+   1       1493       88     1491     1501
+   1       2615     1491      234     2618
+   1       3446     1501     2618      604
+   1       1493     2615     3446     1501
+   1       1493     2615     1501     1491
+   1       2615     3446     1501     2618
+   1       2615     1491     2618     1501
+   1       2550      234      838     2612
+   1        832      838       17      840
+   1       2552     2612      840      236
+   1       2550      832     2552     2612
+   1       2550      832     2612      838
+   1        832     2552     2612      840
+   1        832      838      840     2612
+   1       3459      604     2635     1662
+   1       2634     2635      236     1658
+   1       1660     1662     1658      102
+   1       3459     2634     1660     1662
+   1       3459     2634     1662     2635
+   1       2634     1660     1662     1658
+   1       2634     2635     1658     1662
+   1       2555      228     2557     2559
+   1       3442     2557      374     3459
+   1       3446     2559     3459      604
+   1       2555     3442     3446     2559
+   1       2555     3442     2559     2557
+   1       3442     3446     2559     3459
+   1       3442     2557     3459     2559
+   1       2555      228     2559     2550
+   1       2615     2550     2618      234
+   1       3446     2559      604     2618
+   1       2555     2615     2559     3446
+   1       2555     2615     2550     2559
+   1       2615     3446     2618     2559
+   1       2615     2550     2559     2618
+   1       2557      374     3459     2634
+   1       2559     3459      604     2635
+   1       2552     2634     2635      236
+   1       2557     2559     2552     2634
+   1       2557     2559     2634     3459
+   1       2559     2552     2634     2635
+   1       2559     3459     2635     2634
+   1       2550      234     2612     2618
+   1       2559     2618     2635      604
+   1       2552     2612      236     2635
+   1       2550     2559     2612     2552
+   1       2550     2559     2618     2612
+   1       2559     2552     2635     2612
+   1       2559     2618     2612     2635
+   1       1508       89     1514     1505
+   1       3471     1514      610     2707
+   1       2704     1505     2707      244
+   1       1508     3471     2704     1505
+   1       1508     3471     1505     1514
+   1       3471     2704     1505     2707
+   1       3471     1514     2707     1505
+   1       3482      610     1663     2728
+   1       1661     1663      102     1659
+   1       2727     2728     1659      247
+   1       3482     1661     2727     2728
+   1       3482     1661     2728     1663
+   1       1661     2727     2728     1659
+   1       1661     1663     1659     2728
+   1       2680      244     2701      848
+   1       2683     2701      247      851
+   1        846      848      851       18
+   1       2680     2683      846      848
+   1       2680     2683      848     2701
+   1       2683      846      848      851
+   1       2683     2701      851      848
+   1       3468      380     2687     2705
+   1       2684     2687      242     2680
+   1       2704     2705     2680      244
+   1       3468     2684     2704     2705
+   1       3468     2684     2705     2687
+   1       2684     2704     2705     2680
+   1       2684     2687     2680     2705
+   1       3468      380     2705     3482
+   1       3471     3482     2707      610
+   1       2704     2705      244     2707
+   1       3468     3471     2705     2704
+   1       3468     3471     3482     2705
+   1       3471     2704     2707     2705
+   1       3471     3482     2705     2707
+   1       2687      242     2680     2683
+   1       2705     2680      244     2701
+   1       2727     2683     2701      247
+   1       2687     2705     2727     2683
+   1       2687     2705     2683     2680
+   1       2705     2727     2683     2701
+   1       2705     2680     2701     2683
+   1       3482      610     2728     2707
+   1       2705     2707     2701      244
+   1       2727     2728      247     2701
+   1       3482     2705     2728     2727
+   1       3482     2705     2707     2728
+   1       2705     2727     2701     2728
+   1       2705     2707     2728     2701
+   1       1002       37     1004     1009
+   1       3352     1004      367     3422
+   1       3355     1009     3422      372
+   1       1002     3352     3355     1009
+   1       1002     3352     1009     1004
+   1       3352     3355     1009     3422
+   1       3352     1004     3422     1009
+   1       3359      367     1017     3425
+   1       1014     1017       38     1019
+   1       3362     3425     1019      376
+   1       3359     1014     3362     3425
+   1       3359     1014     3425     1017
+   1       1014     3362     3425     1019
+   1       1014     1017     1019     3425
+   1       3376      372     3448     1507
+   1       3378     3448      376     1508
+   1       1506     1507     1508       89
+   1       3376     3378     1506     1507
+   1       3376     3378     1507     3448
+   1       3378     1506     1507     1508
+   1       3378     3448     1508     1507
+   1       3348      353     3357     3360
+   1       3351     3357      357     3376
+   1       3355     3360     3376      372
+   1       3348     3351     3355     3360
+   1       3348     3351     3360     3357
+   1       3351     3355     3360     3376
+   1       3351     3357     3376     3360
+   1       3348      353     3360     3359
+   1       3352     3359     3422      367
+   1       3355     3360      372     3422
+   1       3348     3352     3360     3355
+   1       3348     3352     3359     3360
+   1       3352     3355     3422     3360
+   1       3352     3359     3360     3422
+   1       3357      357     3376     3378
+   1       3360     3376      372     3448
+   1       3362     3378     3448      376
+   1       3357     3360     3362     3378
+   1       3357     3360     3378     3376
+   1       3360     3362     3378     3448
+   1       3360     3376     3448     3378
+   1       3359      367     3425     3422
+   1       3360     3422     3448      372
+   1       3362     3425      376     3448
+   1       3359     3360     3425     3362
+   1       3359     3360     3422     3425
+   1       3360     3362     3448     3425
+   1       3360     3422     3425     3448
+   1       1002       37     1009     1008
+   1       3354     1008     3441      371
+   1       3355     1009      372     3441
+   1       1002     3354     1009     3355
+   1       1002     3354     1008     1009
+   1       3354     3355     3441     1009
+   1       3354     1008     1009     3441
+   1       3372      371     3445     1493
+   1       1492     1493     1498       88
+   1       3375     3445      601     1498
+   1       3372     1492     3445     3375
+   1       3372     1492     1493     3445
+   1       1492     3375     1498     3445
+   1       1492     1493     3445     1498
+   1       3376      372     1507     3450
+   1       3380     3450     1510      601
+   1       1506     1507       89     1510
+   1       3376     3380     1507     1506
+   1       3376     3380     3450     1507
+   1       3380     1506     1510     1507
+   1       3380     3450     1507     1510
+   1       3350      356     3373     3370
+   1       3351     3370     3376      357
+   1       3355     3373      372     3376
+   1       3350     3351     3373     3355
+   1       3350     3351     3370     3373
+   1       3351     3355     3376     3373
+   1       3351     3370     3373     3376
+   1       3350      356     3372     3373
+   1       3354     3372      371     3441
+   1       3355     3373     3441      372
+   1       3350     3354     3355     3373
+   1       3350     3354     3373     3372
+   1       3354     3355     3373     3441
+   1       3354     3372     3441     3373
+   1       3370      357     3380     3376
+   1       3373     3376     3450      372
+   1       3375     3380      601     3450
+   1       3370     3373     3380     3375
+   1       3370     3373     3376     3380
+   1       3373     3375     3450     3380
+   1       3373     3376     3380     3450
+   1       3372      371     3441     3445
+   1       3373     3441      372     3450
+   1       3375     3445     3450      601
+   1       3372     3373     3375     3445
+   1       3372     3373     3445     3441
+   1       3373     3375     3445     3450
+   1       3373     3441     3450     3445
+   1       1017       38     1019     1023
+   1       3425     1019      376     3468
+   1       3427     1023     3468      380
+   1       1017     3425     3427     1023
+   1       1017     3425     1023     1019
+   1       3425     3427     1023     3468
+   1       3425     1019     3468     1023
+   1       3448      376     1508     3471
+   1       1507     1508       89     1514
+   1       3452     3471     1514      610
+   1       3448     1507     3452     3471
+   1       3448     1507     3471     1508
+   1       1507     3452     3471     1514
+   1       1507     1508     1514     3471
+   1       3458      380     3482     1661
+   1       3460     3482      610     1663
+   1       1660     1661     1663      102
+   1       3458     3460     1660     1661
+   1       3458     3460     1661     3482
+   1       3460     1660     1661     1663
+   1       3460     3482     1663     1661
+   1       3422      372     3447     3449
+   1       3424     3447      374     3458
+   1       3427     3449     3458      380
+   1       3422     3424     3427     3449
+   1       3422     3424     3449     3447
+   1       3424     3427     3449     3458
+   1       3424     3447     3458     3449
+   1       3422      372     3449     3448
+   1       3425     3448     3468      376
+   1       3427     3449      380     3468
+   1       3422     3425     3449     3427
+   1       3422     3425     3448     3449
+   1       3425     3427     3468     3449
+   1       3425     3448     3449     3468
+   1       3447      374     3458     3460
+   1       3449     3458      380     3482
+   1       3452     3460     3482      610
+   1       3447     3449     3452     3460
+   1       3447     3449     3460     3458
+   1       3449     3452     3460     3482
+   1       3449     3458     3482     3460
+   1       3448      376     3471     3468
+   1       3449     3468     3482      380
+   1       3452     3471      610     3482
+   1       3448     3449     3471     3452
+   1       3448     3449     3468     3471
+   1       3449     3452     3482     3471
+   1       3449     3468     3471     3482
+   1       1493       88     1501     1498
+   1       3445     1498     4431      601
+   1       3446     1501      604     4431
+   1       1493     3445     1501     3446
+   1       1493     3445     1498     1501
+   1       3445     3446     4431     1501
+   1       3445     1498     1501     4431
+   1       3450      601     4434     1510
+   1       1507     1510     1514       89
+   1       3452     4434      610     1514
+   1       3450     1507     4434     3452
+   1       3450     1507     1510     4434
+   1       1507     3452     1514     4434
+   1       1507     1510     4434     1514
+   1       3459      604     1662     4449
+   1       3460     4449     1663      610
+   1       1660     1662      102     1663
+   1       3459     3460     1662     1660
+   1       3459     3460     4449     1662
+   1       3460     1660     1663     1662
+   1       3460     4449     1662     1663
+   1       3441      372     3451     3447
+   1       3442     3447     3459      374
+   1       3446     3451      604     3459
+   1       3441     3442     3451     3446
+   1       3441     3442     3447     3451
+   1       3442     3446     3459     3451
+   1       3442     3447     3451     3459
+   1       3441      372     3450     3451
+   1       3445     3450      601     4431
+   1       3446     3451     4431      604
+   1       3441     3445     3446     3451
+   1       3441     3445     3451     3450
+   1       3445     3446     3451     4431
+   1       3445     3450     4431     3451
+   1       3447      374     3460     3459
+   1       3451     3459     4449      604
+   1       3452     3460      610     4449
+   1       3447     3451     3460     3452
+   1       3447     3451     3459     3460
+   1       3451     3452     4449     3460
+   1       3451     3459     3460     4449
+   1       3450      601     4431     4434
+   1       3451     4431      604     4449
+   1       3452     4434     4449      610
+   1       3450     3451     3452     4434
+   1       3450     3451     4434     4431
+   1       3451     3452     4434     4449
+   1       3451     4431     4449     4434
+   1        798       13      803      804
+   1       2315      803      199     2351
+   1       2316      804     2351      200
+   1        798     2315     2316      804
+   1        798     2315      804      803
+   1       2315     2316      804     2351
+   1       2315      803     2351      804
+   1       2354      199     1432     2355
+   1       1434     1432       83     1436
+   1       3337     2355     1436      579
+   1       2354     1434     3337     2355
+   1       2354     1434     2355     1432
+   1       1434     3337     2355     1436
+   1       1434     1432     1436     2355
+   1       2360      200     2363     1442
+   1       3342     2363      579     1451
+   1       1444     1442     1451       84
+   1       2360     3342     1444     1442
+   1       2360     3342     1442     2363
+   1       3342     1444     1442     1451
+   1       3342     2363     1451     1442
+   1       2318      349     3334     2359
+   1       2319     3334      350     2360
+   1       2316     2359     2360      200
+   1       2318     2319     2316     2359
+   1       2318     2319     2359     3334
+   1       2319     2316     2359     2360
+   1       2319     3334     2360     2359
+   1       2318      349     2359     2354
+   1       2315     2354     2351      199
+   1       2316     2359      200     2351
+   1       2318     2315     2359     2316
+   1       2318     2315     2354     2359
+   1       2315     2316     2351     2359
+   1       2315     2354     2359     2351
+   1       3334      350     2360     3342
+   1       2359     2360      200     2363
+   1       3337     3342     2363      579
+   1       3334     2359     3337     3342
+   1       3334     2359     3342     2360
+   1       2359     3337     3342     2363
+   1       2359     2360     2363     3342
+   1       2354      199     2355     2351
+   1       2359     2351     2363      200
+   1       3337     2355      579     2363
+   1       2354     2359     2355     3337
+   1       2354     2359     2351     2355
+   1       2359     3337     2363     2355
+   1       2359     2351     2355     2363
+   1       1435       83     1433     1439
+   1       2470     1433      215     2471
+   1       3396     1439     2471      582
+   1       1435     2470     3396     1439
+   1       1435     2470     1439     1433
+   1       2470     3396     1439     2471
+   1       2470     1433     2471     1439
+   1       2453      215      819     2467
+   1        817      819       15      820
+   1       2454     2467      820      216
+   1       2453      817     2454     2467
+   1       2453      817     2467      819
+   1        817     2454     2467      820
+   1        817      819      820     2467
+   1       3406      582     2479     1561
+   1       2477     2479      216     1556
+   1       1558     1561     1556       93
+   1       3406     2477     1558     1561
+   1       3406     2477     1561     2479
+   1       2477     1558     1561     1556
+   1       2477     2479     1556     1561
+   1       2456      213     2457     2459
+   1       3394     2457      362     3406
+   1       3396     2459     3406      582
+   1       2456     3394     3396     2459
+   1       2456     3394     2459     2457
+   1       3394     3396     2459     3406
+   1       3394     2457     3406     2459
+   1       2456      213     2459     2453
+   1       2470     2453     2471      215
+   1       3396     2459      582     2471
+   1       2456     2470     2459     3396
+   1       2456     2470     2453     2459
+   1       2470     3396     2471     2459
+   1       2470     2453     2459     2471
+   1       2457      362     3406     2477
+   1       2459     3406      582     2479
+   1       2454     2477     2479      216
+   1       2457     2459     2454     2477
+   1       2457     2459     2477     3406
+   1       2459     2454     2477     2479
+   1       2459     3406     2479     2477
+   1       2453      215     2467     2471
+   1       2459     2471     2479      582
+   1       2454     2467      216     2479
+   1       2453     2459     2467     2454
+   1       2453     2459     2471     2467
+   1       2459     2454     2479     2467
+   1       2459     2471     2467     2479
+   1       1446       84     1453     1443
+   1       3440     1453      586     2609
+   1       2605     1443     2609      233
+   1       1446     3440     2605     1443
+   1       1446     3440     1443     1453
+   1       3440     2605     1443     2609
+   1       3440     1453     2609     1443
+   1       3455      586     1562     2626
+   1       1559     1562       93     1557
+   1       2624     2626     1557      235
+   1       3455     1559     2624     2626
+   1       3455     1559     2626     1562
+   1       1559     2624     2626     1557
+   1       1559     1562     1557     2626
+   1       2549      233     2603      837
+   1       2551     2603      235      839
+   1        832      837      839       17
+   1       2549     2551      832      837
+   1       2549     2551      837     2603
+   1       2551      832      837      839
+   1       2551     2603      839      837
+   1       3438      373     2556     2606
+   1       2554     2556      228     2549
+   1       2605     2606     2549      233
+   1       3438     2554     2605     2606
+   1       3438     2554     2606     2556
+   1       2554     2605     2606     2549
+   1       2554     2556     2549     2606
+   1       3438      373     2606     3455
+   1       3440     3455     2609      586
+   1       2605     2606      233     2609
+   1       3438     3440     2606     2605
+   1       3438     3440     3455     2606
+   1       3440     2605     2609     2606
+   1       3440     3455     2606     2609
+   1       2556      228     2549     2551
+   1       2606     2549      233     2603
+   1       2624     2551     2603      235
+   1       2556     2606     2624     2551
+   1       2556     2606     2551     2549
+   1       2606     2624     2551     2603
+   1       2606     2549     2603     2551
+   1       3455      586     2626     2609
+   1       2606     2609     2603      233
+   1       2624     2626      235     2603
+   1       3455     2606     2626     2624
+   1       3455     2606     2609     2626
+   1       2606     2624     2603     2626
+   1       2606     2609     2626     2603
+   1        985       35      986      989
+   1       3315      986      358     3382
+   1       3317      989     3382      361
+   1        985     3315     3317      989
+   1        985     3315      989      986
+   1       3315     3317      989     3382
+   1       3315      986     3382      989
+   1       3320      358     1003     3385
+   1       1001     1003       37     1007
+   1       3323     3385     1007      370
+   1       3320     1001     3323     3385
+   1       3320     1001     3385     1003
+   1       1001     3323     3385     1007
+   1       1001     1003     1007     3385
+   1       3338      361     3398     1445
+   1       3339     3398      370     1446
+   1       1444     1445     1446       84
+   1       3338     3339     1444     1445
+   1       3338     3339     1445     3398
+   1       3339     1444     1445     1446
+   1       3339     3398     1446     1445
+   1       3312      346     3319     3321
+   1       3314     3319      350     3338
+   1       3317     3321     3338      361
+   1       3312     3314     3317     3321
+   1       3312     3314     3321     3319
+   1       3314     3317     3321     3338
+   1       3314     3319     3338     3321
+   1       3312      346     3321     3320
+   1       3315     3320     3382      358
+   1       3317     3321      361     3382
+   1       3312     3315     3321     3317
+   1       3312     3315     3320     3321
+   1       3315     3317     3382     3321
+   1       3315     3320     3321     3382
+   1       3319      350     3338     3339
+   1       3321     3338      361     3398
+   1       3323     3339     3398      370
+   1       3319     3321     3323     3339
+   1       3319     3321     3339     3338
+   1       3321     3323     3339     3398
+   1       3321     3338     3398     3339
+   1       3320      358     3385     3382
+   1       3321     3382     3398      361
+   1       3323     3385      370     3398
+   1       3320     3321     3385     3323
+   1       3320     3321     3382     3385
+   1       3321     3323     3398     3385
+   1       3321     3382     3385     3398
+   1        985       35      989      988
+   1       3316      988     3393      360
+   1       3317      989      361     3393
+   1        985     3316      989     3317
+   1        985     3316      988      989
+   1       3316     3317     3393      989
+   1       3316      988      989     3393
+   1       3335      360     3395     1435
+   1       1434     1435     1436       83
+   1       3337     3395      579     1436
+   1       3335     1434     3395     3337
+   1       3335     1434     1435     3395
+   1       1434     3337     1436     3395
+   1       1434     1435     3395     1436
+   1       3338      361     1445     3400
+   1       3342     3400     1451      579
+   1       1444     1445       84     1451
+   1       3338     3342     1445     1444
+   1       3338     3342     3400     1445
+   1       3342     1444     1451     1445
+   1       3342     3400     1445     1451
+   1       3313      349     3336     3334
+   1       3314     3334     3338      350
+   1       3317     3336      361     3338
+   1       3313     3314     3336     3317
+   1       3313     3314     3334     3336
+   1       3314     3317     3338     3336
+   1       3314     3334     3336     3338
+   1       3313      349     3335     3336
+   1       3316     3335      360     3393
+   1       3317     3336     3393      361
+   1       3313     3316     3317     3336
+   1       3313     3316     3336     3335
+   1       3316     3317     3336     3393
+   1       3316     3335     3393     3336
+   1       3334      350     3342     3338
+   1       3336     3338     3400      361
+   1       3337     3342      579     3400
+   1       3334     3336     3342     3337
+   1       3334     3336     3338     3342
+   1       3336     3337     3400     3342
+   1       3336     3338     3342     3400
+   1       3335      360     3393     3395
+   1       3336     3393      361     3400
+   1       3337     3395     3400      579
+   1       3335     3336     3337     3395
+   1       3335     3336     3395     3393
+   1       3336     3337     3395     3400
+   1       3336     3393     3400     3395
+   1       1003       37     1007     1010
+   1       3385     1007      370     3438
+   1       3386     1010     3438      373
+   1       1003     3385     3386     1010
+   1       1003     3385     1010     1007
+   1       3385     3386     1010     3438
+   1       3385     1007     3438     1010
+   1       3398      370     1446     3440
+   1       1445     1446       84     1453
+   1       3402     3440     1453      586
+   1       3398     1445     3402     3440
+   1       3398     1445     3440     1446
+   1       1445     3402     3440     1453
+   1       1445     1446     1453     3440
+   1       3404      373     3455     1559
+   1       3407     3455      586     1562
+   1       1558     1559     1562       93
+   1       3404     3407     1558     1559
+   1       3404     3407     1559     3455
+   1       3407     1558     1559     1562
+   1       3407     3455     1562     1559
+   1       3382      361     3397     3399
+   1       3383     3397      362     3404
+   1       3386     3399     3404      373
+   1       3382     3383     3386     3399
+   1       3382     3383     3399     3397
+   1       3383     3386     3399     3404
+   1       3383     3397     3404     3399
+   1       3382      361     3399     3398
+   1       3385     3398     3438      370
+   1       3386     3399      373     3438
+   1       3382     3385     3399     3386
+   1       3382     3385     3398     3399
+   1       3385     3386     3438     3399
+   1       3385     3398     3399     3438
+   1       3397      362     3404     3407
+   1       3399     3404      373     3455
+   1       3402     3407     3455      586
+   1       3397     3399     3402     3407
+   1       3397     3399     3407     3404
+   1       3399     3402     3407     3455
+   1       3399     3404     3455     3407
+   1       3398      370     3440     3438
+   1       3399     3438     3455      373
+   1       3402     3440      586     3455
+   1       3398     3399     3440     3402
+   1       3398     3399     3438     3440
+   1       3399     3402     3455     3440
+   1       3399     3438     3440     3455
+   1       1435       83     1439     1436
+   1       3395     1436     4332      579
+   1       3396     1439      582     4332
+   1       1435     3395     1439     3396
+   1       1435     3395     1436     1439
+   1       3395     3396     4332     1439
+   1       3395     1436     1439     4332
+   1       3400      579     4335     1451
+   1       1445     1451     1453       84
+   1       3402     4335      586     1453
+   1       3400     1445     4335     3402
+   1       3400     1445     1451     4335
+   1       1445     3402     1453     4335
+   1       1445     1451     4335     1453
+   1       3406      582     1561     4350
+   1       3407     4350     1562      586
+   1       1558     1561       93     1562
+   1       3406     3407     1561     1558
+   1       3406     3407     4350     1561
+   1       3407     1558     1562     1561
+   1       3407     4350     1561     1562
+   1       3393      361     3401     3397
+   1       3394     3397     3406      362
+   1       3396     3401      582     3406
+   1       3393     3394     3401     3396
+   1       3393     3394     3397     3401
+   1       3394     3396     3406     3401
+   1       3394     3397     3401     3406
+   1       3393      361     3400     3401
+   1       3395     3400      579     4332
+   1       3396     3401     4332      582
+   1       3393     3395     3396     3401
+   1       3393     3395     3401     3400
+   1       3395     3396     3401     4332
+   1       3395     3400     4332     3401
+   1       3397      362     3407     3406
+   1       3401     3406     4350      582
+   1       3402     3407      586     4350
+   1       3397     3401     3407     3402
+   1       3397     3401     3406     3407
+   1       3401     3402     4350     3407
+   1       3401     3406     3407     4350
+   1       3400      579     4332     4335
+   1       3401     4332      582     4350
+   1       3402     4335     4350      586
+   1       3400     3401     3402     4335
+   1       3400     3401     4335     4332
+   1       3401     3402     4335     4350
+   1       3401     4332     4350     4335
+   1        807       14      813      811
+   1       2381      813      209     2407
+   1       2379      811     2407      207
+   1        807     2381     2379      811
+   1        807     2381      811      813
+   1       2381     2379      811     2407
+   1       2381      813     2407      811
+   1       2426      209     1504     2427
+   1       1506     1504       89     1509
+   1       3379     2427     1509      596
+   1       2426     1506     3379     2427
+   1       2426     1506     2427     1504
+   1       1506     3379     2427     1509
+   1       1506     1504     1509     2427
+   1       2409      207     2411     1480
+   1       3369     2411      596     1485
+   1       1482     1480     1485       87
+   1       2409     3369     1482     1480
+   1       2409     3369     1480     2411
+   1       3369     1482     1480     1485
+   1       3369     2411     1485     1480
+   1       2385      357     3366     2410
+   1       2383     3366      355     2409
+   1       2379     2410     2409      207
+   1       2385     2383     2379     2410
+   1       2385     2383     2410     3366
+   1       2383     2379     2410     2409
+   1       2383     3366     2409     2410
+   1       2385      357     2410     2426
+   1       2381     2426     2407      209
+   1       2379     2410      207     2407
+   1       2385     2381     2410     2379
+   1       2385     2381     2426     2410
+   1       2381     2379     2407     2410
+   1       2381     2426     2410     2407
+   1       3366      355     2409     3369
+   1       2410     2409      207     2411
+   1       3379     3369     2411      596
+   1       3366     2410     3379     3369
+   1       3366     2410     3369     2409
+   1       2410     3379     3369     2411
+   1       2410     2409     2411     3369
+   1       2426      209     2427     2407
+   1       2410     2407     2411      207
+   1       3379     2427      596     2411
+   1       2426     2410     2427     3379
+   1       2426     2410     2407     2427
+   1       2410     3379     2411     2427
+   1       2410     2407     2427     2411
+   1       1508       89     1505     1513
+   1       2704     1505      244     2706
+   1       3470     1513     2706      609
+   1       1508     2704     3470     1513
+   1       1508     2704     1513     1505
+   1       2704     3470     1513     2706
+   1       2704     1505     2706     1513
+   1       2680      244      848     2700
+   1        846      848       18      850
+   1       2682     2700      850      246
+   1       2680      846     2682     2700
+   1       2680      846     2700      848
+   1        846     2682     2700      850
+   1        846      848      850     2700
+   1       3481      609     2721     1633
+   1       2720     2721      246     1629
+   1       1631     1633     1629       99
+   1       3481     2720     1631     1633
+   1       3481     2720     1633     2721
+   1       2720     1631     1633     1629
+   1       2720     2721     1629     1633
+   1       2684      242     2686     2688
+   1       3467     2686      379     3481
+   1       3470     2688     3481      609
+   1       2684     3467     3470     2688
+   1       2684     3467     2688     2686
+   1       3467     3470     2688     3481
+   1       3467     2686     3481     2688
+   1       2684      242     2688     2680
+   1       2704     2680     2706      244
+   1       3470     2688      609     2706
+   1       2684     2704     2688     3470
+   1       2684     2704     2680     2688
+   1       2704     3470     2706     2688
+   1       2704     2680     2688     2706
+   1       2686      379     3481     2720
+   1       2688     3481      609     2721
+   1       2682     2720     2721      246
+   1       2686     2688     2682     2720
+   1       2686     2688     2720     3481
+   1       2688     2682     2720     2721
+   1       2688     3481     2721     2720
+   1       2680      244     2700     2706
+   1       2688     2706     2721      609
+   1       2682     2700      246     2721
+   1       2680     2688     2700     2682
+   1       2680     2688     2706     2700
+   1       2688     2682     2721     2700
+   1       2688     2706     2700     2721
+   1       1483       87     1487     1481
+   1       3418     1487      598     2529
+   1       2527     1481     2529      224
+   1       1483     3418     2527     1481
+   1       1483     3418     1481     1487
+   1       3418     2527     1481     2529
+   1       3418     1487     2529     1481
+   1       3421      598     1632     2535
+   1       1630     1632       99     1628
+   1       2534     2535     1628      225
+   1       3421     1630     2534     2535
+   1       3421     1630     2535     1632
+   1       1630     2534     2535     1628
+   1       1630     1632     1628     2535
+   1       2517      224     2525      828
+   1       2518     2525      225      829
+   1        826      828      829       16
+   1       2517     2518      826      828
+   1       2517     2518      828     2525
+   1       2518      826      828      829
+   1       2518     2525      829      828
+   1       3416      366     2520     2528
+   1       2519     2520      222     2517
+   1       2527     2528     2517      224
+   1       3416     2519     2527     2528
+   1       3416     2519     2528     2520
+   1       2519     2527     2528     2517
+   1       2519     2520     2517     2528
+   1       3416      366     2528     3421
+   1       3418     3421     2529      598
+   1       2527     2528      224     2529
+   1       3416     3418     2528     2527
+   1       3416     3418     3421     2528
+   1       3418     2527     2529     2528
+   1       3418     3421     2528     2529
+   1       2520      222     2517     2518
+   1       2528     2517      224     2525
+   1       2534     2518     2525      225
+   1       2520     2528     2534     2518
+   1       2520     2528     2518     2517
+   1       2528     2534     2518     2525
+   1       2528     2517     2525     2518
+   1       3421      598     2535     2529
+   1       2528     2529     2525      224
+   1       2534     2535      225     2525
+   1       3421     2528     2535     2534
+   1       3421     2528     2529     2535
+   1       2528     2534     2525     2535
+   1       2528     2529     2535     2525
+   1       1014       38     1016     1018
+   1       3358     1016      364     3414
+   1       3361     1018     3414      375
+   1       1014     3358     3361     1018
+   1       1014     3358     1018     1016
+   1       3358     3361     1018     3414
+   1       3358     1016     3414     1018
+   1       3345      364      995     3412
+   1        994      995       36      996
+   1       3346     3412      996      365
+   1       3345      994     3346     3412
+   1       3345      994     3412      995
+   1        994     3346     3412      996
+   1        994      995      996     3412
+   1       3368      375     3417     1484
+   1       3367     3417      365     1483
+   1       1482     1484     1483       87
+   1       3368     3367     1482     1484
+   1       3368     3367     1484     3417
+   1       3367     1482     1484     1483
+   1       3367     3417     1483     1484
+   1       3343      351     3344     3347
+   1       3356     3344      355     3368
+   1       3361     3347     3368      375
+   1       3343     3356     3361     3347
+   1       3343     3356     3347     3344
+   1       3356     3361     3347     3368
+   1       3356     3344     3368     3347
+   1       3343      351     3347     3345
+   1       3358     3345     3414      364
+   1       3361     3347      375     3414
+   1       3343     3358     3347     3361
+   1       3343     3358     3345     3347
+   1       3358     3361     3414     3347
+   1       3358     3345     3347     3414
+   1       3344      355     3368     3367
+   1       3347     3368      375     3417
+   1       3346     3367     3417      365
+   1       3344     3347     3346     3367
+   1       3344     3347     3367     3368
+   1       3347     3346     3367     3417
+   1       3347     3368     3417     3367
+   1       3345      364     3412     3414
+   1       3347     3414     3417      375
+   1       3346     3412      365     3417
+   1       3345     3347     3412     3346
+   1       3345     3347     3414     3412
+   1       3347     3346     3417     3412
+   1       3347     3414     3412     3417
+   1       1014       38     1018     1019
+   1       3362     1019     3462      376
+   1       3361     1018      375     3462
+   1       1014     3362     1018     3361
+   1       1014     3362     1019     1018
+   1       3362     3361     3462     1018
+   1       3362     1019     1018     3462
+   1       3378      376     3469     1508
+   1       1506     1508     1509       89
+   1       3379     3469      596     1509
+   1       3378     1506     3469     3379
+   1       3378     1506     1508     3469
+   1       1506     3379     1509     3469
+   1       1506     1508     3469     1509
+   1       3368      375     1484     3464
+   1       3369     3464     1485      596
+   1       1482     1484       87     1485
+   1       3368     3369     1484     1482
+   1       3368     3369     3464     1484
+   1       3369     1482     1485     1484
+   1       3369     3464     1484     1485
+   1       3357      357     3377     3366
+   1       3356     3366     3368      355
+   1       3361     3377      375     3368
+   1       3357     3356     3377     3361
+   1       3357     3356     3366     3377
+   1       3356     3361     3368     3377
+   1       3356     3366     3377     3368
+   1       3357      357     3378     3377
+   1       3362     3378      376     3462
+   1       3361     3377     3462      375
+   1       3357     3362     3361     3377
+   1       3357     3362     3377     3378
+   1       3362     3361     3377     3462
+   1       3362     3378     3462     3377
+   1       3366      355     3369     3368
+   1       3377     3368     3464      375
+   1       3379     3369      596     3464
+   1       3366     3377     3369     3379
+   1       3366     3377     3368     3369
+   1       3377     3379     3464     3369
+   1       3377     3368     3369     3464
+   1       3378      376     3462     3469
+   1       3377     3462      375     3464
+   1       3379     3469     3464      596
+   1       3378     3377     3379     3469
+   1       3378     3377     3469     3462
+   1       3377     3379     3469     3464
+   1       3377     3462     3464     3469
+   1        995       36      996      997
+   1       3412      996      365     3416
+   1       3413      997     3416      366
+   1        995     3412     3413      997
+   1        995     3412      997      996
+   1       3412     3413      997     3416
+   1       3412      996     3416      997
+   1       3417      365     1483     3418
+   1       1484     1483       87     1487
+   1       3465     3418     1487      598
+   1       3417     1484     3465     3418
+   1       3417     1484     3418     1483
+   1       1484     3465     3418     1487
+   1       1484     1483     1487     3418
+   1       3420      366     3421     1630
+   1       3480     3421      598     1632
+   1       1631     1630     1632       99
+   1       3420     3480     1631     1630
+   1       3420     3480     1630     3421
+   1       3480     1631     1630     1632
+   1       3480     3421     1632     1630
+   1       3414      375     3463     3419
+   1       3415     3463      379     3420
+   1       3413     3419     3420      366
+   1       3414     3415     3413     3419
+   1       3414     3415     3419     3463
+   1       3415     3413     3419     3420
+   1       3415     3463     3420     3419
+   1       3414      375     3419     3417
+   1       3412     3417     3416      365
+   1       3413     3419      366     3416
+   1       3414     3412     3419     3413
+   1       3414     3412     3417     3419
+   1       3412     3413     3416     3419
+   1       3412     3417     3419     3416
+   1       3463      379     3420     3480
+   1       3419     3420      366     3421
+   1       3465     3480     3421      598
+   1       3463     3419     3465     3480
+   1       3463     3419     3480     3420
+   1       3419     3465     3480     3421
+   1       3419     3420     3421     3480
+   1       3417      365     3418     3416
+   1       3419     3416     3421      366
+   1       3465     3418      598     3421
+   1       3417     3419     3418     3465
+   1       3417     3419     3416     3418
+   1       3419     3465     3421     3418
+   1       3419     3416     3418     3421
+   1       1508       89     1513     1509
+   1       3469     1509     4406      596
+   1       3470     1513      609     4406
+   1       1508     3469     1513     3470
+   1       1508     3469     1509     1513
+   1       3469     3470     4406     1513
+   1       3469     1509     1513     4406
+   1       3464      596     4403     1485
+   1       1484     1485     1487       87
+   1       3465     4403      598     1487
+   1       3464     1484     4403     3465
+   1       3464     1484     1485     4403
+   1       1484     3465     1487     4403
+   1       1484     1485     4403     1487
+   1       3481      609     1633     4415
+   1       3480     4415     1632      598
+   1       1631     1633       99     1632
+   1       3481     3480     1633     1631
+   1       3481     3480     4415     1633
+   1       3480     1631     1632     1633
+   1       3480     4415     1633     1632
+   1       3462      375     3466     3463
+   1       3467     3463     3481      379
+   1       3470     3466      609     3481
+   1       3462     3467     3466     3470
+   1       3462     3467     3463     3466
+   1       3467     3470     3481     3466
+   1       3467     3463     3466     3481
+   1       3462      375     3464     3466
+   1       3469     3464      596     4406
+   1       3470     3466     4406      609
+   1       3462     3469     3470     3466
+   1       3462     3469     3466     3464
+   1       3469     3470     3466     4406
+   1       3469     3464     4406     3466
+   1       3463      379     3480     3481
+   1       3466     3481     4415      609
+   1       3465     3480      598     4415
+   1       3463     3466     3480     3465
+   1       3463     3466     3481     3480
+   1       3466     3465     4415     3480
+   1       3466     3481     3480     4415
+   1       3464      596     4406     4403
+   1       3466     4406      609     4415
+   1       3465     4403     4415      598
+   1       3464     3466     3465     4403
+   1       3464     3466     4403     4406
+   1       3466     3465     4403     4415
+   1       3466     4406     4415     4403
+   1        768        9      771      772
+   1       2125      771      167     2143
+   1       2126      772     2143      168
+   1        768     2125     2126      772
+   1        768     2125      772      771
+   1       2125     2126      772     2143
+   1       2125      771     2143      772
+   1       2146      167     1252     2147
+   1       1254     1252       67     1256
+   1       3235     2147     1256      513
+   1       2146     1254     3235     2147
+   1       2146     1254     2147     1252
+   1       1254     3235     2147     1256
+   1       1254     1252     1256     2147
+   1       2153      168     2155     1262
+   1       3240     2155      513     1268
+   1       1264     1262     1268       68
+   1       2153     3240     1264     1262
+   1       2153     3240     1262     2155
+   1       3240     1264     1262     1268
+   1       3240     2155     1268     1262
+   1       2128      326     3232     2152
+   1       2129     3232      327     2153
+   1       2126     2152     2153      168
+   1       2128     2129     2126     2152
+   1       2128     2129     2152     3232
+   1       2129     2126     2152     2153
+   1       2129     3232     2153     2152
+   1       2128      326     2152     2146
+   1       2125     2146     2143      167
+   1       2126     2152      168     2143
+   1       2128     2125     2152     2126
+   1       2128     2125     2146     2152
+   1       2125     2126     2143     2152
+   1       2125     2146     2152     2143
+   1       3232      327     2153     3240
+   1       2152     2153      168     2155
+   1       3235     3240     2155      513
+   1       3232     2152     3235     3240
+   1       3232     2152     3240     2153
+   1       2152     3235     3240     2155
+   1       2152     2153     2155     3240
+   1       2146      167     2147     2143
+   1       2152     2143     2155      168
+   1       3235     2147      513     2155
+   1       2146     2152     2147     3235
+   1       2146     2152     2143     2147
+   1       2152     3235     2155     2147
+   1       2152     2143     2147     2155
+   1       1255       67     1253     1259
+   1       2221     1253      180     2222
+   1       3258     1259     2222      516
+   1       1255     2221     3258     1259
+   1       1255     2221     1259     1253
+   1       2221     3258     1259     2222
+   1       2221     1253     2222     1259
+   1       2208      180      784     2218
+   1        782      784       11      785
+   1       2209     2218      785      181
+   1       2208      782     2209     2218
+   1       2208      782     2218      784
+   1        782     2209     2218      785
+   1        782      784      785     2218
+   1       3266      516     2228     1344
+   1       2227     2228      181     1340
+   1       1342     1344     1340       75
+   1       3266     2227     1342     1344
+   1       3266     2227     1344     2228
+   1       2227     1342     1344     1340
+   1       2227     2228     1340     1344
+   1       2210      178     2211     2212
+   1       3256     2211      334     3266
+   1       3258     2212     3266      516
+   1       2210     3256     3258     2212
+   1       2210     3256     2212     2211
+   1       3256     3258     2212     3266
+   1       3256     2211     3266     2212
+   1       2210      178     2212     2208
+   1       2221     2208     2222      180
+   1       3258     2212      516     2222
+   1       2210     2221     2212     3258
+   1       2210     2221     2208     2212
+   1       2221     3258     2222     2212
+   1       2221     2208     2212     2222
+   1       2211      334     3266     2227
+   1       2212     3266      516     2228
+   1       2209     2227     2228      181
+   1       2211     2212     2209     2227
+   1       2211     2212     2227     3266
+   1       2212     2209     2227     2228
+   1       2212     3266     2228     2227
+   1       2208      180     2218     2222
+   1       2212     2222     2228      516
+   1       2209     2218      181     2228
+   1       2208     2212     2218     2209
+   1       2208     2212     2222     2218
+   1       2212     2209     2228     2218
+   1       2212     2222     2218     2228
+   1       1266       68     1272     1263
+   1       3277     1272      522     2271
+   1       2268     1263     2271      187
+   1       1266     3277     2268     1263
+   1       1266     3277     1263     1272
+   1       3277     2268     1263     2271
+   1       3277     1272     2271     1263
+   1       3280      522     1345     2284
+   1       1343     1345       75     1341
+   1       2283     2284     1341      189
+   1       3280     1343     2283     2284
+   1       3280     1343     2284     1345
+   1       1343     2283     2284     1341
+   1       1343     1345     1341     2284
+   1       2250      187     2265      791
+   1       2252     2265      189      793
+   1        789      791      793       12
+   1       2250     2252      789      791
+   1       2250     2252      791     2265
+   1       2252      789      791      793
+   1       2252     2265      793      791
+   1       3274      338     2255     2269
+   1       2253     2255      185     2250
+   1       2268     2269     2250      187
+   1       3274     2253     2268     2269
+   1       3274     2253     2269     2255
+   1       2253     2268     2269     2250
+   1       2253     2255     2250     2269
+   1       3274      338     2269     3280
+   1       3277     3280     2271      522
+   1       2268     2269      187     2271
+   1       3274     3277     2269     2268
+   1       3274     3277     3280     2269
+   1       3277     2268     2271     2269
+   1       3277     3280     2269     2271
+   1       2255      185     2250     2252
+   1       2269     2250      187     2265
+   1       2283     2252     2265      189
+   1       2255     2269     2283     2252
+   1       2255     2269     2252     2250
+   1       2269     2283     2252     2265
+   1       2269     2250     2265     2252
+   1       3280      522     2284     2271
+   1       2269     2271     2265      187
+   1       2283     2284      189     2265
+   1       3280     2269     2284     2283
+   1       3280     2269     2271     2284
+   1       2269     2283     2265     2284
+   1       2269     2271     2284     2265
+   1        942       30      943      945
+   1       3218      943      331     3251
+   1       3220      945     3251      333
+   1        942     3218     3220      945
+   1        942     3218      945      943
+   1       3218     3220      945     3251
+   1       3218      943     3251      945
+   1       3224      331      951     3253
+   1        949      951       31      953
+   1       3227     3253      953      336
+   1       3224      949     3227     3253
+   1       3224      949     3253      951
+   1        949     3227     3253      953
+   1        949      951      953     3253
+   1       3236      333     3260     1265
+   1       3238     3260      336     1266
+   1       1264     1265     1266       68
+   1       3236     3238     1264     1265
+   1       3236     3238     1265     3260
+   1       3238     1264     1265     1266
+   1       3238     3260     1266     1265
+   1       3215      324     3222     3225
+   1       3217     3222      327     3236
+   1       3220     3225     3236      333
+   1       3215     3217     3220     3225
+   1       3215     3217     3225     3222
+   1       3217     3220     3225     3236
+   1       3217     3222     3236     3225
+   1       3215      324     3225     3224
+   1       3218     3224     3251      331
+   1       3220     3225      333     3251
+   1       3215     3218     3225     3220
+   1       3215     3218     3224     3225
+   1       3218     3220     3251     3225
+   1       3218     3224     3225     3251
+   1       3222      327     3236     3238
+   1       3225     3236      333     3260
+   1       3227     3238     3260      336
+   1       3222     3225     3227     3238
+   1       3222     3225     3238     3236
+   1       3225     3227     3238     3260
+   1       3225     3236     3260     3238
+   1       3224      331     3253     3251
+   1       3225     3251     3260      333
+   1       3227     3253      336     3260
+   1       3224     3225     3253     3227
+   1       3224     3225     3251     3253
+   1       3225     3227     3260     3253
+   1       3225     3251     3253     3260
+   1        942       30      945      944
+   1       3219      944     3255      332
+   1       3220      945      333     3255
+   1        942     3219      945     3220
+   1        942     3219      944      945
+   1       3219     3220     3255      945
+   1       3219      944      945     3255
+   1       3233      332     3257     1255
+   1       1254     1255     1256       67
+   1       3235     3257      513     1256
+   1       3233     1254     3257     3235
+   1       3233     1254     1255     3257
+   1       1254     3235     1256     3257
+   1       1254     1255     3257     1256
+   1       3236      333     1265     3262
+   1       3240     3262     1268      513
+   1       1264     1265       68     1268
+   1       3236     3240     1265     1264
+   1       3236     3240     3262     1265
+   1       3240     1264     1268     1265
+   1       3240     3262     1265     1268
+   1       3216      326     3234     3232
+   1       3217     3232     3236      327
+   1       3220     3234      333     3236
+   1       3216     3217     3234     3220
+   1       3216     3217     3232     3234
+   1       3217     3220     3236     3234
+   1       3217     3232     3234     3236
+   1       3216      326     3233     3234
+   1       3219     3233      332     3255
+   1       3220     3234     3255      333
+   1       3216     3219     3220     3234
+   1       3216     3219     3234     3233
+   1       3219     3220     3234     3255
+   1       3219     3233     3255     3234
+   1       3232      327     3240     3236
+   1       3234     3236     3262      333
+   1       3235     3240      513     3262
+   1       3232     3234     3240     3235
+   1       3232     3234     3236     3240
+   1       3234     3235     3262     3240
+   1       3234     3236     3240     3262
+   1       3233      332     3255     3257
+   1       3234     3255      333     3262
+   1       3235     3257     3262      513
+   1       3233     3234     3235     3257
+   1       3233     3234     3257     3255
+   1       3234     3235     3257     3262
+   1       3234     3255     3262     3257
+   1        951       31      953      955
+   1       3253      953      336     3274
+   1       3254      955     3274      338
+   1        951     3253     3254      955
+   1        951     3253      955      953
+   1       3253     3254      955     3274
+   1       3253      953     3274      955
+   1       3260      336     1266     3277
+   1       1265     1266       68     1272
+   1       3264     3277     1272      522
+   1       3260     1265     3264     3277
+   1       3260     1265     3277     1266
+   1       1265     3264     3277     1272
+   1       1265     1266     1272     3277
+   1       3265      338     3280     1343
+   1       3267     3280      522     1345
+   1       1342     1343     1345       75
+   1       3265     3267     1342     1343
+   1       3265     3267     1343     3280
+   1       3267     1342     1343     1345
+   1       3267     3280     1345     1343
+   1       3251      333     3259     3261
+   1       3252     3259      334     3265
+   1       3254     3261     3265      338
+   1       3251     3252     3254     3261
+   1       3251     3252     3261     3259
+   1       3252     3254     3261     3265
+   1       3252     3259     3265     3261
+   1       3251      333     3261     3260
+   1       3253     3260     3274      336
+   1       3254     3261      338     3274
+   1       3251     3253     3261     3254
+   1       3251     3253     3260     3261
+   1       3253     3254     3274     3261
+   1       3253     3260     3261     3274
+   1       3259      334     3265     3267
+   1       3261     3265      338     3280
+   1       3264     3267     3280      522
+   1       3259     3261     3264     3267
+   1       3259     3261     3267     3265
+   1       3261     3264     3267     3280
+   1       3261     3265     3280     3267
+   1       3260      336     3277     3274
+   1       3261     3274     3280      338
+   1       3264     3277      522     3280
+   1       3260     3261     3277     3264
+   1       3260     3261     3274     3277
+   1       3261     3264     3280     3277
+   1       3261     3274     3277     3280
+   1       1255       67     1259     1256
+   1       3257     1256     4073      513
+   1       3258     1259      516     4073
+   1       1255     3257     1259     3258
+   1       1255     3257     1256     1259
+   1       3257     3258     4073     1259
+   1       3257     1256     1259     4073
+   1       3262      513     4076     1268
+   1       1265     1268     1272       68
+   1       3264     4076      522     1272
+   1       3262     1265     4076     3264
+   1       3262     1265     1268     4076
+   1       1265     3264     1272     4076
+   1       1265     1268     4076     1272
+   1       3266      516     1344     4091
+   1       3267     4091     1345      522
+   1       1342     1344       75     1345
+   1       3266     3267     1344     1342
+   1       3266     3267     4091     1344
+   1       3267     1342     1345     1344
+   1       3267     4091     1344     1345
+   1       3255      333     3263     3259
+   1       3256     3259     3266      334
+   1       3258     3263      516     3266
+   1       3255     3256     3263     3258
+   1       3255     3256     3259     3263
+   1       3256     3258     3266     3263
+   1       3256     3259     3263     3266
+   1       3255      333     3262     3263
+   1       3257     3262      513     4073
+   1       3258     3263     4073      516
+   1       3255     3257     3258     3263
+   1       3255     3257     3263     3262
+   1       3257     3258     3263     4073
+   1       3257     3262     4073     3263
+   1       3259      334     3267     3266
+   1       3263     3266     4091      516
+   1       3264     3267      522     4091
+   1       3259     3263     3267     3264
+   1       3259     3263     3266     3267
+   1       3263     3264     4091     3267
+   1       3263     3266     3267     4091
+   1       3262      513     4073     4076
+   1       3263     4073      516     4091
+   1       3264     4076     4091      522
+   1       3262     3263     3264     4076
+   1       3262     3263     4076     4073
+   1       3263     3264     4076     4091
+   1       3263     4073     4091     4076
+   1        768        9      772      770
+   1       2126      772      168     2136
+   1       2124      770     2136      166
+   1        768     2126     2124      770
+   1        768     2126      770      772
+   1       2126     2124      770     2136
+   1       2126      772     2136      770
+   1       2153      168     1262     2154
+   1       1264     1262       68     1267
+   1       3239     2154     1267      508
+   1       2153     1264     3239     2154
+   1       2153     1264     2154     1262
+   1       1264     3239     2154     1267
+   1       1264     1262     1267     2154
+   1       2138      166     2140     1242
+   1       3231     2140      508     1247
+   1       1244     1242     1247       66
+   1       2138     3231     1244     1242
+   1       2138     3231     1242     2140
+   1       3231     1244     1242     1247
+   1       3231     2140     1247     1242
+   1       2129      327     3228     2139
+   1       2127     3228      325     2138
+   1       2124     2139     2138      166
+   1       2129     2127     2124     2139
+   1       2129     2127     2139     3228
+   1       2127     2124     2139     2138
+   1       2127     3228     2138     2139
+   1       2129      327     2139     2153
+   1       2126     2153     2136      168
+   1       2124     2139      166     2136
+   1       2129     2126     2139     2124
+   1       2129     2126     2153     2139
+   1       2126     2124     2136     2139
+   1       2126     2153     2139     2136
+   1       3228      325     2138     3231
+   1       2139     2138      166     2140
+   1       3239     3231     2140      508
+   1       3228     2139     3239     3231
+   1       3228     2139     3231     2138
+   1       2139     3239     3231     2140
+   1       2139     2138     2140     3231
+   1       2153      168     2154     2136
+   1       2139     2136     2140      166
+   1       3239     2154      508     2140
+   1       2153     2139     2154     3239
+   1       2153     2139     2136     2154
+   1       2139     3239     2140     2154
+   1       2139     2136     2154     2140
+   1       1266       68     1263     1271
+   1       2268     1263      187     2270
+   1       3276     1271     2270      521
+   1       1266     2268     3276     1271
+   1       1266     2268     1271     1263
+   1       2268     3276     1271     2270
+   1       2268     1263     2270     1271
+   1       2250      187      791     2264
+   1        789      791       12      792
+   1       2251     2264      792      188
+   1       2250      789     2251     2264
+   1       2250      789     2264      791
+   1        789     2251     2264      792
+   1        789      791      792     2264
+   1       3279      521     2278     1315
+   1       2277     2278      188     1311
+   1       1313     1315     1311       72
+   1       3279     2277     1313     1315
+   1       3279     2277     1315     2278
+   1       2277     1313     1315     1311
+   1       2277     2278     1311     1315
+   1       2253      185     2254     2256
+   1       3273     2254      337     3279
+   1       3276     2256     3279      521
+   1       2253     3273     3276     2256
+   1       2253     3273     2256     2254
+   1       3273     3276     2256     3279
+   1       3273     2254     3279     2256
+   1       2253      185     2256     2250
+   1       2268     2250     2270      187
+   1       3276     2256      521     2270
+   1       2253     2268     2256     3276
+   1       2253     2268     2250     2256
+   1       2268     3276     2270     2256
+   1       2268     2250     2256     2270
+   1       2254      337     3279     2277
+   1       2256     3279      521     2278
+   1       2251     2277     2278      188
+   1       2254     2256     2251     2277
+   1       2254     2256     2277     3279
+   1       2256     2251     2277     2278
+   1       2256     3279     2278     2277
+   1       2250      187     2264     2270
+   1       2256     2270     2278      521
+   1       2251     2264      188     2278
+   1       2250     2256     2264     2251
+   1       2250     2256     2270     2264
+   1       2256     2251     2278     2264
+   1       2256     2270     2264     2278
+   1       1245       66     1249     1243
+   1       3247     1249      510     2189
+   1       2187     1243     2189      174
+   1       1245     3247     2187     1243
+   1       1245     3247     1243     1249
+   1       3247     2187     1243     2189
+   1       3247     1249     2189     1243
+   1       3250      510     1314     2195
+   1       1312     1314       72     1310
+   1       2194     2195     1310      175
+   1       3250     1312     2194     2195
+   1       3250     1312     2195     1314
+   1       1312     2194     2195     1310
+   1       1312     1314     1310     2195
+   1       2177      174     2185      778
+   1       2178     2185      175      779
+   1        776      778      779       10
+   1       2177     2178      776      778
+   1       2177     2178      778     2185
+   1       2178      776      778      779
+   1       2178     2185      779      778
+   1       3245      330     2180     2188
+   1       2179     2180      172     2177
+   1       2187     2188     2177      174
+   1       3245     2179     2187     2188
+   1       3245     2179     2188     2180
+   1       2179     2187     2188     2177
+   1       2179     2180     2177     2188
+   1       3245      330     2188     3250
+   1       3247     3250     2189      510
+   1       2187     2188      174     2189
+   1       3245     3247     2188     2187
+   1       3245     3247     3250     2188
+   1       3247     2187     2189     2188
+   1       3247     3250     2188     2189
+   1       2180      172     2177     2178
+   1       2188     2177      174     2185
+   1       2194     2178     2185      175
+   1       2180     2188     2194     2178
+   1       2180     2188     2178     2177
+   1       2188     2194     2178     2185
+   1       2188     2177     2185     2178
+   1       3250      510     2195     2189
+   1       2188     2189     2185      174
+   1       2194     2195      175     2185
+   1       3250     2188     2195     2194
+   1       3250     2188     2189     2195
+   1       2188     2194     2185     2195
+   1       2188     2189     2195     2185
+   1        949       31      950      952
+   1       3223      950      328     3243
+   1       3226      952     3243      335
+   1        949     3223     3226      952
+   1        949     3223      952      950
+   1       3223     3226      952     3243
+   1       3223      950     3243      952
+   1       3212      328      937     3241
+   1        936      937       29      938
+   1       3213     3241      938      329
+   1       3212      936     3213     3241
+   1       3212      936     3241      937
+   1        936     3213     3241      938
+   1        936      937      938     3241
+   1       3230      335     3246     1246
+   1       3229     3246      329     1245
+   1       1244     1246     1245       66
+   1       3230     3229     1244     1246
+   1       3230     3229     1246     3246
+   1       3229     1244     1246     1245
+   1       3229     3246     1245     1246
+   1       3210      322     3211     3214
+   1       3221     3211      325     3230
+   1       3226     3214     3230      335
+   1       3210     3221     3226     3214
+   1       3210     3221     3214     3211
+   1       3221     3226     3214     3230
+   1       3221     3211     3230     3214
+   1       3210      322     3214     3212
+   1       3223     3212     3243      328
+   1       3226     3214      335     3243
+   1       3210     3223     3214     3226
+   1       3210     3223     3212     3214
+   1       3223     3226     3243     3214
+   1       3223     3212     3214     3243
+   1       3211      325     3230     3229
+   1       3214     3230      335     3246
+   1       3213     3229     3246      329
+   1       3211     3214     3213     3229
+   1       3211     3214     3229     3230
+   1       3214     3213     3229     3246
+   1       3214     3230     3246     3229
+   1       3212      328     3241     3243
+   1       3214     3243     3246      335
+   1       3213     3241      329     3246
+   1       3212     3214     3241     3213
+   1       3212     3214     3243     3241
+   1       3214     3213     3246     3241
+   1       3214     3243     3241     3246
+   1        949       31      952      953
+   1       3227      953     3268      336
+   1       3226      952      335     3268
+   1        949     3227      952     3226
+   1        949     3227      953      952
+   1       3227     3226     3268      952
+   1       3227      953      952     3268
+   1       3238      336     3275     1266
+   1       1264     1266     1267       68
+   1       3239     3275      508     1267
+   1       3238     1264     3275     3239
+   1       3238     1264     1266     3275
+   1       1264     3239     1267     3275
+   1       1264     1266     3275     1267
+   1       3230      335     1246     3270
+   1       3231     3270     1247      508
+   1       1244     1246       66     1247
+   1       3230     3231     1246     1244
+   1       3230     3231     3270     1246
+   1       3231     1244     1247     1246
+   1       3231     3270     1246     1247
+   1       3222      327     3237     3228
+   1       3221     3228     3230      325
+   1       3226     3237      335     3230
+   1       3222     3221     3237     3226
+   1       3222     3221     3228     3237
+   1       3221     3226     3230     3237
+   1       3221     3228     3237     3230
+   1       3222      327     3238     3237
+   1       3227     3238      336     3268
+   1       3226     3237     3268      335
+   1       3222     3227     3226     3237
+   1       3222     3227     3237     3238
+   1       3227     3226     3237     3268
+   1       3227     3238     3268     3237
+   1       3228      325     3231     3230
+   1       3237     3230     3270      335
+   1       3239     3231      508     3270
+   1       3228     3237     3231     3239
+   1       3228     3237     3230     3231
+   1       3237     3239     3270     3231
+   1       3237     3230     3231     3270
+   1       3238      336     3268     3275
+   1       3237     3268      335     3270
+   1       3239     3275     3270      508
+   1       3238     3237     3239     3275
+   1       3238     3237     3275     3268
+   1       3237     3239     3275     3270
+   1       3237     3268     3270     3275
+   1        937       29      938      939
+   1       3241      938      329     3245
+   1       3242      939     3245      330
+   1        937     3241     3242      939
+   1        937     3241      939      938
+   1       3241     3242      939     3245
+   1       3241      938     3245      939
+   1       3246      329     1245     3247
+   1       1246     1245       66     1249
+   1       3271     3247     1249      510
+   1       3246     1246     3271     3247
+   1       3246     1246     3247     1245
+   1       1246     3271     3247     1249
+   1       1246     1245     1249     3247
+   1       3249      330     3250     1312
+   1       3278     3250      510     1314
+   1       1313     1312     1314       72
+   1       3249     3278     1313     1312
+   1       3249     3278     1312     3250
+   1       3278     1313     1312     1314
+   1       3278     3250     1314     1312
+   1       3243      335     3269     3248
+   1       3244     3269      337     3249
+   1       3242     3248     3249      330
+   1       3243     3244     3242     3248
+   1       3243     3244     3248     3269
+   1       3244     3242     3248     3249
+   1       3244     3269     3249     3248
+   1       3243      335     3248     3246
+   1       3241     3246     3245      329
+   1       3242     3248      330     3245
+   1       3243     3241     3248     3242
+   1       3243     3241     3246     3248
+   1       3241     3242     3245     3248
+   1       3241     3246     3248     3245
+   1       3269      337     3249     3278
+   1       3248     3249      330     3250
+   1       3271     3278     3250      510
+   1       3269     3248     3271     3278
+   1       3269     3248     3278     3249
+   1       3248     3271     3278     3250
+   1       3248     3249     3250     3278
+   1       3246      329     3247     3245
+   1       3248     3245     3250      330
+   1       3271     3247      510     3250
+   1       3246     3248     3247     3271
+   1       3246     3248     3245     3247
+   1       3248     3271     3250     3247
+   1       3248     3245     3247     3250
+   1       1266       68     1271     1267
+   1       3275     1267     4048      508
+   1       3276     1271      521     4048
+   1       1266     3275     1271     3276
+   1       1266     3275     1267     1271
+   1       3275     3276     4048     1271
+   1       3275     1267     1271     4048
+   1       3270      508     4045     1247
+   1       1246     1247     1249       66
+   1       3271     4045      510     1249
+   1       3270     1246     4045     3271
+   1       3270     1246     1247     4045
+   1       1246     3271     1249     4045
+   1       1246     1247     4045     1249
+   1       3279      521     1315     4057
+   1       3278     4057     1314      510
+   1       1313     1315       72     1314
+   1       3279     3278     1315     1313
+   1       3279     3278     4057     1315
+   1       3278     1313     1314     1315
+   1       3278     4057     1315     1314
+   1       3268      335     3272     3269
+   1       3273     3269     3279      337
+   1       3276     3272      521     3279
+   1       3268     3273     3272     3276
+   1       3268     3273     3269     3272
+   1       3273     3276     3279     3272
+   1       3273     3269     3272     3279
+   1       3268      335     3270     3272
+   1       3275     3270      508     4048
+   1       3276     3272     4048      521
+   1       3268     3275     3276     3272
+   1       3268     3275     3272     3270
+   1       3275     3276     3272     4048
+   1       3275     3270     4048     3272
+   1       3269      337     3278     3279
+   1       3272     3279     4057      521
+   1       3271     3278      510     4057
+   1       3269     3272     3278     3271
+   1       3269     3272     3279     3278
+   1       3272     3271     4057     3278
+   1       3272     3279     3278     4057
+   1       3270      508     4048     4045
+   1       3272     4048      521     4057
+   1       3271     4045     4057      510
+   1       3270     3272     3271     4045
+   1       3270     3272     4045     4048
+   1       3272     3271     4045     4057
+   1       3272     4048     4057     4045
+   1        750        5      753      752
+   1       2040      753      149     2048
+   1       2039      752     2048      148
+   1        750     2040     2039      752
+   1        750     2040      752      753
+   1       2040     2039      752     2048
+   1       2040      753     2048      752
+   1       2053      149     1119     2054
+   1       1121     1119       51     1122
+   1       3677     2054     1122      432
+   1       2053     1121     3677     2054
+   1       2053     1121     2054     1119
+   1       1121     3677     2054     1122
+   1       1121     1119     1122     2054
+   1       2049      148     2052     1110
+   1       3672     2052      432     1114
+   1       1112     1110     1114       50
+   1       2049     3672     1112     1110
+   1       2049     3672     1110     2052
+   1       3672     1112     1110     1114
+   1       3672     2052     1114     1110
+   1       2043      424     3667     2050
+   1       2042     3667      423     2049
+   1       2039     2050     2049      148
+   1       2043     2042     2039     2050
+   1       2043     2042     2050     3667
+   1       2042     2039     2050     2049
+   1       2042     3667     2049     2050
+   1       2043      424     2050     2053
+   1       2040     2053     2048      149
+   1       2039     2050      148     2048
+   1       2043     2040     2050     2039
+   1       2043     2040     2053     2050
+   1       2040     2039     2048     2050
+   1       2040     2053     2050     2048
+   1       3667      423     2049     3672
+   1       2050     2049      148     2052
+   1       3677     3672     2052      432
+   1       3667     2050     3677     3672
+   1       3667     2050     3672     2049
+   1       2050     3677     3672     2052
+   1       2050     2049     2052     3672
+   1       2053      149     2054     2048
+   1       2050     2048     2052      148
+   1       3677     2054      432     2052
+   1       2053     2050     2054     3677
+   1       2053     2050     2048     2054
+   1       2050     3677     2052     2054
+   1       2050     2048     2054     2052
+   1       1123       51     1120     1124
+   1       3097     1120      302     3098
+   1       3729     1124     3098      438
+   1       1123     3097     3729     1124
+   1       1123     3097     1124     1120
+   1       3097     3729     1124     3098
+   1       3097     1120     3098     1124
+   1       3095      302      906     3096
+   1        908      906       25      910
+   1       3104     3096      910      306
+   1       3095      908     3104     3096
+   1       3095      908     3096      906
+   1        908     3104     3096      910
+   1        908      906      910     3096
+   1       3731      438     3117     1911
+   1       3118     3117      306     1909
+   1       1913     1911     1909      123
+   1       3731     3118     1913     1911
+   1       3731     3118     1911     3117
+   1       3118     1913     1911     1909
+   1       3118     3117     1909     1911
+   1       3105      304     3108     3106
+   1       3730     3108      657     3731
+   1       3729     3106     3731      438
+   1       3105     3730     3729     3106
+   1       3105     3730     3106     3108
+   1       3730     3729     3106     3731
+   1       3730     3108     3731     3106
+   1       3105      304     3106     3095
+   1       3097     3095     3098      302
+   1       3729     3106      438     3098
+   1       3105     3097     3106     3729
+   1       3105     3097     3095     3106
+   1       3097     3729     3098     3106
+   1       3097     3095     3106     3098
+   1       3108      657     3731     3118
+   1       3106     3731      438     3117
+   1       3104     3118     3117      306
+   1       3108     3106     3104     3118
+   1       3108     3106     3118     3731
+   1       3106     3104     3118     3117
+   1       3106     3731     3117     3118
+   1       3095      302     3096     3098
+   1       3106     3098     3117      438
+   1       3104     3096      306     3117
+   1       3095     3106     3096     3104
+   1       3095     3106     3098     3096
+   1       3106     3104     3117     3096
+   1       3106     3098     3096     3117
+   1       1115       50     1118     1111
+   1       3715     1118      436     3036
+   1       3034     1111     3036      293
+   1       1115     3715     3034     1111
+   1       1115     3715     1111     1118
+   1       3715     3034     1111     3036
+   1       3715     1118     3036     1111
+   1       3727      436     1910     3087
+   1       1912     1910      123     1908
+   1       3088     3087     1908      300
+   1       3727     1912     3088     3087
+   1       3727     1912     3087     1910
+   1       1912     3088     3087     1908
+   1       1912     1910     1908     3087
+   1       3031      293     3033      897
+   1       3049     3033      300      904
+   1        899      897      904       24
+   1       3031     3049      899      897
+   1       3031     3049      897     3033
+   1       3049      899      897      904
+   1       3049     3033      904      897
+   1       3718      654     3055     3037
+   1       3050     3055      295     3031
+   1       3034     3037     3031      293
+   1       3718     3050     3034     3037
+   1       3718     3050     3037     3055
+   1       3050     3034     3037     3031
+   1       3050     3055     3031     3037
+   1       3718      654     3037     3727
+   1       3715     3727     3036      436
+   1       3034     3037      293     3036
+   1       3718     3715     3037     3034
+   1       3718     3715     3727     3037
+   1       3715     3034     3036     3037
+   1       3715     3727     3037     3036
+   1       3055      295     3031     3049
+   1       3037     3031      293     3033
+   1       3088     3049     3033      300
+   1       3055     3037     3088     3049
+   1       3055     3037     3049     3031
+   1       3037     3088     3049     3033
+   1       3037     3031     3033     3049
+   1       3727      436     3087     3036
+   1       3037     3036     3033      293
+   1       3088     3087      300     3033
+   1       3727     3037     3087     3088
+   1       3727     3037     3036     3087
+   1       3037     3088     3033     3087
+   1       3037     3036     3087     3033
+   1       1620       98     1624     1621
+   1       3694     1624      649     3722
+   1       3692     1621     3722      434
+   1       1620     3694     3692     1621
+   1       1620     3694     1621     1624
+   1       3694     3692     1621     3722
+   1       3694     1624     3722     1621
+   1       3690      649     1612     3716
+   1       1606     1612       97     1607
+   1       3687     3716     1607      433
+   1       3690     1606     3687     3716
+   1       3690     1606     3716     1612
+   1       1606     3687     3716     1607
+   1       1606     1612     1607     3716
+   1       3674      434     3713     1116
+   1       3673     3713      433     1115
+   1       1112     1116     1115       50
+   1       3674     3673     1112     1116
+   1       3674     3673     1116     3713
+   1       3673     1112     1116     1115
+   1       3673     3713     1115     1116
+   1       3685      426     3668     3688
+   1       3669     3668      423     3674
+   1       3692     3688     3674      434
+   1       3685     3669     3692     3688
+   1       3685     3669     3688     3668
+   1       3669     3692     3688     3674
+   1       3669     3668     3674     3688
+   1       3685      426     3688     3690
+   1       3694     3690     3722      649
+   1       3692     3688      434     3722
+   1       3685     3694     3688     3692
+   1       3685     3694     3690     3688
+   1       3694     3692     3722     3688
+   1       3694     3690     3688     3722
+   1       3668      423     3674     3673
+   1       3688     3674      434     3713
+   1       3687     3673     3713      433
+   1       3668     3688     3687     3673
+   1       3668     3688     3673     3674
+   1       3688     3687     3673     3713
+   1       3688     3674     3713     3673
+   1       3690      649     3716     3722
+   1       3688     3722     3713      434
+   1       3687     3716      433     3713
+   1       3690     3688     3716     3687
+   1       3690     3688     3722     3716
+   1       3688     3687     3713     3716
+   1       3688     3722     3716     3713
+   1       1620       98     1621     1622
+   1       3693     1622     3720      437
+   1       3692     1621      434     3720
+   1       1620     3693     1621     3692
+   1       1620     3693     1622     1621
+   1       3693     3692     3720     1621
+   1       3693     1622     1621     3720
+   1       3679      437     3711     1123
+   1       1121     1123     1122       51
+   1       3677     3711      432     1122
+   1       3679     1121     3711     3677
+   1       3679     1121     1123     3711
+   1       1121     3677     1122     3711
+   1       1121     1123     3711     1122
+   1       3674      434     1116     3709
+   1       3672     3709     1114      432
+   1       1112     1116       50     1114
+   1       3674     3672     1116     1112
+   1       3674     3672     3709     1116
+   1       3672     1112     1114     1116
+   1       3672     3709     1116     1114
+   1       3676      424     3678     3667
+   1       3669     3667     3674      423
+   1       3692     3678      434     3674
+   1       3676     3669     3678     3692
+   1       3676     3669     3667     3678
+   1       3669     3692     3674     3678
+   1       3669     3667     3678     3674
+   1       3676      424     3679     3678
+   1       3693     3679      437     3720
+   1       3692     3678     3720      434
+   1       3676     3693     3692     3678
+   1       3676     3693     3678     3679
+   1       3693     3692     3678     3720
+   1       3693     3679     3720     3678
+   1       3667      423     3672     3674
+   1       3678     3674     3709      434
+   1       3677     3672      432     3709
+   1       3667     3678     3672     3677
+   1       3667     3678     3674     3672
+   1       3678     3677     3709     3672
+   1       3678     3674     3672     3709
+   1       3679      437     3720     3711
+   1       3678     3720      434     3709
+   1       3677     3711     3709      432
+   1       3679     3678     3677     3711
+   1       3679     3678     3711     3720
+   1       3678     3677     3711     3709
+   1       3678     3720     3709     3711
+   1       1612       97     1607     1617
+   1       3716     1607      433     3718
+   1       4652     1617     3718      654
+   1       1612     3716     4652     1617
+   1       1612     3716     1617     1607
+   1       3716     4652     1617     3718
+   1       3716     1607     3718     1617
+   1       3713      433     1115     3715
+   1       1116     1115       50     1118
+   1       3719     3715     1118      436
+   1       3713     1116     3719     3715
+   1       3713     1116     3715     1115
+   1       1116     3719     3715     1118
+   1       1116     1115     1118     3715
+   1       4668      654     3727     1912
+   1       3728     3727      436     1910
+   1       1913     1912     1910      123
+   1       4668     3728     1913     1912
+   1       4668     3728     1912     3727
+   1       3728     1913     1912     1910
+   1       3728     3727     1910     1912
+   1       3722      434     3724     3723
+   1       4654     3724      657     4668
+   1       4652     3723     4668      654
+   1       3722     4654     4652     3723
+   1       3722     4654     3723     3724
+   1       4654     4652     3723     4668
+   1       4654     3724     4668     3723
+   1       3722      434     3723     3713
+   1       3716     3713     3718      433
+   1       4652     3723      654     3718
+   1       3722     3716     3723     4652
+   1       3722     3716     3713     3723
+   1       3716     4652     3718     3723
+   1       3716     3713     3723     3718
+   1       3724      657     4668     3728
+   1       3723     4668      654     3727
+   1       3719     3728     3727      436
+   1       3724     3723     3719     3728
+   1       3724     3723     3728     4668
+   1       3723     3719     3728     3727
+   1       3723     4668     3727     3728
+   1       3713      433     3715     3718
+   1       3723     3718     3727      654
+   1       3719     3715      436     3727
+   1       3713     3723     3715     3719
+   1       3713     3723     3718     3715
+   1       3723     3719     3727     3715
+   1       3723     3718     3715     3727
+   1       1123       51     1124     1122
+   1       3711     1122     3712      432
+   1       3729     1124      438     3712
+   1       1123     3711     1124     3729
+   1       1123     3711     1122     1124
+   1       3711     3729     3712     1124
+   1       3711     1122     1124     3712
+   1       3709      432     3710     1114
+   1       1116     1114     1118       50
+   1       3719     3710      436     1118
+   1       3709     1116     3710     3719
+   1       3709     1116     1114     3710
+   1       1116     3719     1118     3710
+   1       1116     1114     3710     1118
+   1       3731      438     1911     3726
+   1       3728     3726     1910      436
+   1       1913     1911      123     1910
+   1       3731     3728     1911     1913
+   1       3731     3728     3726     1911
+   1       3728     1913     1910     1911
+   1       3728     3726     1911     1910
+   1       3720      434     3721     3724
+   1       3730     3724     3731      657
+   1       3729     3721      438     3731
+   1       3720     3730     3721     3729
+   1       3720     3730     3724     3721
+   1       3730     3729     3731     3721
+   1       3730     3724     3721     3731
+   1       3720      434     3709     3721
+   1       3711     3709      432     3712
+   1       3729     3721     3712      438
+   1       3720     3711     3729     3721
+   1       3720     3711     3721     3709
+   1       3711     3729     3721     3712
+   1       3711     3709     3712     3721
+   1       3724      657     3728     3731
+   1       3721     3731     3726      438
+   1       3719     3728      436     3726
+   1       3724     3721     3728     3719
+   1       3724     3721     3731     3728
+   1       3721     3719     3726     3728
+   1       3721     3731     3728     3726
+   1       3709      432     3712     3710
+   1       3721     3712      438     3726
+   1       3719     3710     3726      436
+   1       3709     3721     3719     3710
+   1       3709     3721     3710     3712
+   1       3721     3719     3710     3726
+   1       3721     3712     3726     3710
+   1        909       25      907      911
+   1       3099      907      303     3100
+   1       3111      911     3100      307
+   1        909     3099     3111      911
+   1        909     3099      911      907
+   1       3099     3111      911     3100
+   1       3099      907     3100      911
+   1       3101      303     1223     3102
+   1       1226     1223       63     1227
+   1       4031     3102     1227      502
+   1       3101     1226     4031     3102
+   1       3101     1226     3102     1223
+   1       1226     4031     3102     1227
+   1       1226     1223     1227     3102
+   1       3124      307     3122     1928
+   1       4034     3122      502     1931
+   1       1934     1928     1931      125
+   1       3124     4034     1934     1928
+   1       3124     4034     1928     3122
+   1       4034     1934     1928     1931
+   1       4034     3122     1931     1928
+   1       3112      501     4032     3121
+   1       3115     4032      712     3124
+   1       3111     3121     3124      307
+   1       3112     3115     3111     3121
+   1       3112     3115     3121     4032
+   1       3115     3111     3121     3124
+   1       3115     4032     3124     3121
+   1       3112      501     3121     3101
+   1       3099     3101     3100      303
+   1       3111     3121      307     3100
+   1       3112     3099     3121     3111
+   1       3112     3099     3101     3121
+   1       3099     3111     3100     3121
+   1       3099     3101     3121     3100
+   1       4032      712     3124     4034
+   1       3121     3124      307     3122
+   1       4031     4034     3122      502
+   1       4032     3121     4031     4034
+   1       4032     3121     4034     3124
+   1       3121     4031     4034     3122
+   1       3121     3124     3122     4034
+   1       3101      303     3102     3100
+   1       3121     3100     3122      307
+   1       4031     3102      502     3122
+   1       3101     3121     3102     4031
+   1       3101     3121     3100     3102
+   1       3121     4031     3122     3102
+   1       3121     3100     3102     3122
+   1       1224       63     1222     1225
+   1       2117     1222      161     2118
+   1       3952     1225     2118      500
+   1       1224     2117     3952     1225
+   1       1224     2117     1225     1222
+   1       2117     3952     1225     2118
+   1       2117     1222     2118     1225
+   1       2101      161      765     2116
+   1        763      765        8      767
+   1       2103     2116      767      163
+   1       2101      763     2103     2116
+   1       2101      763     2116      765
+   1        763     2103     2116      767
+   1        763      765      767     2116
+   1       3964      500     2123     1238
+   1       2121     2123      163     1234
+   1       1236     1238     1234       65
+   1       3964     2121     1236     1238
+   1       3964     2121     1238     2123
+   1       2121     1236     1238     1234
+   1       2121     2123     1234     1238
+   1       2105      159     2107     2109
+   1       3949     2107      487     3964
+   1       3952     2109     3964      500
+   1       2105     3949     3952     2109
+   1       2105     3949     2109     2107
+   1       3949     3952     2109     3964
+   1       3949     2107     3964     2109
+   1       2105      159     2109     2101
+   1       2117     2101     2118      161
+   1       3952     2109      500     2118
+   1       2105     2117     2109     3952
+   1       2105     2117     2101     2109
+   1       2117     3952     2118     2109
+   1       2117     2101     2109     2118
+   1       2107      487     3964     2121
+   1       2109     3964      500     2123
+   1       2103     2121     2123      163
+   1       2107     2109     2103     2121
+   1       2107     2109     2121     3964
+   1       2109     2103     2121     2123
+   1       2109     3964     2123     2121
+   1       2101      161     2116     2118
+   1       2109     2118     2123      500
+   1       2103     2116      163     2123
+   1       2101     2109     2116     2103
+   1       2101     2109     2118     2116
+   1       2109     2103     2123     2116
+   1       2109     2118     2116     2123
+   1       1935      125     1932     1929
+   1       4043     1932      507     3206
+   1       3208     1929     3206      321
+   1       1935     4043     3208     1929
+   1       1935     4043     1929     1932
+   1       4043     3208     1929     3206
+   1       4043     1932     3206     1929
+   1       4039      507     1241     3168
+   1       1239     1241       65     1235
+   1       3166     3168     1235      315
+   1       4039     1239     3166     3168
+   1       4039     1239     3168     1241
+   1       1239     3166     3168     1235
+   1       1239     1241     1235     3168
+   1       3182      321     3165      925
+   1       3163     3165      315      919
+   1        921      925      919       27
+   1       3182     3163      921      925
+   1       3182     3163      925     3165
+   1       3163      921      925      919
+   1       3163     3165      919      925
+   1       4041      505     3183     3205
+   1       3189     3183      317     3182
+   1       3208     3205     3182      321
+   1       4041     3189     3208     3205
+   1       4041     3189     3205     3183
+   1       3189     3208     3205     3182
+   1       3189     3183     3182     3205
+   1       4041      505     3205     4039
+   1       4043     4039     3206      507
+   1       3208     3205      321     3206
+   1       4041     4043     3205     3208
+   1       4041     4043     4039     3205
+   1       4043     3208     3206     3205
+   1       4043     4039     3205     3206
+   1       3183      317     3182     3163
+   1       3205     3182      321     3165
+   1       3166     3163     3165      315
+   1       3183     3205     3166     3163
+   1       3183     3205     3163     3182
+   1       3205     3166     3163     3165
+   1       3205     3182     3165     3163
+   1       4039      507     3168     3206
+   1       3205     3206     3165      321
+   1       3166     3168      315     3165
+   1       4039     3205     3168     3166
+   1       4039     3205     3206     3168
+   1       3205     3166     3165     3168
+   1       3205     3206     3168     3165
+   1       1208       61     1210     1212
+   1       3975     1210      491     3984
+   1       3976     1212     3984      493
+   1       1208     3975     3976     1212
+   1       1208     3975     1212     1210
+   1       3975     3976     1212     3984
+   1       3975     1210     3984     1212
+   1       3988      491     1806     3989
+   1       1814     1806      113     1817
+   1       4891     3989     1817      717
+   1       3988     1814     4891     3989
+   1       3988     1814     3989     1806
+   1       1814     4891     3989     1817
+   1       1814     1806     1817     3989
+   1       4004      493     4005     1930
+   1       4894     4005      717     1935
+   1       1934     1930     1935      125
+   1       4004     4894     1934     1930
+   1       4004     4894     1930     4005
+   1       4894     1934     1930     1935
+   1       4894     4005     1935     1930
+   1       3978      710     4890     4003
+   1       3979     4890      712     4004
+   1       3976     4003     4004      493
+   1       3978     3979     3976     4003
+   1       3978     3979     4003     4890
+   1       3979     3976     4003     4004
+   1       3979     4890     4004     4003
+   1       3978      710     4003     3988
+   1       3975     3988     3984      491
+   1       3976     4003      493     3984
+   1       3978     3975     4003     3976
+   1       3978     3975     3988     4003
+   1       3975     3976     3984     4003
+   1       3975     3988     4003     3984
+   1       4890      712     4004     4894
+   1       4003     4004      493     4005
+   1       4891     4894     4005      717
+   1       4890     4003     4891     4894
+   1       4890     4003     4894     4004
+   1       4003     4891     4894     4005
+   1       4003     4004     4005     4894
+   1       3988      491     3989     3984
+   1       4003     3984     4005      493
+   1       4891     3989      717     4005
+   1       3988     4003     3989     4891
+   1       3988     4003     3984     3989
+   1       4003     4891     4005     3989
+   1       4003     3984     3989     4005
+   1       1208       61     1212     1204
+   1       3950     1204     3951      485
+   1       3976     1212      493     3951
+   1       1208     3950     1212     3976
+   1       1208     3950     1204     1212
+   1       3950     3976     3951     1212
+   1       3950     1204     1212     3951
+   1       3953      485     3954     1224
+   1       1226     1224     1227       63
+   1       4031     3954      502     1227
+   1       3953     1226     3954     4031
+   1       3953     1226     1224     3954
+   1       1226     4031     1227     3954
+   1       1226     1224     3954     1227
+   1       4004      493     1930     4000
+   1       4034     4000     1931      502
+   1       1934     1930      125     1931
+   1       4004     4034     1930     1934
+   1       4004     4034     4000     1930
+   1       4034     1934     1931     1930
+   1       4034     4000     1930     1931
+   1       3977      501     3999     4032
+   1       3979     4032     4004      712
+   1       3976     3999      493     4004
+   1       3977     3979     3999     3976
+   1       3977     3979     4032     3999
+   1       3979     3976     4004     3999
+   1       3979     4032     3999     4004
+   1       3977      501     3953     3999
+   1       3950     3953      485     3951
+   1       3976     3999     3951      493
+   1       3977     3950     3976     3999
+   1       3977     3950     3999     3953
+   1       3950     3976     3999     3951
+   1       3950     3953     3951     3999
+   1       4032      712     4034     4004
+   1       3999     4004     4000      493
+   1       4031     4034      502     4000
+   1       4032     3999     4034     4031
+   1       4032     3999     4004     4034
+   1       3999     4031     4000     4034
+   1       3999     4004     4034     4000
+   1       3953      485     3951     3954
+   1       3999     3951      493     4000
+   1       4031     3954     4000      502
+   1       3953     3999     4031     3954
+   1       3953     3999     3954     3951
+   1       3999     4031     3954     4000
+   1       3999     3951     4000     3954
+   1       1806      113     1817     1808
+   1       3989     1817      717     4041
+   1       3986     1808     4041      505
+   1       1806     3989     3986     1808
+   1       1806     3989     1808     1817
+   1       3989     3986     1808     4041
+   1       3989     1817     4041     1808
+   1       4005      717     1935     4043
+   1       1930     1935      125     1932
+   1       4002     4043     1932      507
+   1       4005     1930     4002     4043
+   1       4005     1930     4043     1935
+   1       1930     4002     4043     1932
+   1       1930     1935     1932     4043
+   1       3965      505     4039     1239
+   1       3966     4039      507     1241
+   1       1236     1239     1241       65
+   1       3965     3966     1236     1239
+   1       3965     3966     1239     4039
+   1       3966     1236     1239     1241
+   1       3966     4039     1241     1239
+   1       3984      493     3961     4001
+   1       3960     3961      487     3965
+   1       3986     4001     3965      505
+   1       3984     3960     3986     4001
+   1       3984     3960     4001     3961
+   1       3960     3986     4001     3965
+   1       3960     3961     3965     4001
+   1       3984      493     4001     4005
+   1       3989     4005     4041      717
+   1       3986     4001      505     4041
+   1       3984     3989     4001     3986
+   1       3984     3989     4005     4001
+   1       3989     3986     4041     4001
+   1       3989     4005     4001     4041
+   1       3961      487     3965     3966
+   1       4001     3965      505     4039
+   1       4002     3966     4039      507
+   1       3961     4001     4002     3966
+   1       3961     4001     3966     3965
+   1       4001     4002     3966     4039
+   1       4001     3965     4039     3966
+   1       4005      717     4043     4041
+   1       4001     4041     4039      505
+   1       4002     4043      507     4039
+   1       4005     4001     4043     4002
+   1       4005     4001     4041     4043
+   1       4001     4002     4039     4043
+   1       4001     4041     4043     4039
+   1       1224       63     1225     1227
+   1       3954     1227     4029      502
+   1       3952     1225      500     4029
+   1       1224     3954     1225     3952
+   1       1224     3954     1227     1225
+   1       3954     3952     4029     1225
+   1       3954     1227     1225     4029
+   1       4000      502     4033     1931
+   1       1930     1931     1932      125
+   1       4002     4033      507     1932
+   1       4000     1930     4033     4002
+   1       4000     1930     1931     4033
+   1       1930     4002     1932     4033
+   1       1930     1931     4033     1932
+   1       3964      500     1238     4030
+   1       3966     4030     1241      507
+   1       1236     1238       65     1241
+   1       3964     3966     1238     1236
+   1       3964     3966     4030     1238
+   1       3966     1236     1241     1238
+   1       3966     4030     1238     1241
+   1       3951      493     3998     3961
+   1       3949     3961     3964      487
+   1       3952     3998      500     3964
+   1       3951     3949     3998     3952
+   1       3951     3949     3961     3998
+   1       3949     3952     3964     3998
+   1       3949     3961     3998     3964
+   1       3951      493     4000     3998
+   1       3954     4000      502     4029
+   1       3952     3998     4029      500
+   1       3951     3954     3952     3998
+   1       3951     3954     3998     4000
+   1       3954     3952     3998     4029
+   1       3954     4000     4029     3998
+   1       3961      487     3966     3964
+   1       3998     3964     4030      500
+   1       4002     3966      507     4030
+   1       3961     3998     3966     4002
+   1       3961     3998     3964     3966
+   1       3998     4002     4030     3966
+   1       3998     3964     3966     4030
+   1       4000      502     4029     4033
+   1       3998     4029      500     4030
+   1       4002     4033     4030      507
+   1       4000     3998     4002     4033
+   1       4000     3998     4033     4029
+   1       3998     4002     4033     4030
+   1       3998     4029     4030     4033
+   1        900       24      905      898
+   1       3058      905      301     3040
+   1       3038      898     3040      294
+   1        900     3058     3038      898
+   1        900     3058      898      905
+   1       3058     3038      898     3040
+   1       3058      905     3040      898
+   1       3092      301     1918     3091
+   1       1922     1918      124     1920
+   1       3931     3091     1920      480
+   1       3092     1922     3931     3091
+   1       3092     1922     3091     1918
+   1       1922     3931     3091     1920
+   1       1922     1918     1920     3091
+   1       3041      294     3043     1185
+   1       3919     3043      480     1192
+   1       1189     1185     1192       59
+   1       3041     3919     1189     1185
+   1       3041     3919     1185     3043
+   1       3919     1189     1185     1192
+   1       3919     3043     1192     1185
+   1       3065      689     3922     3044
+   1       3059     3922      477     3041
+   1       3038     3044     3041      294
+   1       3065     3059     3038     3044
+   1       3065     3059     3044     3922
+   1       3059     3038     3044     3041
+   1       3059     3922     3041     3044
+   1       3065      689     3044     3092
+   1       3058     3092     3040      301
+   1       3038     3044      294     3040
+   1       3065     3058     3044     3038
+   1       3065     3058     3092     3044
+   1       3058     3038     3040     3044
+   1       3058     3092     3044     3040
+   1       3922      477     3041     3919
+   1       3044     3041      294     3043
+   1       3931     3919     3043      480
+   1       3922     3044     3931     3919
+   1       3922     3044     3919     3041
+   1       3044     3931     3919     3043
+   1       3044     3041     3043     3919
+   1       3092      301     3091     3040
+   1       3044     3040     3043      294
+   1       3931     3091      480     3043
+   1       3092     3044     3091     3931
+   1       3092     3044     3040     3091
+   1       3044     3931     3043     3091
+   1       3044     3040     3091     3043
+   1       1923      124     1919     1921
+   1       3202     1919      320     3201
+   1       3938     1921     3201      483
+   1       1923     3202     3938     1921
+   1       1923     3202     1921     1919
+   1       3202     3938     1921     3201
+   1       3202     1919     3201     1921
+   1       3172      320      924     3159
+   1        920      924       27      918
+   1       3157     3159      918      314
+   1       3172      920     3157     3159
+   1       3172      920     3159      924
+   1        920     3157     3159      918
+   1        920      924      918     3159
+   1       3934      483     3162     1200
+   1       3160     3162      314     1194
+   1       1198     1200     1194       60
+   1       3934     3160     1198     1200
+   1       3934     3160     1200     3162
+   1       3160     1198     1200     1194
+   1       3160     3162     1194     1200
+   1       3178      316     3173     3174
+   1       3936     3173      481     3934
+   1       3938     3174     3934      483
+   1       3178     3936     3938     3174
+   1       3178     3936     3174     3173
+   1       3936     3938     3174     3934
+   1       3936     3173     3934     3174
+   1       3178      316     3174     3172
+   1       3202     3172     3201      320
+   1       3938     3174      483     3201
+   1       3178     3202     3174     3938
+   1       3178     3202     3172     3174
+   1       3202     3938     3201     3174
+   1       3202     3172     3174     3201
+   1       3173      481     3934     3160
+   1       3174     3934      483     3162
+   1       3157     3160     3162      314
+   1       3173     3174     3157     3160
+   1       3173     3174     3160     3934
+   1       3174     3157     3160     3162
+   1       3174     3934     3162     3160
+   1       3172      320     3159     3201
+   1       3174     3201     3162      483
+   1       3157     3159      314     3162
+   1       3172     3174     3159     3157
+   1       3172     3174     3201     3159
+   1       3174     3157     3162     3159
+   1       3174     3201     3159     3162
+   1       1186       59     1188     1184
+   1       3830     1188      476     2096
+   1       2093     1184     2096      157
+   1       1186     3830     2093     1184
+   1       1186     3830     1184     1188
+   1       3830     2093     1184     2096
+   1       3830     1188     2096     1184
+   1       3836      476     1197     2099
+   1       1195     1197       60     1193
+   1       2097     2099     1193      158
+   1       3836     1195     2097     2099
+   1       3836     1195     2099     1197
+   1       1195     2097     2099     1193
+   1       1195     1197     1193     2099
+   1       2074      157     2092      761
+   1       2075     2092      158      762
+   1        758      761      762        7
+   1       2074     2075      758      761
+   1       2074     2075      761     2092
+   1       2075      758      761      762
+   1       2075     2092      762      761
+   1       3825      459     2081     2094
+   1       2080     2081      154     2074
+   1       2093     2094     2074      157
+   1       3825     2080     2093     2094
+   1       3825     2080     2094     2081
+   1       2080     2093     2094     2074
+   1       2080     2081     2074     2094
+   1       3825      459     2094     3836
+   1       3830     3836     2096      476
+   1       2093     2094      157     2096
+   1       3825     3830     2094     2093
+   1       3825     3830     3836     2094
+   1       3830     2093     2096     2094
+   1       3830     3836     2094     2096
+   1       2081      154     2074     2075
+   1       2094     2074      157     2092
+   1       2097     2075     2092      158
+   1       2081     2094     2097     2075
+   1       2081     2094     2075     2074
+   1       2094     2097     2075     2092
+   1       2094     2074     2092     2075
+   1       3836      476     2099     2096
+   1       2094     2096     2092      157
+   1       2097     2099      158     2092
+   1       3836     2094     2099     2097
+   1       3836     2094     2096     2099
+   1       2094     2097     2092     2099
+   1       2094     2096     2099     2092
+   1       1736      107     1730     1731
+   1       3874     1730      465     3871
+   1       3926     1731     3871      478
+   1       1736     3874     3926     1731
+   1       1736     3874     1731     1730
+   1       3874     3926     1731     3871
+   1       3874     1730     3871     1731
+   1       3864      465     1165     3827
+   1       1164     1165       56     1158
+   1       3826     3827     1158      458
+   1       3864     1164     3826     3827
+   1       3864     1164     3827     1165
+   1       1164     3826     3827     1158
+   1       1164     1165     1158     3827
+   1       3917      478     3832     1190
+   1       3831     3832      458     1186
+   1       1189     1190     1186       59
+   1       3917     3831     1189     1190
+   1       3917     3831     1190     3832
+   1       3831     1189     1190     1186
+   1       3831     3832     1186     1190
+   1       3869      464     3866     3867
+   1       3920     3866      477     3917
+   1       3926     3867     3917      478
+   1       3869     3920     3926     3867
+   1       3869     3920     3867     3866
+   1       3920     3926     3867     3917
+   1       3920     3866     3917     3867
+   1       3869      464     3867     3864
+   1       3874     3864     3871      465
+   1       3926     3867      478     3871
+   1       3869     3874     3867     3926
+   1       3869     3874     3864     3867
+   1       3874     3926     3871     3867
+   1       3874     3864     3867     3871
+   1       3866      477     3917     3831
+   1       3867     3917      478     3832
+   1       3826     3831     3832      458
+   1       3866     3867     3826     3831
+   1       3866     3867     3831     3917
+   1       3867     3826     3831     3832
+   1       3867     3917     3832     3831
+   1       3864      465     3827     3871
+   1       3867     3871     3832      478
+   1       3826     3827      458     3832
+   1       3864     3867     3827     3826
+   1       3864     3867     3871     3827
+   1       3867     3826     3832     3827
+   1       3867     3871     3827     3832
+   1       1736      107     1731     1741
+   1       4802     1741     3928      694
+   1       3926     1731      478     3928
+   1       1736     4802     1731     3926
+   1       1736     4802     1741     1731
+   1       4802     3926     3928     1731
+   1       4802     1741     1731     3928
+   1       4807      694     3932     1923
+   1       1922     1923     1920      124
+   1       3931     3932      480     1920
+   1       4807     1922     3932     3931
+   1       4807     1922     1923     3932
+   1       1922     3931     1920     3932
+   1       1922     1923     3932     1920
+   1       3917      478     1190     3923
+   1       3919     3923     1192      480
+   1       1189     1190       59     1192
+   1       3917     3919     1190     1189
+   1       3917     3919     3923     1190
+   1       3919     1189     1192     1190
+   1       3919     3923     1190     1192
+   1       4800      689     3927     3922
+   1       3920     3922     3917      477
+   1       3926     3927      478     3917
+   1       4800     3920     3927     3926
+   1       4800     3920     3922     3927
+   1       3920     3926     3917     3927
+   1       3920     3922     3927     3917
+   1       4800      689     4807     3927
+   1       4802     4807      694     3928
+   1       3926     3927     3928      478
+   1       4800     4802     3926     3927
+   1       4800     4802     3927     4807
+   1       4802     3926     3927     3928
+   1       4802     4807     3928     3927
+   1       3922      477     3919     3917
+   1       3927     3917     3923      478
+   1       3931     3919      480     3923
+   1       3922     3927     3919     3931
+   1       3922     3927     3917     3919
+   1       3927     3931     3923     3919
+   1       3927     3917     3919     3923
+   1       4807      694     3928     3932
+   1       3927     3928      478     3923
+   1       3931     3932     3923      480
+   1       4807     3927     3931     3932
+   1       4807     3927     3932     3928
+   1       3927     3931     3932     3923
+   1       3927     3928     3923     3932
+   1       1165       56     1158     1159
+   1       3827     1158      458     3825
+   1       3833     1159     3825      459
+   1       1165     3827     3833     1159
+   1       1165     3827     1159     1158
+   1       3827     3833     1159     3825
+   1       3827     1158     3825     1159
+   1       3832      458     1186     3830
+   1       1190     1186       59     1188
+   1       3913     3830     1188      476
+   1       3832     1190     3913     3830
+   1       3832     1190     3830     1186
+   1       1190     3913     3830     1188
+   1       1190     1186     1188     3830
+   1       3838      459     3836     1195
+   1       3915     3836      476     1197
+   1       1198     1195     1197       60
+   1       3838     3915     1198     1195
+   1       3838     3915     1195     3836
+   1       3915     1198     1195     1197
+   1       3915     3836     1197     1195
+   1       3871      478     3924     3837
+   1       3872     3924      481     3838
+   1       3833     3837     3838      459
+   1       3871     3872     3833     3837
+   1       3871     3872     3837     3924
+   1       3872     3833     3837     3838
+   1       3872     3924     3838     3837
+   1       3871      478     3837     3832
+   1       3827     3832     3825      458
+   1       3833     3837      459     3825
+   1       3871     3827     3837     3833
+   1       3871     3827     3832     3837
+   1       3827     3833     3825     3837
+   1       3827     3832     3837     3825
+   1       3924      481     3838     3915
+   1       3837     3838      459     3836
+   1       3913     3915     3836      476
+   1       3924     3837     3913     3915
+   1       3924     3837     3915     3838
+   1       3837     3913     3915     3836
+   1       3837     3838     3836     3915
+   1       3832      458     3830     3825
+   1       3837     3825     3836      459
+   1       3913     3830      476     3836
+   1       3832     3837     3830     3913
+   1       3832     3837     3825     3830
+   1       3837     3913     3836     3830
+   1       3837     3825     3830     3836
+   1       1923      124     1921     1920
+   1       3932     1920     3930      480
+   1       3938     1921      483     3930
+   1       1923     3932     1921     3938
+   1       1923     3932     1920     1921
+   1       3932     3938     3930     1921
+   1       3932     1920     1921     3930
+   1       3923      480     3914     1192
+   1       1190     1192     1188       59
+   1       3913     3914      476     1188
+   1       3923     1190     3914     3913
+   1       3923     1190     1192     3914
+   1       1190     3913     1188     3914
+   1       1190     1192     3914     1188
+   1       3934      483     1200     3916
+   1       3915     3916     1197      476
+   1       1198     1200       60     1197
+   1       3934     3915     1200     1198
+   1       3934     3915     3916     1200
+   1       3915     1198     1197     1200
+   1       3915     3916     1200     1197
+   1       3928      478     3925     3924
+   1       3936     3924     3934      481
+   1       3938     3925      483     3934
+   1       3928     3936     3925     3938
+   1       3928     3936     3924     3925
+   1       3936     3938     3934     3925
+   1       3936     3924     3925     3934
+   1       3928      478     3923     3925
+   1       3932     3923      480     3930
+   1       3938     3925     3930      483
+   1       3928     3932     3938     3925
+   1       3928     3932     3925     3923
+   1       3932     3938     3925     3930
+   1       3932     3923     3930     3925
+   1       3924      481     3915     3934
+   1       3925     3934     3916      483
+   1       3913     3915      476     3916
+   1       3924     3925     3915     3913
+   1       3924     3925     3934     3915
+   1       3925     3913     3916     3915
+   1       3925     3934     3915     3916
+   1       3923      480     3930     3914
+   1       3925     3930      483     3916
+   1       3913     3914     3916      476
+   1       3923     3925     3913     3914
+   1       3923     3925     3914     3930
+   1       3925     3913     3914     3916
+   1       3925     3930     3916     3914
+   1        849       18      851      854
+   1       2711      851      247     2725
+   1       2712      854     2725      250
+   1        849     2711     2712      854
+   1        849     2711      854      851
+   1       2711     2712      854     2725
+   1       2711      851     2725      854
+   1       2729      247     1659     2731
+   1       1665     1659      102     1670
+   1       4594     2731     1670      672
+   1       2729     1665     4594     2731
+   1       2729     1665     2731     1659
+   1       1665     4594     2731     1670
+   1       1665     1659     1670     2731
+   1       2754      250     2756     1770
+   1       4598     2756      672     1776
+   1       1773     1770     1776      110
+   1       2754     4598     1773     1770
+   1       2754     4598     1770     2756
+   1       4598     1773     1770     1776
+   1       4598     2756     1776     1770
+   1       2715      636     4593     2753
+   1       2716     4593      637     2754
+   1       2712     2753     2754      250
+   1       2715     2716     2712     2753
+   1       2715     2716     2753     4593
+   1       2716     2712     2753     2754
+   1       2716     4593     2754     2753
+   1       2715      636     2753     2729
+   1       2711     2729     2725      247
+   1       2712     2753      250     2725
+   1       2715     2711     2753     2712
+   1       2715     2711     2729     2753
+   1       2711     2712     2725     2753
+   1       2711     2729     2753     2725
+   1       4593      637     2754     4598
+   1       2753     2754      250     2756
+   1       4594     4598     2756      672
+   1       4593     2753     4594     4598
+   1       4593     2753     4598     2754
+   1       2753     4594     4598     2756
+   1       2753     2754     2756     4598
+   1       2729      247     2731     2725
+   1       2753     2725     2756      250
+   1       4594     2731      672     2756
+   1       2729     2753     2731     4594
+   1       2729     2753     2725     2731
+   1       2753     4594     2756     2731
+   1       2753     2725     2731     2756
+   1       1664      102     1658     1667
+   1       2636     1658      236     2638
+   1       4563     1667     2638      669
+   1       1664     2636     4563     1667
+   1       1664     2636     1667     1658
+   1       2636     4563     1667     2638
+   1       2636     1658     2638     1667
+   1       2621      236      840     2632
+   1        839      840       17      844
+   1       2623     2632      844      240
+   1       2621      839     2623     2632
+   1       2621      839     2632      840
+   1        839     2623     2632      844
+   1        839      840      844     2632
+   1       4572      669     2670     1722
+   1       2669     2670      240     1714
+   1       1719     1722     1714      106
+   1       4572     2669     1719     1722
+   1       4572     2669     1722     2670
+   1       2669     1719     1722     1714
+   1       2669     2670     1714     1722
+   1       2627      235     2629     2630
+   1       4560     2629      632     4572
+   1       4563     2630     4572      669
+   1       2627     4560     4563     2630
+   1       2627     4560     2630     2629
+   1       4560     4563     2630     4572
+   1       4560     2629     4572     2630
+   1       2627      235     2630     2621
+   1       2636     2621     2638      236
+   1       4563     2630      669     2638
+   1       2627     2636     2630     4563
+   1       2627     2636     2621     2630
+   1       2636     4563     2638     2630
+   1       2636     2621     2630     2638
+   1       2629      632     4572     2669
+   1       2630     4572      669     2670
+   1       2623     2669     2670      240
+   1       2629     2630     2623     2669
+   1       2629     2630     2669     4572
+   1       2630     2623     2669     2670
+   1       2630     4572     2670     2669
+   1       2621      236     2632     2638
+   1       2630     2638     2670      669
+   1       2623     2632      240     2670
+   1       2621     2630     2632     2623
+   1       2621     2630     2638     2632
+   1       2630     2623     2670     2632
+   1       2630     2638     2632     2670
+   1       1774      110     1777     1771
+   1       4661     1777      687     3071
+   1       3069     1771     3071      297
+   1       1774     4661     3069     1771
+   1       1774     4661     1771     1777
+   1       4661     3069     1771     3071
+   1       4661     1777     3071     1771
+   1       4657      687     1725     3063
+   1       1721     1725      106     1715
+   1       3061     3063     1715      296
+   1       4657     1721     3061     3063
+   1       4657     1721     3063     1725
+   1       1721     3061     3063     1715
+   1       1721     1725     1715     3063
+   1       3046      297     3056      901
+   1       3045     3056      296      900
+   1        899      901      900       24
+   1       3046     3045      899      901
+   1       3046     3045      901     3056
+   1       3045      899      901      900
+   1       3045     3056      900      901
+   1       4655      650     3051     3068
+   1       3052     3051      295     3046
+   1       3069     3068     3046      297
+   1       4655     3052     3069     3068
+   1       4655     3052     3068     3051
+   1       3052     3069     3068     3046
+   1       3052     3051     3046     3068
+   1       4655      650     3068     4657
+   1       4661     4657     3071      687
+   1       3069     3068      297     3071
+   1       4655     4661     3068     3069
+   1       4655     4661     4657     3068
+   1       4661     3069     3071     3068
+   1       4661     4657     3068     3071
+   1       3051      295     3046     3045
+   1       3068     3046      297     3056
+   1       3061     3045     3056      296
+   1       3051     3068     3061     3045
+   1       3051     3068     3045     3046
+   1       3068     3061     3045     3056
+   1       3068     3046     3056     3045
+   1       4657      687     3063     3071
+   1       3068     3071     3056      297
+   1       3061     3063      296     3056
+   1       4657     3068     3063     3061
+   1       4657     3068     3071     3063
+   1       3068     3061     3056     3063
+   1       3068     3071     3063     3056
+   1       1563       93     1565     1569
+   1       4541     1565      629     4554
+   1       4543     1569     4554      633
+   1       1563     4541     4543     1569
+   1       1563     4541     1569     1565
+   1       4541     4543     1569     4554
+   1       4541     1565     4554     1569
+   1       4555      629     1608     4559
+   1       1609     1608       97     1614
+   1       4586     4559     1614      651
+   1       4555     1609     4586     4559
+   1       4555     1609     4559     1608
+   1       1609     4586     4559     1614
+   1       1609     1608     1614     4559
+   1       4577      633     4579     1772
+   1       4596     4579      651     1774
+   1       1773     1772     1774      110
+   1       4577     4596     1773     1772
+   1       4577     4596     1772     4579
+   1       4596     1773     1772     1774
+   1       4596     4579     1774     1772
+   1       4544      634     4584     4575
+   1       4546     4584      637     4577
+   1       4543     4575     4577      633
+   1       4544     4546     4543     4575
+   1       4544     4546     4575     4584
+   1       4546     4543     4575     4577
+   1       4546     4584     4577     4575
+   1       4544      634     4575     4555
+   1       4541     4555     4554      629
+   1       4543     4575      633     4554
+   1       4544     4541     4575     4543
+   1       4544     4541     4555     4575
+   1       4541     4543     4554     4575
+   1       4541     4555     4575     4554
+   1       4584      637     4577     4596
+   1       4575     4577      633     4579
+   1       4586     4596     4579      651
+   1       4584     4575     4586     4596
+   1       4584     4575     4596     4577
+   1       4575     4586     4596     4579
+   1       4575     4577     4579     4596
+   1       4555      629     4559     4554
+   1       4575     4554     4579      633
+   1       4586     4559      651     4579
+   1       4555     4575     4559     4586
+   1       4555     4575     4554     4559
+   1       4575     4586     4579     4559
+   1       4575     4554     4559     4579
+   1       1563       93     1569     1566
+   1       4542     1566     4561      630
+   1       4543     1569      633     4561
+   1       1563     4542     1569     4543
+   1       1563     4542     1566     1569
+   1       4542     4543     4561     1569
+   1       4542     1566     1569     4561
+   1       4562      630     4564     1664
+   1       1665     1664     1670      102
+   1       4594     4564      672     1670
+   1       4562     1665     4564     4594
+   1       4562     1665     1664     4564
+   1       1665     4594     1670     4564
+   1       1665     1664     4564     1670
+   1       4577      633     1772     4581
+   1       4598     4581     1776      672
+   1       1773     1772      110     1776
+   1       4577     4598     1772     1773
+   1       4577     4598     4581     1772
+   1       4598     1773     1776     1772
+   1       4598     4581     1772     1776
+   1       4545      636     4576     4593
+   1       4546     4593     4577      637
+   1       4543     4576      633     4577
+   1       4545     4546     4576     4543
+   1       4545     4546     4593     4576
+   1       4546     4543     4577     4576
+   1       4546     4593     4576     4577
+   1       4545      636     4562     4576
+   1       4542     4562      630     4561
+   1       4543     4576     4561      633
+   1       4545     4542     4543     4576
+   1       4545     4542     4576     4562
+   1       4542     4543     4576     4561
+   1       4542     4562     4561     4576
+   1       4593      637     4598     4577
+   1       4576     4577     4581      633
+   1       4594     4598      672     4581
+   1       4593     4576     4598     4594
+   1       4593     4576     4577     4598
+   1       4576     4594     4581     4598
+   1       4576     4577     4598     4581
+   1       4562      630     4561     4564
+   1       4576     4561      633     4581
+   1       4594     4564     4581      672
+   1       4562     4576     4594     4564
+   1       4562     4576     4564     4561
+   1       4576     4594     4564     4581
+   1       4576     4561     4581     4564
+   1       1608       97     1614     1613
+   1       4559     1614      651     4655
+   1       4558     1613     4655      650
+   1       1608     4559     4558     1613
+   1       1608     4559     1613     1614
+   1       4559     4558     1613     4655
+   1       4559     1614     4655     1613
+   1       4579      651     1774     4661
+   1       1772     1774      110     1777
+   1       4582     4661     1777      687
+   1       4579     1772     4582     4661
+   1       4579     1772     4661     1774
+   1       1772     4582     4661     1777
+   1       1772     1774     1777     4661
+   1       4571      650     4657     1721
+   1       4574     4657      687     1725
+   1       1719     1721     1725      106
+   1       4571     4574     1719     1721
+   1       4571     4574     1721     4657
+   1       4574     1719     1721     1725
+   1       4574     4657     1725     1721
+   1       4554      633     4569     4578
+   1       4553     4569      632     4571
+   1       4558     4578     4571      650
+   1       4554     4553     4558     4578
+   1       4554     4553     4578     4569
+   1       4553     4558     4578     4571
+   1       4553     4569     4571     4578
+   1       4554      633     4578     4579
+   1       4559     4579     4655      651
+   1       4558     4578      650     4655
+   1       4554     4559     4578     4558
+   1       4554     4559     4579     4578
+   1       4559     4558     4655     4578
+   1       4559     4579     4578     4655
+   1       4569      632     4571     4574
+   1       4578     4571      650     4657
+   1       4582     4574     4657      687
+   1       4569     4578     4582     4574
+   1       4569     4578     4574     4571
+   1       4578     4582     4574     4657
+   1       4578     4571     4657     4574
+   1       4579      651     4661     4655
+   1       4578     4655     4657      650
+   1       4582     4661      687     4657
+   1       4579     4578     4661     4582
+   1       4579     4578     4655     4661
+   1       4578     4582     4657     4661
+   1       4578     4655     4661     4657
+   1       1664      102     1667     1670
+   1       4564     1670     4724      672
+   1       4563     1667      669     4724
+   1       1664     4564     1667     4563
+   1       1664     4564     1670     1667
+   1       4564     4563     4724     1667
+   1       4564     1670     1667     4724
+   1       4581      672     4740     1776
+   1       1772     1776     1777      110
+   1       4582     4740      687     1777
+   1       4581     1772     4740     4582
+   1       4581     1772     1776     4740
+   1       1772     4582     1777     4740
+   1       1772     1776     4740     1777
+   1       4572      669     1722     4726
+   1       4574     4726     1725      687
+   1       1719     1722      106     1725
+   1       4572     4574     1722     1719
+   1       4572     4574     4726     1722
+   1       4574     1719     1725     1722
+   1       4574     4726     1722     1725
+   1       4561      633     4580     4569
+   1       4560     4569     4572      632
+   1       4563     4580      669     4572
+   1       4561     4560     4580     4563
+   1       4561     4560     4569     4580
+   1       4560     4563     4572     4580
+   1       4560     4569     4580     4572
+   1       4561      633     4581     4580
+   1       4564     4581      672     4724
+   1       4563     4580     4724      669
+   1       4561     4564     4563     4580
+   1       4561     4564     4580     4581
+   1       4564     4563     4580     4724
+   1       4564     4581     4724     4580
+   1       4569      632     4574     4572
+   1       4580     4572     4726      669
+   1       4582     4574      687     4726
+   1       4569     4580     4574     4582
+   1       4569     4580     4572     4574
+   1       4580     4582     4726     4574
+   1       4580     4572     4574     4726
+   1       4581      672     4724     4740
+   1       4580     4724      669     4726
+   1       4582     4740     4726      687
+   1       4581     4580     4582     4740
+   1       4581     4580     4740     4724
+   1       4580     4582     4740     4726
+   1       4580     4724     4726     4740
+   1        849       18      854      855
+   1       2713      855     2751      251
+   1       2712      854      250     2751
+   1        849     2713      854     2712
+   1        849     2713      855      854
+   1       2713     2712     2751      854
+   1       2713      855      854     2751
+   1       2763      251     2764     1784
+   1       1788     1784     1790      111
+   1       4602     2764      705     1790
+   1       2763     1788     2764     4602
+   1       2763     1788     1784     2764
+   1       1788     4602     1790     2764
+   1       1788     1784     2764     1790
+   1       2754      250     1770     2758
+   1       4599     2758     1779      705
+   1       1773     1770      110     1779
+   1       2754     4599     1770     1773
+   1       2754     4599     2758     1770
+   1       4599     1773     1779     1770
+   1       4599     2758     1770     1779
+   1       2717      638     2755     4595
+   1       2716     4595     2754      637
+   1       2712     2755      250     2754
+   1       2717     2716     2755     2712
+   1       2717     2716     4595     2755
+   1       2716     2712     2754     2755
+   1       2716     4595     2755     2754
+   1       2717      638     2763     2755
+   1       2713     2763      251     2751
+   1       2712     2755     2751      250
+   1       2717     2713     2712     2755
+   1       2717     2713     2755     2763
+   1       2713     2712     2755     2751
+   1       2713     2763     2751     2755
+   1       4595      637     4599     2754
+   1       2755     2754     2758      250
+   1       4602     4599      705     2758
+   1       4595     2755     4599     4602
+   1       4595     2755     2754     4599
+   1       2755     4602     2758     4599
+   1       2755     2754     4599     2758
+   1       2763      251     2751     2764
+   1       2755     2751      250     2758
+   1       4602     2764     2758      705
+   1       2763     2755     4602     2764
+   1       2763     2755     2764     2751
+   1       2755     4602     2764     2758
+   1       2755     2751     2758     2764
+   1       1789      111     1792     1785
+   1       3113     1785     3114      305
+   1       4677     1792      711     3114
+   1       1789     3113     1792     4677
+   1       1789     3113     1785     1792
+   1       3113     4677     3114     1792
+   1       3113     1785     1792     3114
+   1       3103      305     3110      909
+   1        908      909      910       25
+   1       3104     3110      306      910
+   1       3103      908     3110     3104
+   1       3103      908      909     3110
+   1        908     3104      910     3110
+   1        908      909     3110      910
+   1       4679      711     1915     3119
+   1       3118     3119     1909      306
+   1       1913     1915      123     1909
+   1       4679     3118     1915     1913
+   1       4679     3118     3119     1915
+   1       3118     1913     1909     1915
+   1       3118     3119     1915     1909
+   1       3107      304     3109     3108
+   1       4675     3108     4679      657
+   1       4677     3109      711     4679
+   1       3107     4675     3109     4677
+   1       3107     4675     3108     3109
+   1       4675     4677     4679     3109
+   1       4675     3108     3109     4679
+   1       3107      304     3103     3109
+   1       3113     3103      305     3114
+   1       4677     3109     3114      711
+   1       3107     3113     4677     3109
+   1       3107     3113     3109     3103
+   1       3113     4677     3109     3114
+   1       3113     3103     3114     3109
+   1       3108      657     3118     4679
+   1       3109     4679     3119      711
+   1       3104     3118      306     3119
+   1       3108     3109     3118     3104
+   1       3108     3109     4679     3118
+   1       3109     3104     3119     3118
+   1       3109     4679     3118     3119
+   1       3103      305     3114     3110
+   1       3109     3114      711     3119
+   1       3104     3110     3119      306
+   1       3103     3109     3104     3110
+   1       3103     3109     3110     3114
+   1       3109     3104     3110     3119
+   1       3109     3114     3119     3110
+   1       1774      110     1771     1781
+   1       4662     1781     3073      707
+   1       3069     1771      297     3073
+   1       1774     4662     1771     3069
+   1       1774     4662     1781     1771
+   1       4662     3069     3073     1771
+   1       4662     1781     1771     3073
+   1       4669      707     3089     1914
+   1       1912     1914     1908      123
+   1       3088     3089      300     1908
+   1       4669     1912     3089     3088
+   1       4669     1912     1914     3089
+   1       1912     3088     1908     3089
+   1       1912     1914     3089     1908
+   1       3046      297      901     3066
+   1       3049     3066      904      300
+   1        899      901       24      904
+   1       3046     3049      901      899
+   1       3046     3049     3066      901
+   1       3049      899      904      901
+   1       3049     3066      901      904
+   1       4659      654     3070     3055
+   1       3052     3055     3046      295
+   1       3069     3070      297     3046
+   1       4659     3052     3070     3069
+   1       4659     3052     3055     3070
+   1       3052     3069     3046     3070
+   1       3052     3055     3070     3046
+   1       4659      654     4669     3070
+   1       4662     4669      707     3073
+   1       3069     3070     3073      297
+   1       4659     4662     3069     3070
+   1       4659     4662     3070     4669
+   1       4662     3069     3070     3073
+   1       4662     4669     3073     3070
+   1       3055      295     3049     3046
+   1       3070     3046     3066      297
+   1       3088     3049      300     3066
+   1       3055     3070     3049     3088
+   1       3055     3070     3046     3049
+   1       3070     3088     3066     3049
+   1       3070     3046     3049     3066
+   1       4669      707     3073     3089
+   1       3070     3073      297     3066
+   1       3088     3089     3066      300
+   1       4669     3070     3088     3089
+   1       4669     3070     3089     3073
+   1       3070     3088     3089     3066
+   1       3070     3073     3066     3089
+   1       1623       98     1625     1624
+   1       4590     1624     4653      649
+   1       4591     1625      655     4653
+   1       1623     4590     1625     4591
+   1       1623     4590     1624     1625
+   1       4590     4591     4653     1625
+   1       4590     1624     1625     4653
+   1       4585      649     4651     1612
+   1       1609     1612     1614       97
+   1       4586     4651      651     1614
+   1       4585     1609     4651     4586
+   1       4585     1609     1612     4651
+   1       1609     4586     1614     4651
+   1       1609     1612     4651     1614
+   1       4597      655     1775     4660
+   1       4596     4660     1774      651
+   1       1773     1775      110     1774
+   1       4597     4596     1775     1773
+   1       4597     4596     4660     1775
+   1       4596     1773     1774     1775
+   1       4596     4660     1775     1774
+   1       4583      634     4587     4584
+   1       4588     4584     4597      637
+   1       4591     4587      655     4597
+   1       4583     4588     4587     4591
+   1       4583     4588     4584     4587
+   1       4588     4591     4597     4587
+   1       4588     4584     4587     4597
+   1       4583      634     4585     4587
+   1       4590     4585      649     4653
+   1       4591     4587     4653      655
+   1       4583     4590     4591     4587
+   1       4583     4590     4587     4585
+   1       4590     4591     4587     4653
+   1       4590     4585     4653     4587
+   1       4584      637     4596     4597
+   1       4587     4597     4660      655
+   1       4586     4596      651     4660
+   1       4584     4587     4596     4586
+   1       4584     4587     4597     4596
+   1       4587     4586     4660     4596
+   1       4587     4597     4596     4660
+   1       4585      649     4653     4651
+   1       4587     4653      655     4660
+   1       4586     4651     4660      651
+   1       4585     4587     4586     4651
+   1       4585     4587     4651     4653
+   1       4587     4586     4651     4660
+   1       4587     4653     4660     4651
+   1       1623       98     1626     1625
+   1       4592     1626      656     4670
+   1       4591     1625     4670      655
+   1       1623     4592     4591     1625
+   1       1623     4592     1625     1626
+   1       4592     4591     1625     4670
+   1       4592     1626     4670     1625
+   1       4601      656     1789     4676
+   1       1788     1789      111     1790
+   1       4602     4676     1790      705
+   1       4601     1788     4602     4676
+   1       4601     1788     4676     1789
+   1       1788     4602     4676     1790
+   1       1788     1789     1790     4676
+   1       4597      655     4672     1775
+   1       4599     4672      705     1779
+   1       1773     1775     1779      110
+   1       4597     4599     1773     1775
+   1       4597     4599     1775     4672
+   1       4599     1773     1775     1779
+   1       4599     4672     1779     1775
+   1       4589      638     4595     4600
+   1       4588     4595      637     4597
+   1       4591     4600     4597      655
+   1       4589     4588     4591     4600
+   1       4589     4588     4600     4595
+   1       4588     4591     4600     4597
+   1       4588     4595     4597     4600
+   1       4589      638     4600     4601
+   1       4592     4601     4670      656
+   1       4591     4600      655     4670
+   1       4589     4592     4600     4591
+   1       4589     4592     4601     4600
+   1       4592     4591     4670     4600
+   1       4592     4601     4600     4670
+   1       4595      637     4597     4599
+   1       4600     4597      655     4672
+   1       4602     4599     4672      705
+   1       4595     4600     4602     4599
+   1       4595     4600     4599     4597
+   1       4600     4602     4599     4672
+   1       4600     4597     4672     4599
+   1       4601      656     4676     4670
+   1       4600     4670     4672      655
+   1       4602     4676      705     4672
+   1       4601     4600     4676     4602
+   1       4601     4600     4670     4676
+   1       4600     4602     4672     4676
+   1       4600     4670     4676     4672
+   1       1612       97     1617     1614
+   1       4651     1614     4659      651
+   1       4652     1617      654     4659
+   1       1612     4651     1617     4652
+   1       1612     4651     1614     1617
+   1       4651     4652     4659     1617
+   1       4651     1614     1617     4659
+   1       4660      651     4662     1774
+   1       1775     1774     1781      110
+   1       4673     4662      707     1781
+   1       4660     1775     4662     4673
+   1       4660     1775     1774     4662
+   1       1775     4673     1781     4662
+   1       1775     1774     4662     1781
+   1       4668      654     1912     4669
+   1       4678     4669     1914      707
+   1       1913     1912      123     1914
+   1       4668     4678     1912     1913
+   1       4668     4678     4669     1912
+   1       4678     1913     1914     1912
+   1       4678     4669     1912     1914
+   1       4653      655     4667     4671
+   1       4654     4671     4668      657
+   1       4652     4667      654     4668
+   1       4653     4654     4667     4652
+   1       4653     4654     4671     4667
+   1       4654     4652     4668     4667
+   1       4654     4671     4667     4668
+   1       4653      655     4660     4667
+   1       4651     4660      651     4659
+   1       4652     4667     4659      654
+   1       4653     4651     4652     4667
+   1       4653     4651     4667     4660
+   1       4651     4652     4667     4659
+   1       4651     4660     4659     4667
+   1       4671      657     4678     4668
+   1       4667     4668     4669      654
+   1       4673     4678      707     4669
+   1       4671     4667     4678     4673
+   1       4671     4667     4668     4678
+   1       4667     4673     4669     4678
+   1       4667     4668     4678     4669
+   1       4660      651     4659     4662
+   1       4667     4659      654     4669
+   1       4673     4662     4669      707
+   1       4660     4667     4673     4662
+   1       4660     4667     4662     4659
+   1       4667     4673     4662     4669
+   1       4667     4659     4669     4662
+   1       1789      111     1790     1792
+   1       4676     1790      705     4866
+   1       4677     1792     4866      711
+   1       1789     4676     4677     1792
+   1       1789     4676     1792     1790
+   1       4676     4677     1792     4866
+   1       4676     1790     4866     1792
+   1       4672      705     1779     4863
+   1       1775     1779      110     1781
+   1       4673     4863     1781      707
+   1       4672     1775     4673     4863
+   1       4672     1775     4863     1779
+   1       1775     4673     4863     1781
+   1       1775     1779     1781     4863
+   1       4679      711     4875     1915
+   1       4678     4875      707     1914
+   1       1913     1915     1914      123
+   1       4679     4678     1913     1915
+   1       4679     4678     1915     4875
+   1       4678     1913     1915     1914
+   1       4678     4875     1914     1915
+   1       4670      655     4671     4674
+   1       4675     4671      657     4679
+   1       4677     4674     4679      711
+   1       4670     4675     4677     4674
+   1       4670     4675     4674     4671
+   1       4675     4677     4674     4679
+   1       4675     4671     4679     4674
+   1       4670      655     4674     4672
+   1       4676     4672     4866      705
+   1       4677     4674      711     4866
+   1       4670     4676     4674     4677
+   1       4670     4676     4672     4674
+   1       4676     4677     4866     4674
+   1       4676     4672     4674     4866
+   1       4671      657     4679     4678
+   1       4674     4679      711     4875
+   1       4673     4678     4875      707
+   1       4671     4674     4673     4678
+   1       4671     4674     4678     4679
+   1       4674     4673     4678     4875
+   1       4674     4679     4875     4678
+   1       4672      705     4863     4866
+   1       4674     4866     4875      711
+   1       4673     4863      707     4875
+   1       4672     4674     4863     4673
+   1       4672     4674     4866     4863
+   1       4674     4673     4875     4863
+   1       4674     4866     4863     4875
+   1        840       17      844      845
+   1       2632      844      240     2665
+   1       2633      845     2665      241
+   1        840     2632     2633      845
+   1        840     2632      845      844
+   1       2632     2633      845     2665
+   1       2632      844     2665      845
+   1       2670      240     1714     2672
+   1       1722     1714      106     1724
+   1       4725     2672     1724      686
+   1       2670     1722     4725     2672
+   1       2670     1722     2672     1714
+   1       1722     4725     2672     1724
+   1       1722     1714     1724     2672
+   1       2676      241     2679     1728
+   1       4732     2679      686     1736
+   1       1733     1728     1736      107
+   1       2676     4732     1733     1728
+   1       2676     4732     1728     2679
+   1       4732     1733     1728     1736
+   1       4732     2679     1736     1728
+   1       2638      669     4723     2675
+   1       2639     4723      670     2676
+   1       2633     2675     2676      241
+   1       2638     2639     2633     2675
+   1       2638     2639     2675     4723
+   1       2639     2633     2675     2676
+   1       2639     4723     2676     2675
+   1       2638      669     2675     2670
+   1       2632     2670     2665      240
+   1       2633     2675      241     2665
+   1       2638     2632     2675     2633
+   1       2638     2632     2670     2675
+   1       2632     2633     2665     2675
+   1       2632     2670     2675     2665
+   1       4723      670     2676     4732
+   1       2675     2676      241     2679
+   1       4725     4732     2679      686
+   1       4723     2675     4725     4732
+   1       4723     2675     4732     2676
+   1       2675     4725     4732     2679
+   1       2675     2676     2679     4732
+   1       2670      240     2672     2665
+   1       2675     2665     2679      241
+   1       4725     2672      686     2679
+   1       2670     2675     2672     4725
+   1       2670     2675     2665     2672
+   1       2675     4725     2679     2672
+   1       2675     2665     2672     2679
+   1       1725      106     1715     1727
+   1       3063     1715      296     3065
+   1       4803     1727     3065      689
+   1       1725     3063     4803     1727
+   1       1725     3063     1727     1715
+   1       3063     4803     1727     3065
+   1       3063     1715     3065     1727
+   1       3056      296      900     3058
+   1        901      900       24      905
+   1       3067     3058      905      301
+   1       3056      901     3067     3058
+   1       3056      901     3058      900
+   1        901     3067     3058      905
+   1        901      900      905     3058
+   1       4808      689     3092     1922
+   1       3093     3092      301     1918
+   1       1924     1922     1918      124
+   1       4808     3093     1924     1922
+   1       4808     3093     1922     3092
+   1       3093     1924     1922     1918
+   1       3093     3092     1918     1922
+   1       3071      297     3074     3072
+   1       4805     3074      708     4808
+   1       4803     3072     4808      689
+   1       3071     4805     4803     3072
+   1       3071     4805     3072     3074
+   1       4805     4803     3072     4808
+   1       4805     3074     4808     3072
+   1       3071      297     3072     3056
+   1       3063     3056     3065      296
+   1       4803     3072      689     3065
+   1       3071     3063     3072     4803
+   1       3071     3063     3056     3072
+   1       3063     4803     3065     3072
+   1       3063     3056     3072     3065
+   1       3074      708     4808     3093
+   1       3072     4808      689     3092
+   1       3067     3093     3092      301
+   1       3074     3072     3067     3093
+   1       3074     3072     3093     4808
+   1       3072     3067     3093     3092
+   1       3072     4808     3092     3093
+   1       3056      296     3058     3065
+   1       3072     3065     3092      689
+   1       3067     3058      301     3092
+   1       3056     3072     3058     3067
+   1       3056     3072     3065     3058
+   1       3072     3067     3092     3058
+   1       3072     3065     3058     3092
+   1       1738      107     1741     1729
+   1       4815     1741      694     3178
+   1       3175     1729     3178      316
+   1       1738     4815     3175     1729
+   1       1738     4815     1729     1741
+   1       4815     3175     1729     3178
+   1       4815     1741     3178     1729
+   1       4824      694     1923     3202
+   1       1925     1923      124     1919
+   1       3203     3202     1919      320
+   1       4824     1925     3203     3202
+   1       4824     1925     3202     1923
+   1       1925     3203     3202     1919
+   1       1925     1923     1919     3202
+   1       3169      316     3172      920
+   1       3181     3172      320      924
+   1        921      920      924       27
+   1       3169     3181      921      920
+   1       3169     3181      920     3172
+   1       3181      921      920      924
+   1       3181     3172      924      920
+   1       4818      716     3188     3179
+   1       3185     3188      317     3169
+   1       3175     3179     3169      316
+   1       4818     3185     3175     3179
+   1       4818     3185     3179     3188
+   1       3185     3175     3179     3169
+   1       3185     3188     3169     3179
+   1       4818      716     3179     4824
+   1       4815     4824     3178      694
+   1       3175     3179      316     3178
+   1       4818     4815     3179     3175
+   1       4818     4815     4824     3179
+   1       4815     3175     3178     3179
+   1       4815     4824     3179     3178
+   1       3188      317     3169     3181
+   1       3179     3169      316     3172
+   1       3203     3181     3172      320
+   1       3188     3179     3203     3181
+   1       3188     3179     3181     3169
+   1       3179     3203     3181     3172
+   1       3179     3169     3172     3181
+   1       4824      694     3202     3178
+   1       3179     3178     3172      316
+   1       3203     3202      320     3172
+   1       4824     3179     3202     3203
+   1       4824     3179     3178     3202
+   1       3179     3203     3172     3202
+   1       3179     3178     3202     3172
+   1       1776      110     1780     1778
+   1       4742     1780      706     4811
+   1       4741     1778     4811      690
+   1       1776     4742     4741     1778
+   1       1776     4742     1778     1780
+   1       4742     4741     1778     4811
+   1       4742     1780     4811     1778
+   1       4747      706     1813     4816
+   1       1809     1813      113     1811
+   1       4745     4816     1811      691
+   1       4747     1809     4745     4816
+   1       4747     1809     4816     1813
+   1       1809     4745     4816     1811
+   1       1809     1813     1811     4816
+   1       4733      690     4809     1737
+   1       4734     4809      691     1738
+   1       1733     1737     1738      107
+   1       4733     4734     1733     1737
+   1       4733     4734     1737     4809
+   1       4734     1733     1737     1738
+   1       4734     4809     1738     1737
+   1       4739      673     4729     4744
+   1       4728     4729      670     4733
+   1       4741     4744     4733      690
+   1       4739     4728     4741     4744
+   1       4739     4728     4744     4729
+   1       4728     4741     4744     4733
+   1       4728     4729     4733     4744
+   1       4739      673     4744     4747
+   1       4742     4747     4811      706
+   1       4741     4744      690     4811
+   1       4739     4742     4744     4741
+   1       4739     4742     4747     4744
+   1       4742     4741     4811     4744
+   1       4742     4747     4744     4811
+   1       4729      670     4733     4734
+   1       4744     4733      690     4809
+   1       4745     4734     4809      691
+   1       4729     4744     4745     4734
+   1       4729     4744     4734     4733
+   1       4744     4745     4734     4809
+   1       4744     4733     4809     4734
+   1       4747      706     4816     4811
+   1       4744     4811     4809      690
+   1       4745     4816      691     4809
+   1       4747     4744     4816     4745
+   1       4747     4744     4811     4816
+   1       4744     4745     4809     4816
+   1       4744     4811     4816     4809
+   1       1776      110     1778     1777
+   1       4740     1777     4804      687
+   1       4741     1778      690     4804
+   1       1776     4740     1778     4741
+   1       1776     4740     1777     1778
+   1       4740     4741     4804     1778
+   1       4740     1777     1778     4804
+   1       4726      687     4799     1725
+   1       1722     1725     1724      106
+   1       4725     4799      686     1724
+   1       4726     1722     4799     4725
+   1       4726     1722     1725     4799
+   1       1722     4725     1724     4799
+   1       1722     1725     4799     1724
+   1       4733      690     1737     4801
+   1       4732     4801     1736      686
+   1       1733     1737      107     1736
+   1       4733     4732     1737     1733
+   1       4733     4732     4801     1737
+   1       4732     1733     1736     1737
+   1       4732     4801     1737     1736
+   1       4724      669     4727     4723
+   1       4728     4723     4733      670
+   1       4741     4727      690     4733
+   1       4724     4728     4727     4741
+   1       4724     4728     4723     4727
+   1       4728     4741     4733     4727
+   1       4728     4723     4727     4733
+   1       4724      669     4726     4727
+   1       4740     4726      687     4804
+   1       4741     4727     4804      690
+   1       4724     4740     4741     4727
+   1       4724     4740     4727     4726
+   1       4740     4741     4727     4804
+   1       4740     4726     4804     4727
+   1       4723      670     4732     4733
+   1       4727     4733     4801      690
+   1       4725     4732      686     4801
+   1       4723     4727     4732     4725
+   1       4723     4727     4733     4732
+   1       4727     4725     4801     4732
+   1       4727     4733     4732     4801
+   1       4726      687     4804     4799
+   1       4727     4804      690     4801
+   1       4725     4799     4801      686
+   1       4726     4727     4725     4799
+   1       4726     4727     4799     4804
+   1       4727     4725     4799     4801
+   1       4727     4804     4801     4799
+   1       1813      113     1811     1816
+   1       4816     1811      691     4818
+   1       4871     1816     4818      716
+   1       1813     4816     4871     1816
+   1       1813     4816     1816     1811
+   1       4816     4871     1816     4818
+   1       4816     1811     4818     1816
+   1       4809      691     1738     4815
+   1       1737     1738      107     1741
+   1       4810     4815     1741      694
+   1       4809     1737     4810     4815
+   1       4809     1737     4815     1738
+   1       1737     4810     4815     1741
+   1       1737     1738     1741     4815
+   1       4879      716     4824     1925
+   1       4823     4824      694     1923
+   1       1924     1925     1923      124
+   1       4879     4823     1924     1925
+   1       4879     4823     1925     4824
+   1       4823     1924     1925     1923
+   1       4823     4824     1923     1925
+   1       4811      690     4812     4813
+   1       4868     4812      708     4879
+   1       4871     4813     4879      716
+   1       4811     4868     4871     4813
+   1       4811     4868     4813     4812
+   1       4868     4871     4813     4879
+   1       4868     4812     4879     4813
+   1       4811      690     4813     4809
+   1       4816     4809     4818      691
+   1       4871     4813      716     4818
+   1       4811     4816     4813     4871
+   1       4811     4816     4809     4813
+   1       4816     4871     4818     4813
+   1       4816     4809     4813     4818
+   1       4812      708     4879     4823
+   1       4813     4879      716     4824
+   1       4810     4823     4824      694
+   1       4812     4813     4810     4823
+   1       4812     4813     4823     4879
+   1       4813     4810     4823     4824
+   1       4813     4879     4824     4823
+   1       4809      691     4815     4818
+   1       4813     4818     4824      716
+   1       4810     4815      694     4824
+   1       4809     4813     4815     4810
+   1       4809     4813     4818     4815
+   1       4813     4810     4824     4815
+   1       4813     4818     4815     4824
+   1       1725      106     1727     1724
+   1       4799     1724     4800      686
+   1       4803     1727      689     4800
+   1       1725     4799     1727     4803
+   1       1725     4799     1724     1727
+   1       4799     4803     4800     1727
+   1       4799     1724     1727     4800
+   1       4801      686     4802     1736
+   1       1737     1736     1741      107
+   1       4810     4802      694     1741
+   1       4801     1737     4802     4810
+   1       4801     1737     1736     4802
+   1       1737     4810     1741     4802
+   1       1737     1736     4802     1741
+   1       4808      689     1922     4807
+   1       4823     4807     1923      694
+   1       1924     1922      124     1923
+   1       4808     4823     1922     1924
+   1       4808     4823     4807     1922
+   1       4823     1924     1923     1922
+   1       4823     4807     1922     1923
+   1       4804      690     4806     4812
+   1       4805     4812     4808      708
+   1       4803     4806      689     4808
+   1       4804     4805     4806     4803
+   1       4804     4805     4812     4806
+   1       4805     4803     4808     4806
+   1       4805     4812     4806     4808
+   1       4804      690     4801     4806
+   1       4799     4801      686     4800
+   1       4803     4806     4800      689
+   1       4804     4799     4803     4806
+   1       4804     4799     4806     4801
+   1       4799     4803     4806     4800
+   1       4799     4801     4800     4806
+   1       4812      708     4823     4808
+   1       4806     4808     4807      689
+   1       4810     4823      694     4807
+   1       4812     4806     4823     4810
+   1       4812     4806     4808     4823
+   1       4806     4810     4807     4823
+   1       4806     4808     4823     4807
+   1       4801      686     4800     4802
+   1       4806     4800      689     4807
+   1       4810     4802     4807      694
+   1       4801     4806     4810     4802
+   1       4801     4806     4802     4800
+   1       4806     4810     4802     4807
+   1       4806     4800     4807     4802
+   1        909       25      911      910
+   1       3110      910     3116      306
+   1       3111      911      307     3116
+   1        909     3110      911     3111
+   1        909     3110      910      911
+   1       3110     3111     3116      911
+   1       3110      910      911     3116
+   1       3119      306     3120     1909
+   1       1915     1909     1917      123
+   1       4893     3120      728     1917
+   1       3119     1915     3120     4893
+   1       3119     1915     1909     3120
+   1       1915     4893     1917     3120
+   1       1915     1909     3120     1917
+   1       3124      307     1928     3125
+   1       4895     3125     1936      728
+   1       1934     1928      125     1936
+   1       3124     4895     1928     1934
+   1       3124     4895     3125     1928
+   1       4895     1934     1936     1928
+   1       4895     3125     1928     1936
+   1       3114      711     3123     4892
+   1       3115     4892     3124      712
+   1       3111     3123      307     3124
+   1       3114     3115     3123     3111
+   1       3114     3115     4892     3123
+   1       3115     3111     3124     3123
+   1       3115     4892     3123     3124
+   1       3114      711     3119     3123
+   1       3110     3119      306     3116
+   1       3111     3123     3116      307
+   1       3114     3110     3111     3123
+   1       3114     3110     3123     3119
+   1       3110     3111     3123     3116
+   1       3110     3119     3116     3123
+   1       4892      712     4895     3124
+   1       3123     3124     3125      307
+   1       4893     4895      728     3125
+   1       4892     3123     4895     4893
+   1       4892     3123     3124     4895
+   1       3123     4893     3125     4895
+   1       3123     3124     4895     3125
+   1       3119      306     3116     3120
+   1       3123     3116      307     3125
+   1       4893     3120     3125      728
+   1       3119     3123     4893     3120
+   1       3119     3123     3120     3116
+   1       3123     4893     3120     3125
+   1       3123     3116     3125     3120
+   1       1914      123     1916     1908
+   1       3089     1908     3090      300
+   1       4876     1916      727     3090
+   1       1914     3089     1916     4876
+   1       1914     3089     1908     1916
+   1       3089     4876     3090     1916
+   1       3089     1908     1916     3090
+   1       3066      300     3086      904
+   1        901      904      905       24
+   1       3067     3086      301      905
+   1       3066      901     3086     3067
+   1       3066      901      904     3086
+   1        901     3067      905     3086
+   1        901      904     3086      905
+   1       4880      727     1926     3094
+   1       3093     3094     1918      301
+   1       1924     1926      124     1918
+   1       4880     3093     1926     1924
+   1       4880     3093     3094     1926
+   1       3093     1924     1918     1926
+   1       3093     3094     1926     1918
+   1       3073      297     3075     3074
+   1       4873     3074     4880      708
+   1       4876     3075      727     4880
+   1       3073     4873     3075     4876
+   1       3073     4873     3074     3075
+   1       4873     4876     4880     3075
+   1       4873     3074     3075     4880
+   1       3073      297     3066     3075
+   1       3089     3066      300     3090
+   1       4876     3075     3090      727
+   1       3073     3089     4876     3075
+   1       3073     3089     3075     3066
+   1       3089     4876     3075     3090
+   1       3089     3066     3090     3075
+   1       3074      708     3093     4880
+   1       3075     4880     3094      727
+   1       3067     3093      301     3094
+   1       3074     3075     3093     3067
+   1       3074     3075     4880     3093
+   1       3075     3067     3094     3093
+   1       3075     4880     3093     3094
+   1       3066      300     3090     3086
+   1       3075     3090      727     3094
+   1       3067     3086     3094      301
+   1       3066     3075     3067     3086
+   1       3066     3075     3086     3090
+   1       3075     3067     3086     3094
+   1       3075     3090     3094     3086
+   1       1935      125     1929     1937
+   1       4901     1937     3209      729
+   1       3208     1929      321     3209
+   1       1935     4901     1929     3208
+   1       1935     4901     1937     1929
+   1       4901     3208     3209     1929
+   1       4901     1937     1929     3209
+   1       4900      729     3204     1927
+   1       1925     1927     1919      124
+   1       3203     3204      320     1919
+   1       4900     1925     3204     3203
+   1       4900     1925     1927     3204
+   1       1925     3203     1919     3204
+   1       1925     1927     3204     1919
+   1       3182      321      925     3200
+   1       3181     3200      924      320
+   1        921      925       27      924
+   1       3182     3181      925      921
+   1       3182     3181     3200      925
+   1       3181      921      924      925
+   1       3181     3200      925      924
+   1       4899      716     3207     3188
+   1       3189     3188     3182      317
+   1       3208     3207      321     3182
+   1       4899     3189     3207     3208
+   1       4899     3189     3188     3207
+   1       3189     3208     3182     3207
+   1       3189     3188     3207     3182
+   1       4899      716     4900     3207
+   1       4901     4900      729     3209
+   1       3208     3207     3209      321
+   1       4899     4901     3208     3207
+   1       4899     4901     3207     4900
+   1       4901     3208     3207     3209
+   1       4901     4900     3209     3207
+   1       3188      317     3181     3182
+   1       3207     3182     3200      321
+   1       3203     3181      320     3200
+   1       3188     3207     3181     3203
+   1       3188     3207     3182     3181
+   1       3207     3203     3200     3181
+   1       3207     3182     3181     3200
+   1       4900      729     3209     3204
+   1       3207     3209      321     3200
+   1       3203     3204     3200      320
+   1       4900     3207     3203     3204
+   1       4900     3207     3204     3209
+   1       3207     3203     3204     3200
+   1       3207     3209     3200     3204
+   1       1779      110     1783     1780
+   1       4862     1780     4869      706
+   1       4864     1783      709     4869
+   1       1779     4862     1783     4864
+   1       1779     4862     1780     1783
+   1       4862     4864     4869     1783
+   1       4862     1780     1783     4869
+   1       4870      706     4872     1813
+   1       1814     1813     1817      113
+   1       4891     4872      717     1817
+   1       4870     1814     4872     4891
+   1       4870     1814     1813     4872
+   1       1814     4891     1817     4872
+   1       1814     1813     4872     1817
+   1       4884      709     1933     4886
+   1       4894     4886     1935      717
+   1       1934     1933      125     1935
+   1       4884     4894     1933     1934
+   1       4884     4894     4886     1933
+   1       4894     1934     1935     1933
+   1       4894     4886     1933     1935
+   1       4865      710     4882     4890
+   1       4867     4890     4884      712
+   1       4864     4882      709     4884
+   1       4865     4867     4882     4864
+   1       4865     4867     4890     4882
+   1       4867     4864     4884     4882
+   1       4867     4890     4882     4884
+   1       4865      710     4870     4882
+   1       4862     4870      706     4869
+   1       4864     4882     4869      709
+   1       4865     4862     4864     4882
+   1       4865     4862     4882     4870
+   1       4862     4864     4882     4869
+   1       4862     4870     4869     4882
+   1       4890      712     4894     4884
+   1       4882     4884     4886      709
+   1       4891     4894      717     4886
+   1       4890     4882     4894     4891
+   1       4890     4882     4884     4894
+   1       4882     4891     4886     4894
+   1       4882     4884     4894     4886
+   1       4870      706     4869     4872
+   1       4882     4869      709     4886
+   1       4891     4872     4886      717
+   1       4870     4882     4891     4872
+   1       4870     4882     4872     4869
+   1       4882     4891     4872     4886
+   1       4882     4869     4886     4872
+   1       1779      110     1781     1783
+   1       4863     1781      707     4874
+   1       4864     1783     4874      709
+   1       1779     4863     4864     1783
+   1       1779     4863     1783     1781
+   1       4863     4864     1783     4874
+   1       4863     1781     4874     1783
+   1       4875      707     1914     4877
+   1       1915     1914      123     1917
+   1       4893     4877     1917      728
+   1       4875     1915     4893     4877
+   1       4875     1915     4877     1914
+   1       1915     4893     4877     1917
+   1       1915     1914     1917     4877
+   1       4884      709     4888     1933
+   1       4895     4888      728     1936
+   1       1934     1933     1936      125
+   1       4884     4895     1934     1933
+   1       4884     4895     1933     4888
+   1       4895     1934     1933     1936
+   1       4895     4888     1936     1933
+   1       4866      711     4892     4883
+   1       4867     4892      712     4884
+   1       4864     4883     4884      709
+   1       4866     4867     4864     4883
+   1       4866     4867     4883     4892
+   1       4867     4864     4883     4884
+   1       4867     4892     4884     4883
+   1       4866      711     4883     4875
+   1       4863     4875     4874      707
+   1       4864     4883      709     4874
+   1       4866     4863     4883     4864
+   1       4866     4863     4875     4883
+   1       4863     4864     4874     4883
+   1       4863     4875     4883     4874
+   1       4892      712     4884     4895
+   1       4883     4884      709     4888
+   1       4893     4895     4888      728
+   1       4892     4883     4893     4895
+   1       4892     4883     4895     4884
+   1       4883     4893     4895     4888
+   1       4883     4884     4888     4895
+   1       4875      707     4877     4874
+   1       4883     4874     4888      709
+   1       4893     4877      728     4888
+   1       4875     4883     4877     4893
+   1       4875     4883     4874     4877
+   1       4883     4893     4888     4877
+   1       4883     4874     4877     4888
+   1       1813      113     1816     1817
+   1       4872     1817     4899      717
+   1       4871     1816      716     4899
+   1       1813     4872     1816     4871
+   1       1813     4872     1817     1816
+   1       4872     4871     4899     1816
+   1       4872     1817     1816     4899
+   1       4886      717     4901     1935
+   1       1933     1935     1937      125
+   1       4889     4901      729     1937
+   1       4886     1933     4901     4889
+   1       4886     1933     1935     4901
+   1       1933     4889     1937     4901
+   1       1933     1935     4901     1937
+   1       4879      716     1925     4900
+   1       4881     4900     1927      729
+   1       1924     1925      124     1927
+   1       4879     4881     1925     1924
+   1       4879     4881     4900     1925
+   1       4881     1924     1927     1925
+   1       4881     4900     1925     1927
+   1       4869      709     4885     4878
+   1       4868     4878     4879      708
+   1       4871     4885      716     4879
+   1       4869     4868     4885     4871
+   1       4869     4868     4878     4885
+   1       4868     4871     4879     4885
+   1       4868     4878     4885     4879
+   1       4869      709     4886     4885
+   1       4872     4886      717     4899
+   1       4871     4885     4899      716
+   1       4869     4872     4871     4885
+   1       4869     4872     4885     4886
+   1       4872     4871     4885     4899
+   1       4872     4886     4899     4885
+   1       4878      708     4881     4879
+   1       4885     4879     4900      716
+   1       4889     4881      729     4900
+   1       4878     4885     4881     4889
+   1       4878     4885     4879     4881
+   1       4885     4889     4900     4881
+   1       4885     4879     4881     4900
+   1       4886      717     4899     4901
+   1       4885     4899      716     4900
+   1       4889     4901     4900      729
+   1       4886     4885     4889     4901
+   1       4886     4885     4901     4899
+   1       4885     4889     4901     4900
+   1       4885     4899     4900     4901
+   1       1914      123     1917     1916
+   1       4877     1917      728     4911
+   1       4876     1916     4911      727
+   1       1914     4877     4876     1916
+   1       1914     4877     1916     1917
+   1       4877     4876     1916     4911
+   1       4877     1917     4911     1916
+   1       4888      728     1936     4913
+   1       1933     1936      125     1937
+   1       4889     4913     1937      729
+   1       4888     1933     4889     4913
+   1       4888     1933     4913     1936
+   1       1933     4889     4913     1937
+   1       1933     1936     1937     4913
+   1       4880      727     4912     1926
+   1       4881     4912      729     1927
+   1       1924     1926     1927      124
+   1       4880     4881     1924     1926
+   1       4880     4881     1926     4912
+   1       4881     1924     1926     1927
+   1       4881     4912     1927     1926
+   1       4874      709     4878     4887
+   1       4873     4878      708     4880
+   1       4876     4887     4880      727
+   1       4874     4873     4876     4887
+   1       4874     4873     4887     4878
+   1       4873     4876     4887     4880
+   1       4873     4878     4880     4887
+   1       4874      709     4887     4888
+   1       4877     4888     4911      728
+   1       4876     4887      727     4911
+   1       4874     4877     4887     4876
+   1       4874     4877     4888     4887
+   1       4877     4876     4911     4887
+   1       4877     4888     4887     4911
+   1       4878      708     4880     4881
+   1       4887     4880      727     4912
+   1       4889     4881     4912      729
+   1       4878     4887     4889     4881
+   1       4878     4887     4881     4880
+   1       4887     4889     4881     4912
+   1       4887     4880     4912     4881
+   1       4888      728     4913     4911
+   1       4887     4911     4912      727
+   1       4889     4913      729     4912
+   1       4888     4887     4913     4889
+   1       4888     4887     4911     4913
+   1       4887     4889     4912     4913
+   1       4887     4911     4913     4912
+   1        746        4      748      749
+   1       2020      748      144     2030
+   1       2021      749     2030      145
+   1        746     2020     2021      749
+   1        746     2020      749      748
+   1       2020     2021      749     2030
+   1       2020      748     2030      749
+   1       2032      144     1078     2033
+   1       1081     1078       46     1082
+   1       3592     2033     1082      414
+   1       2032     1081     3592     2033
+   1       2032     1081     2033     1078
+   1       1081     3592     2033     1082
+   1       1081     1078     1082     2033
+   1       2035      145     2037     1086
+   1       3599     2037      414     1090
+   1       1088     1086     1090       47
+   1       2035     3599     1088     1086
+   1       2035     3599     1086     2037
+   1       3599     1088     1086     1090
+   1       3599     2037     1090     1086
+   1       2024      404     3590     2034
+   1       2025     3590      405     2035
+   1       2021     2034     2035      145
+   1       2024     2025     2021     2034
+   1       2024     2025     2034     3590
+   1       2025     2021     2034     2035
+   1       2025     3590     2035     2034
+   1       2024      404     2034     2032
+   1       2020     2032     2030      144
+   1       2021     2034      145     2030
+   1       2024     2020     2034     2021
+   1       2024     2020     2032     2034
+   1       2020     2021     2030     2034
+   1       2020     2032     2034     2030
+   1       3590      405     2035     3599
+   1       2034     2035      145     2037
+   1       3592     3599     2037      414
+   1       3590     2034     3592     3599
+   1       3590     2034     3599     2035
+   1       2034     3592     3599     2037
+   1       2034     2035     2037     3599
+   1       2032      144     2033     2030
+   1       2034     2030     2037      145
+   1       3592     2033      414     2037
+   1       2032     2034     2033     3592
+   1       2032     2034     2030     2033
+   1       2034     3592     2037     2033
+   1       2034     2030     2033     2037
+   1       1084       46     1079     1085
+   1       2918     1079      276     2919
+   1       3641     1085     2919      417
+   1       1084     2918     3641     1085
+   1       1084     2918     1085     1079
+   1       2918     3641     1085     2919
+   1       2918     1079     2919     1085
+   1       2915      276      880     2916
+   1        884      880       22      886
+   1       2940     2916      886      282
+   1       2915      884     2940     2916
+   1       2915      884     2916      880
+   1        884     2940     2916      886
+   1        884      880      886     2916
+   1       3647      417     2958     1870
+   1       2959     2958      282     1868
+   1       1872     1870     1868      119
+   1       3647     2959     1872     1870
+   1       3647     2959     1870     2958
+   1       2959     1872     1870     1868
+   1       2959     2958     1868     1870
+   1       2942      280     2947     2943
+   1       3644     2947      621     3647
+   1       3641     2943     3647      417
+   1       2942     3644     3641     2943
+   1       2942     3644     2943     2947
+   1       3644     3641     2943     3647
+   1       3644     2947     3647     2943
+   1       2942      280     2943     2915
+   1       2918     2915     2919      276
+   1       3641     2943      417     2919
+   1       2942     2918     2943     3641
+   1       2942     2918     2915     2943
+   1       2918     3641     2919     2943
+   1       2918     2915     2943     2919
+   1       2947      621     3647     2959
+   1       2943     3647      417     2958
+   1       2940     2959     2958      282
+   1       2947     2943     2940     2959
+   1       2947     2943     2959     3647
+   1       2943     2940     2959     2958
+   1       2943     3647     2958     2959
+   1       2915      276     2916     2919
+   1       2943     2919     2958      417
+   1       2940     2916      282     2958
+   1       2915     2943     2916     2940
+   1       2915     2943     2919     2916
+   1       2943     2940     2958     2916
+   1       2943     2919     2916     2958
+   1       1092       47     1094     1087
+   1       3654     1094      421     2972
+   1       2970     1087     2972      284
+   1       1092     3654     2970     1087
+   1       1092     3654     1087     1094
+   1       3654     2970     1087     2972
+   1       3654     1094     2972     1087
+   1       3660      421     1871     3018
+   1       1873     1871      119     1869
+   1       3019     3018     1869      290
+   1       3660     1873     3019     3018
+   1       3660     1873     3018     1871
+   1       1873     3019     3018     1869
+   1       1873     1871     1869     3018
+   1       2967      284     2969      888
+   1       2984     2969      290      894
+   1        890      888      894       23
+   1       2967     2984      890      888
+   1       2967     2984      888     2969
+   1       2984      890      888      894
+   1       2984     2969      894      888
+   1       3657      626     2990     2973
+   1       2985     2990      286     2967
+   1       2970     2973     2967      284
+   1       3657     2985     2970     2973
+   1       3657     2985     2973     2990
+   1       2985     2970     2973     2967
+   1       2985     2990     2967     2973
+   1       3657      626     2973     3660
+   1       3654     3660     2972      421
+   1       2970     2973      284     2972
+   1       3657     3654     2973     2970
+   1       3657     3654     3660     2973
+   1       3654     2970     2972     2973
+   1       3654     3660     2973     2972
+   1       2990      286     2967     2984
+   1       2973     2967      284     2969
+   1       3019     2984     2969      290
+   1       2990     2973     3019     2984
+   1       2990     2973     2984     2967
+   1       2973     3019     2984     2969
+   1       2973     2967     2969     2984
+   1       3660      421     3018     2972
+   1       2973     2972     2969      284
+   1       3019     3018      290     2969
+   1       3660     2973     3018     3019
+   1       3660     2973     2972     3018
+   1       2973     3019     2969     3018
+   1       2973     2972     3018     2969
+   1       1531       91     1538     1533
+   1       3612     1538      618     3650
+   1       3610     1533     3650      418
+   1       1531     3612     3610     1533
+   1       1531     3612     1533     1538
+   1       3612     3610     1533     3650
+   1       3612     1538     3650     1533
+   1       3617      618     1550     3655
+   1       1544     1550       92     1546
+   1       3615     3655     1546      419
+   1       3617     1544     3615     3655
+   1       3617     1544     3655     1550
+   1       1544     3615     3655     1546
+   1       1544     1550     1546     3655
+   1       3600      418     3648     1091
+   1       3601     3648      419     1092
+   1       1088     1091     1092       47
+   1       3600     3601     1088     1091
+   1       3600     3601     1091     3648
+   1       3601     1088     1091     1092
+   1       3601     3648     1092     1091
+   1       3608      409     3596     3614
+   1       3595     3596      405     3600
+   1       3610     3614     3600      418
+   1       3608     3595     3610     3614
+   1       3608     3595     3614     3596
+   1       3595     3610     3614     3600
+   1       3595     3596     3600     3614
+   1       3608      409     3614     3617
+   1       3612     3617     3650      618
+   1       3610     3614      418     3650
+   1       3608     3612     3614     3610
+   1       3608     3612     3617     3614
+   1       3612     3610     3650     3614
+   1       3612     3617     3614     3650
+   1       3596      405     3600     3601
+   1       3614     3600      418     3648
+   1       3615     3601     3648      419
+   1       3596     3614     3615     3601
+   1       3596     3614     3601     3600
+   1       3614     3615     3601     3648
+   1       3614     3600     3648     3601
+   1       3617      618     3655     3650
+   1       3614     3650     3648      418
+   1       3615     3655      419     3648
+   1       3617     3614     3655     3615
+   1       3617     3614     3650     3655
+   1       3614     3615     3648     3655
+   1       3614     3650     3655     3648
+   1       1531       91     1533     1532
+   1       3609     1532     3642      416
+   1       3610     1533      418     3642
+   1       1531     3609     1533     3610
+   1       1531     3609     1532     1533
+   1       3609     3610     3642     1533
+   1       3609     1532     1533     3642
+   1       3593      416     3635     1084
+   1       1081     1084     1082       46
+   1       3592     3635      414     1082
+   1       3593     1081     3635     3592
+   1       3593     1081     1084     3635
+   1       1081     3592     1082     3635
+   1       1081     1084     3635     1082
+   1       3600      418     1091     3637
+   1       3599     3637     1090      414
+   1       1088     1091       47     1090
+   1       3600     3599     1091     1088
+   1       3600     3599     3637     1091
+   1       3599     1088     1090     1091
+   1       3599     3637     1091     1090
+   1       3591      404     3594     3590
+   1       3595     3590     3600      405
+   1       3610     3594      418     3600
+   1       3591     3595     3594     3610
+   1       3591     3595     3590     3594
+   1       3595     3610     3600     3594
+   1       3595     3590     3594     3600
+   1       3591      404     3593     3594
+   1       3609     3593      416     3642
+   1       3610     3594     3642      418
+   1       3591     3609     3610     3594
+   1       3591     3609     3594     3593
+   1       3609     3610     3594     3642
+   1       3609     3593     3642     3594
+   1       3590      405     3599     3600
+   1       3594     3600     3637      418
+   1       3592     3599      414     3637
+   1       3590     3594     3599     3592
+   1       3590     3594     3600     3599
+   1       3594     3592     3637     3599
+   1       3594     3600     3599     3637
+   1       3593      416     3642     3635
+   1       3594     3642      418     3637
+   1       3592     3635     3637      414
+   1       3593     3594     3592     3635
+   1       3593     3594     3635     3642
+   1       3594     3592     3635     3637
+   1       3594     3642     3637     3635
+   1       1550       92     1546     1555
+   1       3655     1546      419     3657
+   1       4511     1555     3657      626
+   1       1550     3655     4511     1555
+   1       1550     3655     1555     1546
+   1       3655     4511     1555     3657
+   1       3655     1546     3657     1555
+   1       3648      419     1092     3654
+   1       1091     1092       47     1094
+   1       3649     3654     1094      421
+   1       3648     1091     3649     3654
+   1       3648     1091     3654     1092
+   1       1091     3649     3654     1094
+   1       1091     1092     1094     3654
+   1       4522      626     3660     1873
+   1       3659     3660      421     1871
+   1       1872     1873     1871      119
+   1       4522     3659     1872     1873
+   1       4522     3659     1873     3660
+   1       3659     1872     1873     1871
+   1       3659     3660     1871     1873
+   1       3650      418     3651     3652
+   1       4509     3651      621     4522
+   1       4511     3652     4522      626
+   1       3650     4509     4511     3652
+   1       3650     4509     3652     3651
+   1       4509     4511     3652     4522
+   1       4509     3651     4522     3652
+   1       3650      418     3652     3648
+   1       3655     3648     3657      419
+   1       4511     3652      626     3657
+   1       3650     3655     3652     4511
+   1       3650     3655     3648     3652
+   1       3655     4511     3657     3652
+   1       3655     3648     3652     3657
+   1       3651      621     4522     3659
+   1       3652     4522      626     3660
+   1       3649     3659     3660      421
+   1       3651     3652     3649     3659
+   1       3651     3652     3659     4522
+   1       3652     3649     3659     3660
+   1       3652     4522     3660     3659
+   1       3648      419     3654     3657
+   1       3652     3657     3660      626
+   1       3649     3654      421     3660
+   1       3648     3652     3654     3649
+   1       3648     3652     3657     3654
+   1       3652     3649     3660     3654
+   1       3652     3657     3654     3660
+   1       1084       46     1085     1082
+   1       3635     1082     3636      414
+   1       3641     1085      417     3636
+   1       1084     3635     1085     3641
+   1       1084     3635     1082     1085
+   1       3635     3641     3636     1085
+   1       3635     1082     1085     3636
+   1       3637      414     3638     1090
+   1       1091     1090     1094       47
+   1       3649     3638      421     1094
+   1       3637     1091     3638     3649
+   1       3637     1091     1090     3638
+   1       1091     3649     1094     3638
+   1       1091     1090     3638     1094
+   1       3647      417     1870     3646
+   1       3659     3646     1871      421
+   1       1872     1870      119     1871
+   1       3647     3659     1870     1872
+   1       3647     3659     3646     1870
+   1       3659     1872     1871     1870
+   1       3659     3646     1870     1871
+   1       3642      418     3645     3651
+   1       3644     3651     3647      621
+   1       3641     3645      417     3647
+   1       3642     3644     3645     3641
+   1       3642     3644     3651     3645
+   1       3644     3641     3647     3645
+   1       3644     3651     3645     3647
+   1       3642      418     3637     3645
+   1       3635     3637      414     3636
+   1       3641     3645     3636      417
+   1       3642     3635     3641     3645
+   1       3642     3635     3645     3637
+   1       3635     3641     3645     3636
+   1       3635     3637     3636     3645
+   1       3651      621     3659     3647
+   1       3645     3647     3646      417
+   1       3649     3659      421     3646
+   1       3651     3645     3659     3649
+   1       3651     3645     3647     3659
+   1       3645     3649     3646     3659
+   1       3645     3647     3659     3646
+   1       3637      414     3636     3638
+   1       3645     3636      417     3646
+   1       3649     3638     3646      421
+   1       3637     3645     3649     3638
+   1       3637     3645     3638     3636
+   1       3645     3649     3638     3646
+   1       3645     3636     3646     3638
+   1        885       22      881      887
+   1       2921      881      277     2922
+   1       2950      887     2922      283
+   1        885     2921     2950      887
+   1        885     2921      887      881
+   1       2921     2950      887     2922
+   1       2921      881     2922      887
+   1       2924      277     1177     2925
+   1       1182     1177       58     1183
+   1       3908     2925     1183      475
+   1       2924     1182     3908     2925
+   1       2924     1182     2925     1177
+   1       1182     3908     2925     1183
+   1       1182     1177     1183     2925
+   1       2965      283     2963     1878
+   1       3912     2963      475     1881
+   1       1883     1878     1881      120
+   1       2965     3912     1883     1878
+   1       2965     3912     1878     2963
+   1       3912     1883     1878     1881
+   1       3912     2963     1881     1878
+   1       2951      474     3910     2962
+   1       2956     3910      679     2965
+   1       2950     2962     2965      283
+   1       2951     2956     2950     2962
+   1       2951     2956     2962     3910
+   1       2956     2950     2962     2965
+   1       2956     3910     2965     2962
+   1       2951      474     2962     2924
+   1       2921     2924     2922      277
+   1       2950     2962      283     2922
+   1       2951     2921     2962     2950
+   1       2951     2921     2924     2962
+   1       2921     2950     2922     2962
+   1       2921     2924     2962     2922
+   1       3910      679     2965     3912
+   1       2962     2965      283     2963
+   1       3908     3912     2963      475
+   1       3910     2962     3908     3912
+   1       3910     2962     3912     2965
+   1       2962     3908     3912     2963
+   1       2962     2965     2963     3912
+   1       2924      277     2925     2922
+   1       2962     2922     2963      283
+   1       3908     2925      475     2963
+   1       2924     2962     2925     3908
+   1       2924     2962     2922     2925
+   1       2962     3908     2963     2925
+   1       2962     2922     2925     2963
+   1       1179       58     1176     1180
+   1       2090     1176      156     2091
+   1       3821     1180     2091      472
+   1       1179     2090     3821     1180
+   1       1179     2090     1180     1176
+   1       2090     3821     1180     2091
+   1       2090     1176     2091     1180
+   1       2073      156      760     2088
+   1        758      760        7      762
+   1       2075     2088      762      158
+   1       2073      758     2075     2088
+   1       2073      758     2088      760
+   1        758     2075     2088      762
+   1        758      760      762     2088
+   1       3835      472     2098     1196
+   1       2097     2098      158     1193
+   1       1195     1196     1193       60
+   1       3835     2097     1195     1196
+   1       3835     2097     1196     2098
+   1       2097     1195     1196     1193
+   1       2097     2098     1193     1196
+   1       2079      154     2081     2082
+   1       3817     2081      459     3835
+   1       3821     2082     3835      472
+   1       2079     3817     3821     2082
+   1       2079     3817     2082     2081
+   1       3817     3821     2082     3835
+   1       3817     2081     3835     2082
+   1       2079      154     2082     2073
+   1       2090     2073     2091      156
+   1       3821     2082      472     2091
+   1       2079     2090     2082     3821
+   1       2079     2090     2073     2082
+   1       2090     3821     2091     2082
+   1       2090     2073     2082     2091
+   1       2081      459     3835     2097
+   1       2082     3835      472     2098
+   1       2075     2097     2098      158
+   1       2081     2082     2075     2097
+   1       2081     2082     2097     3835
+   1       2082     2075     2097     2098
+   1       2082     3835     2098     2097
+   1       2073      156     2088     2091
+   1       2082     2091     2098      472
+   1       2075     2088      158     2098
+   1       2073     2082     2088     2075
+   1       2073     2082     2091     2088
+   1       2082     2075     2098     2088
+   1       2082     2091     2088     2098
+   1       1885      120     1882     1879
+   1       3937     1882      482     3192
+   1       3193     1879     3192      318
+   1       1885     3937     3193     1879
+   1       1885     3937     1879     1882
+   1       3937     3193     1879     3192
+   1       3937     1882     3192     1879
+   1       3933      482     1199     3161
+   1       1198     1199       60     1194
+   1       3160     3161     1194      314
+   1       3933     1198     3160     3161
+   1       3933     1198     3161     1199
+   1       1198     3160     3161     1194
+   1       1198     1199     1194     3161
+   1       3170      318     3158      922
+   1       3157     3158      314      918
+   1        920      922      918       27
+   1       3170     3157      920      922
+   1       3170     3157      922     3158
+   1       3157      920      922      918
+   1       3157     3158      918      922
+   1       3935      481     3173     3191
+   1       3176     3173      316     3170
+   1       3193     3191     3170      318
+   1       3935     3176     3193     3191
+   1       3935     3176     3191     3173
+   1       3176     3193     3191     3170
+   1       3176     3173     3170     3191
+   1       3935      481     3191     3933
+   1       3937     3933     3192      482
+   1       3193     3191      318     3192
+   1       3935     3937     3191     3193
+   1       3935     3937     3933     3191
+   1       3937     3193     3192     3191
+   1       3937     3933     3191     3192
+   1       3173      316     3170     3157
+   1       3191     3170      318     3158
+   1       3160     3157     3158      314
+   1       3173     3191     3160     3157
+   1       3173     3191     3157     3170
+   1       3191     3160     3157     3158
+   1       3191     3170     3158     3157
+   1       3933      482     3161     3192
+   1       3191     3192     3158      318
+   1       3160     3161      314     3158
+   1       3933     3191     3161     3160
+   1       3933     3191     3192     3161
+   1       3191     3160     3158     3161
+   1       3191     3192     3161     3158
+   1       1163       56     1165     1166
+   1       3857     1165      465     3870
+   1       3858     1166     3870      466
+   1       1163     3857     3858     1166
+   1       1163     3857     1166     1165
+   1       3857     3858     1166     3870
+   1       3857     1165     3870     1166
+   1       3873      465     1730     3875
+   1       1734     1730      107     1739
+   1       4760     3875     1739      692
+   1       3873     1734     4760     3875
+   1       3873     1734     3875     1730
+   1       1734     4760     3875     1739
+   1       1734     1730     1739     3875
+   1       3882      466     3883     1880
+   1       4766     3883      692     1885
+   1       1883     1880     1885      120
+   1       3882     4766     1883     1880
+   1       3882     4766     1880     3883
+   1       4766     1883     1880     1885
+   1       4766     3883     1885     1880
+   1       3862      677     4757     3881
+   1       3863     4757      679     3882
+   1       3858     3881     3882      466
+   1       3862     3863     3858     3881
+   1       3862     3863     3881     4757
+   1       3863     3858     3881     3882
+   1       3863     4757     3882     3881
+   1       3862      677     3881     3873
+   1       3857     3873     3870      465
+   1       3858     3881      466     3870
+   1       3862     3857     3881     3858
+   1       3862     3857     3873     3881
+   1       3857     3858     3870     3881
+   1       3857     3873     3881     3870
+   1       4757      679     3882     4766
+   1       3881     3882      466     3883
+   1       4760     4766     3883      692
+   1       4757     3881     4760     4766
+   1       4757     3881     4766     3882
+   1       3881     4760     4766     3883
+   1       3881     3882     3883     4766
+   1       3873      465     3875     3870
+   1       3881     3870     3883      466
+   1       4760     3875      692     3883
+   1       3873     3881     3875     4760
+   1       3873     3881     3870     3875
+   1       3881     4760     3883     3875
+   1       3881     3870     3875     3883
+   1       1163       56     1166     1157
+   1       3819     1157     3820      457
+   1       3858     1166      466     3820
+   1       1163     3819     1166     3858
+   1       1163     3819     1157     1166
+   1       3819     3858     3820     1166
+   1       3819     1157     1166     3820
+   1       3823      457     3824     1179
+   1       1182     1179     1183       58
+   1       3908     3824      475     1183
+   1       3823     1182     3824     3908
+   1       3823     1182     1179     3824
+   1       1182     3908     1183     3824
+   1       1182     1179     3824     1183
+   1       3882      466     1880     3878
+   1       3912     3878     1881      475
+   1       1883     1880      120     1881
+   1       3882     3912     1880     1883
+   1       3882     3912     3878     1880
+   1       3912     1883     1881     1880
+   1       3912     3878     1880     1881
+   1       3859      474     3877     3910
+   1       3863     3910     3882      679
+   1       3858     3877      466     3882
+   1       3859     3863     3877     3858
+   1       3859     3863     3910     3877
+   1       3863     3858     3882     3877
+   1       3863     3910     3877     3882
+   1       3859      474     3823     3877
+   1       3819     3823      457     3820
+   1       3858     3877     3820      466
+   1       3859     3819     3858     3877
+   1       3859     3819     3877     3823
+   1       3819     3858     3877     3820
+   1       3819     3823     3820     3877
+   1       3910      679     3912     3882
+   1       3877     3882     3878      466
+   1       3908     3912      475     3878
+   1       3910     3877     3912     3908
+   1       3910     3877     3882     3912
+   1       3877     3908     3878     3912
+   1       3877     3882     3912     3878
+   1       3823      457     3820     3824
+   1       3877     3820      466     3878
+   1       3908     3824     3878      475
+   1       3823     3877     3908     3824
+   1       3823     3877     3824     3820
+   1       3877     3908     3824     3878
+   1       3877     3820     3878     3824
+   1       1730      107     1739     1732
+   1       3875     1739      692     3935
+   1       3872     1732     3935      481
+   1       1730     3875     3872     1732
+   1       1730     3875     1732     1739
+   1       3875     3872     1732     3935
+   1       3875     1739     3935     1732
+   1       3883      692     1885     3937
+   1       1880     1885      120     1882
+   1       3880     3937     1882      482
+   1       3883     1880     3880     3937
+   1       3883     1880     3937     1885
+   1       1880     3880     3937     1882
+   1       1880     1885     1882     3937
+   1       3838      481     3933     1198
+   1       3839     3933      482     1199
+   1       1195     1198     1199       60
+   1       3838     3839     1195     1198
+   1       3838     3839     1198     3933
+   1       3839     1195     1198     1199
+   1       3839     3933     1199     1198
+   1       3870      466     3834     3879
+   1       3833     3834      459     3838
+   1       3872     3879     3838      481
+   1       3870     3833     3872     3879
+   1       3870     3833     3879     3834
+   1       3833     3872     3879     3838
+   1       3833     3834     3838     3879
+   1       3870      466     3879     3883
+   1       3875     3883     3935      692
+   1       3872     3879      481     3935
+   1       3870     3875     3879     3872
+   1       3870     3875     3883     3879
+   1       3875     3872     3935     3879
+   1       3875     3883     3879     3935
+   1       3834      459     3838     3839
+   1       3879     3838      481     3933
+   1       3880     3839     3933      482
+   1       3834     3879     3880     3839
+   1       3834     3879     3839     3838
+   1       3879     3880     3839     3933
+   1       3879     3838     3933     3839
+   1       3883      692     3937     3935
+   1       3879     3935     3933      481
+   1       3880     3937      482     3933
+   1       3883     3879     3937     3880
+   1       3883     3879     3935     3937
+   1       3879     3880     3933     3937
+   1       3879     3935     3937     3933
+   1       1179       58     1180     1183
+   1       3824     1183     3904      475
+   1       3821     1180      472     3904
+   1       1179     3824     1180     3821
+   1       1179     3824     1183     1180
+   1       3824     3821     3904     1180
+   1       3824     1183     1180     3904
+   1       3878      475     3911     1881
+   1       1880     1881     1882      120
+   1       3880     3911      482     1882
+   1       3878     1880     3911     3880
+   1       3878     1880     1881     3911
+   1       1880     3880     1882     3911
+   1       1880     1881     3911     1882
+   1       3835      472     1196     3905
+   1       3839     3905     1199      482
+   1       1195     1196       60     1199
+   1       3835     3839     1196     1195
+   1       3835     3839     3905     1196
+   1       3839     1195     1199     1196
+   1       3839     3905     1196     1199
+   1       3820      466     3876     3834
+   1       3817     3834     3835      459
+   1       3821     3876      472     3835
+   1       3820     3817     3876     3821
+   1       3820     3817     3834     3876
+   1       3817     3821     3835     3876
+   1       3817     3834     3876     3835
+   1       3820      466     3878     3876
+   1       3824     3878      475     3904
+   1       3821     3876     3904      472
+   1       3820     3824     3821     3876
+   1       3820     3824     3876     3878
+   1       3824     3821     3876     3904
+   1       3824     3878     3904     3876
+   1       3834      459     3839     3835
+   1       3876     3835     3905      472
+   1       3880     3839      482     3905
+   1       3834     3876     3839     3880
+   1       3834     3876     3835     3839
+   1       3876     3880     3905     3839
+   1       3876     3835     3839     3905
+   1       3878      475     3904     3911
+   1       3876     3904      472     3905
+   1       3880     3911     3905      482
+   1       3878     3876     3880     3911
+   1       3878     3876     3911     3904
+   1       3876     3880     3911     3905
+   1       3876     3904     3905     3911
+   1        892       23      896      889
+   1       3005      896      292     2976
+   1       2974      889     2976      285
+   1        892     3005     2974      889
+   1        892     3005      889      896
+   1       3005     2974      889     2976
+   1       3005      896     2976      889
+   1       3029      292     1898     3027
+   1       1904     1898      122     1900
+   1       4027     3027     1900      499
+   1       3029     1904     4027     3027
+   1       3029     1904     3027     1898
+   1       1904     4027     3027     1900
+   1       1904     1898     1900     3027
+   1       2977      285     2979     1214
+   1       4014     2979      499     1221
+   1       1218     1214     1221       62
+   1       2977     4014     1218     1214
+   1       2977     4014     1214     2979
+   1       4014     1218     1214     1221
+   1       4014     2979     1221     1214
+   1       3011      704     4017     2980
+   1       3006     4017      496     2977
+   1       2974     2980     2977      285
+   1       3011     3006     2974     2980
+   1       3011     3006     2980     4017
+   1       3006     2974     2980     2977
+   1       3006     4017     2977     2980
+   1       3011      704     2980     3029
+   1       3005     3029     2976      292
+   1       2974     2980      285     2976
+   1       3011     3005     2980     2974
+   1       3011     3005     3029     2980
+   1       3005     2974     2976     2980
+   1       3005     3029     2980     2976
+   1       4017      496     2977     4014
+   1       2980     2977      285     2979
+   1       4027     4014     2979      499
+   1       4017     2980     4027     4014
+   1       4017     2980     4014     2977
+   1       2980     4027     4014     2979
+   1       2980     2977     2979     4014
+   1       3029      292     3027     2976
+   1       2980     2976     2979      285
+   1       4027     3027      499     2979
+   1       3029     2980     3027     4027
+   1       3029     2980     2976     3027
+   1       2980     4027     2979     3027
+   1       2980     2976     3027     2979
+   1       1905      122     1899     1901
+   1       3198     1899      319     3196
+   1       4042     1901     3196      506
+   1       1905     3198     4042     1901
+   1       1905     3198     1901     1899
+   1       3198     4042     1901     3196
+   1       3198     1899     3196     1901
+   1       3180      319      923     3164
+   1        921      923       27      919
+   1       3163     3164      919      315
+   1       3180      921     3163     3164
+   1       3180      921     3164      923
+   1        921     3163     3164      919
+   1        921      923      919     3164
+   1       4038      506     3167     1240
+   1       3166     3167      315     1235
+   1       1239     1240     1235       65
+   1       4038     3166     1239     1240
+   1       4038     3166     1240     3167
+   1       3166     1239     1240     1235
+   1       3166     3167     1235     1240
+   1       3187      317     3183     3184
+   1       4040     3183      505     4038
+   1       4042     3184     4038      506
+   1       3187     4040     4042     3184
+   1       3187     4040     3184     3183
+   1       4040     4042     3184     4038
+   1       4040     3183     4038     3184
+   1       3187      317     3184     3180
+   1       3198     3180     3196      319
+   1       4042     3184      506     3196
+   1       3187     3198     3184     4042
+   1       3187     3198     3180     3184
+   1       3198     4042     3196     3184
+   1       3198     3180     3184     3196
+   1       3183      505     4038     3166
+   1       3184     4038      506     3167
+   1       3163     3166     3167      315
+   1       3183     3184     3163     3166
+   1       3183     3184     3166     4038
+   1       3184     3163     3166     3167
+   1       3184     4038     3167     3166
+   1       3180      319     3164     3196
+   1       3184     3196     3167      506
+   1       3163     3164      315     3167
+   1       3180     3184     3164     3163
+   1       3180     3184     3196     3164
+   1       3184     3163     3167     3164
+   1       3184     3196     3164     3167
+   1       1215       62     1217     1213
+   1       3945     1217      495     2115
+   1       2112     1213     2115      160
+   1       1215     3945     2112     1213
+   1       1215     3945     1213     1217
+   1       3945     2112     1213     2115
+   1       3945     1217     2115     1213
+   1       3962      495     1237     2122
+   1       1236     1237       65     1234
+   1       2121     2122     1234      163
+   1       3962     1236     2121     2122
+   1       3962     1236     2122     1237
+   1       1236     2121     2122     1234
+   1       1236     1237     1234     2122
+   1       2100      160     2111      764
+   1       2103     2111      163      767
+   1        763      764      767        8
+   1       2100     2103      763      764
+   1       2100     2103      764     2111
+   1       2103      763      764      767
+   1       2103     2111      767      764
+   1       3940      487     2107     2113
+   1       2104     2107      159     2100
+   1       2112     2113     2100      160
+   1       3940     2104     2112     2113
+   1       3940     2104     2113     2107
+   1       2104     2112     2113     2100
+   1       2104     2107     2100     2113
+   1       3940      487     2113     3962
+   1       3945     3962     2115      495
+   1       2112     2113      160     2115
+   1       3940     3945     2113     2112
+   1       3940     3945     3962     2113
+   1       3945     2112     2115     2113
+   1       3945     3962     2113     2115
+   1       2107      159     2100     2103
+   1       2113     2100      160     2111
+   1       2121     2103     2111      163
+   1       2107     2113     2121     2103
+   1       2107     2113     2103     2100
+   1       2113     2121     2103     2111
+   1       2113     2100     2111     2103
+   1       3962      495     2122     2115
+   1       2113     2115     2111      160
+   1       2121     2122      163     2111
+   1       3962     2113     2122     2121
+   1       3962     2113     2115     2122
+   1       2113     2121     2111     2122
+   1       2113     2115     2122     2111
+   1       1812      113     1806     1807
+   1       3987     1806      491     3985
+   1       4021     1807     3985      497
+   1       1812     3987     4021     1807
+   1       1812     3987     1807     1806
+   1       3987     4021     1807     3985
+   1       3987     1806     3985     1807
+   1       3968      491     1210     3942
+   1       1207     1210       61     1203
+   1       3941     3942     1203      484
+   1       3968     1207     3941     3942
+   1       3968     1207     3942     1210
+   1       1207     3941     3942     1203
+   1       1207     1210     1203     3942
+   1       4012      497     3947     1219
+   1       3946     3947      484     1215
+   1       1218     1219     1215       62
+   1       4012     3946     1218     1219
+   1       4012     3946     1219     3947
+   1       3946     1218     1219     1215
+   1       3946     3947     1215     1219
+   1       3973      488     3970     3971
+   1       4015     3970      496     4012
+   1       4021     3971     4012      497
+   1       3973     4015     4021     3971
+   1       3973     4015     3971     3970
+   1       4015     4021     3971     4012
+   1       4015     3970     4012     3971
+   1       3973      488     3971     3968
+   1       3987     3968     3985      491
+   1       4021     3971      497     3985
+   1       3973     3987     3971     4021
+   1       3973     3987     3968     3971
+   1       3987     4021     3985     3971
+   1       3987     3968     3971     3985
+   1       3970      496     4012     3946
+   1       3971     4012      497     3947
+   1       3941     3946     3947      484
+   1       3970     3971     3941     3946
+   1       3970     3971     3946     4012
+   1       3971     3941     3946     3947
+   1       3971     4012     3947     3946
+   1       3968      491     3942     3985
+   1       3971     3985     3947      497
+   1       3941     3942      484     3947
+   1       3968     3971     3942     3941
+   1       3968     3971     3985     3942
+   1       3971     3941     3947     3942
+   1       3971     3985     3942     3947
+   1       1812      113     1807     1815
+   1       4856     1815     4023      715
+   1       4021     1807      497     4023
+   1       1812     4856     1807     4021
+   1       1812     4856     1815     1807
+   1       4856     4021     4023     1807
+   1       4856     1815     1807     4023
+   1       4861      715     4028     1905
+   1       1904     1905     1900      122
+   1       4027     4028      499     1900
+   1       4861     1904     4028     4027
+   1       4861     1904     1905     4028
+   1       1904     4027     1900     4028
+   1       1904     1905     4028     1900
+   1       4012      497     1219     4018
+   1       4014     4018     1221      499
+   1       1218     1219       62     1221
+   1       4012     4014     1219     1218
+   1       4012     4014     4018     1219
+   1       4014     1218     1221     1219
+   1       4014     4018     1219     1221
+   1       4855      704     4022     4017
+   1       4015     4017     4012      496
+   1       4021     4022      497     4012
+   1       4855     4015     4022     4021
+   1       4855     4015     4017     4022
+   1       4015     4021     4012     4022
+   1       4015     4017     4022     4012
+   1       4855      704     4861     4022
+   1       4856     4861      715     4023
+   1       4021     4022     4023      497
+   1       4855     4856     4021     4022
+   1       4855     4856     4022     4861
+   1       4856     4021     4022     4023
+   1       4856     4861     4023     4022
+   1       4017      496     4014     4012
+   1       4022     4012     4018      497
+   1       4027     4014      499     4018
+   1       4017     4022     4014     4027
+   1       4017     4022     4012     4014
+   1       4022     4027     4018     4014
+   1       4022     4012     4014     4018
+   1       4861      715     4023     4028
+   1       4022     4023      497     4018
+   1       4027     4028     4018      499
+   1       4861     4022     4027     4028
+   1       4861     4022     4028     4023
+   1       4022     4027     4028     4018
+   1       4022     4023     4018     4028
+   1       1210       61     1203     1206
+   1       3942     1203      484     3940
+   1       3960     1206     3940      487
+   1       1210     3942     3960     1206
+   1       1210     3942     1206     1203
+   1       3942     3960     1206     3940
+   1       3942     1203     3940     1206
+   1       3947      484     1215     3945
+   1       1219     1215       62     1217
+   1       4008     3945     1217      495
+   1       3947     1219     4008     3945
+   1       3947     1219     3945     1215
+   1       1219     4008     3945     1217
+   1       1219     1215     1217     3945
+   1       3965      487     3962     1236
+   1       4010     3962      495     1237
+   1       1239     1236     1237       65
+   1       3965     4010     1239     1236
+   1       3965     4010     1236     3962
+   1       4010     1239     1236     1237
+   1       4010     3962     1237     1236
+   1       3985      497     4019     3963
+   1       3986     4019      505     3965
+   1       3960     3963     3965      487
+   1       3985     3986     3960     3963
+   1       3985     3986     3963     4019
+   1       3986     3960     3963     3965
+   1       3986     4019     3965     3963
+   1       3985      497     3963     3947
+   1       3942     3947     3940      484
+   1       3960     3963      487     3940
+   1       3985     3942     3963     3960
+   1       3985     3942     3947     3963
+   1       3942     3960     3940     3963
+   1       3942     3947     3963     3940
+   1       4019      505     3965     4010
+   1       3963     3965      487     3962
+   1       4008     4010     3962      495
+   1       4019     3963     4008     4010
+   1       4019     3963     4010     3965
+   1       3963     4008     4010     3962
+   1       3963     3965     3962     4010
+   1       3947      484     3945     3940
+   1       3963     3940     3962      487
+   1       4008     3945      495     3962
+   1       3947     3963     3945     4008
+   1       3947     3963     3940     3945
+   1       3963     4008     3962     3945
+   1       3963     3940     3945     3962
+   1       1905      122     1901     1900
+   1       4028     1900     4026      499
+   1       4042     1901      506     4026
+   1       1905     4028     1901     4042
+   1       1905     4028     1900     1901
+   1       4028     4042     4026     1901
+   1       4028     1900     1901     4026
+   1       4018      499     4009     1221
+   1       1219     1221     1217       62
+   1       4008     4009      495     1217
+   1       4018     1219     4009     4008
+   1       4018     1219     1221     4009
+   1       1219     4008     1217     4009
+   1       1219     1221     4009     1217
+   1       4038      506     1240     4011
+   1       4010     4011     1237      495
+   1       1239     1240       65     1237
+   1       4038     4010     1240     1239
+   1       4038     4010     4011     1240
+   1       4010     1239     1237     1240
+   1       4010     4011     1240     1237
+   1       4023      497     4020     4019
+   1       4040     4019     4038      505
+   1       4042     4020      506     4038
+   1       4023     4040     4020     4042
+   1       4023     4040     4019     4020
+   1       4040     4042     4038     4020
+   1       4040     4019     4020     4038
+   1       4023      497     4018     4020
+   1       4028     4018      499     4026
+   1       4042     4020     4026      506
+   1       4023     4028     4042     4020
+   1       4023     4028     4020     4018
+   1       4028     4042     4020     4026
+   1       4028     4018     4026     4020
+   1       4019      505     4010     4038
+   1       4020     4038     4011      506
+   1       4008     4010      495     4011
+   1       4019     4020     4010     4008
+   1       4019     4020     4038     4010
+   1       4020     4008     4011     4010
+   1       4020     4038     4010     4011
+   1       4018      499     4026     4009
+   1       4020     4026      506     4011
+   1       4008     4009     4011      495
+   1       4018     4020     4008     4009
+   1       4018     4020     4009     4026
+   1       4020     4008     4009     4011
+   1       4020     4026     4011     4009
+   1        838       17      840      843
+   1       2612      840      236     2631
+   1       2614      843     2631      239
+   1        838     2612     2614      843
+   1        838     2612      843      840
+   1       2612     2614      843     2631
+   1       2612      840     2631      843
+   1       2635      236     1658     2637
+   1       1662     1658      102     1666
+   1       4451     2637     1666      668
+   1       2635     1662     4451     2637
+   1       2635     1662     2637     1658
+   1       1662     4451     2637     1666
+   1       1662     1658     1666     2637
+   1       2659      239     2660     1700
+   1       4459     2660      668     1706
+   1       1702     1700     1706      105
+   1       2659     4459     1702     1700
+   1       2659     4459     1700     2660
+   1       4459     1702     1700     1706
+   1       4459     2660     1706     1700
+   1       2618      604     4448     2657
+   1       2620     4448      606     2659
+   1       2614     2657     2659      239
+   1       2618     2620     2614     2657
+   1       2618     2620     2657     4448
+   1       2620     2614     2657     2659
+   1       2620     4448     2659     2657
+   1       2618      604     2657     2635
+   1       2612     2635     2631      236
+   1       2614     2657      239     2631
+   1       2618     2612     2657     2614
+   1       2618     2612     2635     2657
+   1       2612     2614     2631     2657
+   1       2612     2635     2657     2631
+   1       4448      606     2659     4459
+   1       2657     2659      239     2660
+   1       4451     4459     2660      668
+   1       4448     2657     4451     4459
+   1       4448     2657     4459     2659
+   1       2657     4451     4459     2660
+   1       2657     2659     2660     4459
+   1       2635      236     2637     2631
+   1       2657     2631     2660      239
+   1       4451     2637      668     2660
+   1       2635     2657     2637     4451
+   1       2635     2657     2631     2637
+   1       2657     4451     2660     2637
+   1       2657     2631     2637     2660
+   1       1663      102     1659     1669
+   1       2728     1659      247     2730
+   1       4478     1669     2730      671
+   1       1663     2728     4478     1669
+   1       1663     2728     1669     1659
+   1       2728     4478     1669     2730
+   1       2728     1659     2730     1669
+   1       2701      247      851     2724
+   1        848      851       18      853
+   1       2703     2724      853      249
+   1       2701      848     2703     2724
+   1       2701      848     2724      851
+   1        848     2703     2724      853
+   1        848      851      853     2724
+   1       4492      671     2747     1762
+   1       2746     2747      249     1756
+   1       1760     1762     1756      109
+   1       4492     2746     1760     1762
+   1       4492     2746     1762     2747
+   1       2746     1760     1762     1756
+   1       2746     2747     1756     1762
+   1       2707      244     2709     2710
+   1       4476     2709      613     4492
+   1       4478     2710     4492      671
+   1       2707     4476     4478     2710
+   1       2707     4476     2710     2709
+   1       4476     4478     2710     4492
+   1       4476     2709     4492     2710
+   1       2707      244     2710     2701
+   1       2728     2701     2730      247
+   1       4478     2710      671     2730
+   1       2707     2728     2710     4478
+   1       2707     2728     2701     2710
+   1       2728     4478     2730     2710
+   1       2728     2701     2710     2730
+   1       2709      613     4492     2746
+   1       2710     4492      671     2747
+   1       2703     2746     2747      249
+   1       2709     2710     2703     2746
+   1       2709     2710     2746     4492
+   1       2710     2703     2746     2747
+   1       2710     4492     2747     2746
+   1       2701      247     2724     2730
+   1       2710     2730     2747      671
+   1       2703     2724      249     2747
+   1       2701     2710     2724     2703
+   1       2701     2710     2730     2724
+   1       2710     2703     2747     2724
+   1       2710     2730     2724     2747
+   1       1705      105     1709     1701
+   1       4527     1709      681     2998
+   1       2995     1701     2998      287
+   1       1705     4527     2995     1701
+   1       1705     4527     1701     1709
+   1       4527     2995     1701     2998
+   1       4527     1709     2998     1701
+   1       4535      681     1763     3008
+   1       1761     1763      109     1757
+   1       3007     3008     1757      288
+   1       4535     1761     3007     3008
+   1       4535     1761     3008     1763
+   1       1761     3007     3008     1757
+   1       1761     1763     1757     3008
+   1       2981      287     2992      891
+   1       2982     2992      288      892
+   1        890      891      892       23
+   1       2981     2982      890      891
+   1       2981     2982      891     2992
+   1       2982      890      891      892
+   1       2982     2992      892      891
+   1       4525      624     2988     2996
+   1       2987     2988      286     2981
+   1       2995     2996     2981      287
+   1       4525     2987     2995     2996
+   1       4525     2987     2996     2988
+   1       2987     2995     2996     2981
+   1       2987     2988     2981     2996
+   1       4525      624     2996     4535
+   1       4527     4535     2998      681
+   1       2995     2996      287     2998
+   1       4525     4527     2996     2995
+   1       4525     4527     4535     2996
+   1       4527     2995     2998     2996
+   1       4527     4535     2996     2998
+   1       2988      286     2981     2982
+   1       2996     2981      287     2992
+   1       3007     2982     2992      288
+   1       2988     2996     3007     2982
+   1       2988     2996     2982     2981
+   1       2996     3007     2982     2992
+   1       2996     2981     2992     2982
+   1       4535      681     3008     2998
+   1       2996     2998     2992      287
+   1       3007     3008      288     2992
+   1       4535     2996     3008     3007
+   1       4535     2996     2998     3008
+   1       2996     3007     2992     3008
+   1       2996     2998     3008     2992
+   1       1510       89     1512     1515
+   1       4433     1512      608     4466
+   1       4435     1515     4466      611
+   1       1510     4433     4435     1515
+   1       1510     4433     1515     1512
+   1       4433     4435     1515     4466
+   1       4433     1512     4466     1515
+   1       4443      608     1548     4470
+   1       1547     1548       92     1551
+   1       4447     4470     1551      622
+   1       4443     1547     4447     4470
+   1       4443     1547     4470     1548
+   1       1547     4447     4470     1551
+   1       1547     1548     1551     4470
+   1       4456      611     4480     1703
+   1       4458     4480      622     1705
+   1       1702     1703     1705      105
+   1       4456     4458     1702     1703
+   1       4456     4458     1703     4480
+   1       4458     1702     1703     1705
+   1       4458     4480     1705     1703
+   1       4430      603     4442     4444
+   1       4432     4442      606     4456
+   1       4435     4444     4456      611
+   1       4430     4432     4435     4444
+   1       4430     4432     4444     4442
+   1       4432     4435     4444     4456
+   1       4432     4442     4456     4444
+   1       4430      603     4444     4443
+   1       4433     4443     4466      608
+   1       4435     4444      611     4466
+   1       4430     4433     4444     4435
+   1       4430     4433     4443     4444
+   1       4433     4435     4466     4444
+   1       4433     4443     4444     4466
+   1       4442      606     4456     4458
+   1       4444     4456      611     4480
+   1       4447     4458     4480      622
+   1       4442     4444     4447     4458
+   1       4442     4444     4458     4456
+   1       4444     4447     4458     4480
+   1       4444     4456     4480     4458
+   1       4443      608     4470     4466
+   1       4444     4466     4480      611
+   1       4447     4470      622     4480
+   1       4443     4444     4470     4447
+   1       4443     4444     4466     4470
+   1       4444     4447     4480     4470
+   1       4444     4466     4470     4480
+   1       1510       89     1515     1514
+   1       4434     1514     4475      610
+   1       4435     1515      611     4475
+   1       1510     4434     1515     4435
+   1       1510     4434     1514     1515
+   1       4434     4435     4475     1515
+   1       4434     1514     1515     4475
+   1       4449      610     4477     1663
+   1       1662     1663     1666      102
+   1       4451     4477      668     1666
+   1       4449     1662     4477     4451
+   1       4449     1662     1663     4477
+   1       1662     4451     1666     4477
+   1       1662     1663     4477     1666
+   1       4456      611     1703     4482
+   1       4459     4482     1706      668
+   1       1702     1703      105     1706
+   1       4456     4459     1703     1702
+   1       4456     4459     4482     1703
+   1       4459     1702     1706     1703
+   1       4459     4482     1703     1706
+   1       4431      604     4450     4448
+   1       4432     4448     4456      606
+   1       4435     4450      611     4456
+   1       4431     4432     4450     4435
+   1       4431     4432     4448     4450
+   1       4432     4435     4456     4450
+   1       4432     4448     4450     4456
+   1       4431      604     4449     4450
+   1       4434     4449      610     4475
+   1       4435     4450     4475      611
+   1       4431     4434     4435     4450
+   1       4431     4434     4450     4449
+   1       4434     4435     4450     4475
+   1       4434     4449     4475     4450
+   1       4448      606     4459     4456
+   1       4450     4456     4482      611
+   1       4451     4459      668     4482
+   1       4448     4450     4459     4451
+   1       4448     4450     4456     4459
+   1       4450     4451     4482     4459
+   1       4450     4456     4459     4482
+   1       4449      610     4475     4477
+   1       4450     4475      611     4482
+   1       4451     4477     4482      668
+   1       4449     4450     4451     4477
+   1       4449     4450     4477     4475
+   1       4450     4451     4477     4482
+   1       4450     4475     4482     4477
+   1       1548       92     1551     1553
+   1       4470     1551      622     4525
+   1       4472     1553     4525      624
+   1       1548     4470     4472     1553
+   1       1548     4470     1553     1551
+   1       4470     4472     1553     4525
+   1       4470     1551     4525     1553
+   1       4480      622     1705     4527
+   1       1703     1705      105     1709
+   1       4484     4527     1709      681
+   1       4480     1703     4484     4527
+   1       4480     1703     4527     1705
+   1       1703     4484     4527     1709
+   1       1703     1705     1709     4527
+   1       4491      624     4535     1761
+   1       4493     4535      681     1763
+   1       1760     1761     1763      109
+   1       4491     4493     1760     1761
+   1       4491     4493     1761     4535
+   1       4493     1760     1761     1763
+   1       4493     4535     1763     1761
+   1       4466      611     4479     4481
+   1       4468     4479      613     4491
+   1       4472     4481     4491      624
+   1       4466     4468     4472     4481
+   1       4466     4468     4481     4479
+   1       4468     4472     4481     4491
+   1       4468     4479     4491     4481
+   1       4466      611     4481     4480
+   1       4470     4480     4525      622
+   1       4472     4481      624     4525
+   1       4466     4470     4481     4472
+   1       4466     4470     4480     4481
+   1       4470     4472     4525     4481
+   1       4470     4480     4481     4525
+   1       4479      613     4491     4493
+   1       4481     4491      624     4535
+   1       4484     4493     4535      681
+   1       4479     4481     4484     4493
+   1       4479     4481     4493     4491
+   1       4481     4484     4493     4535
+   1       4481     4491     4535     4493
+   1       4480      622     4527     4525
+   1       4481     4525     4535      624
+   1       4484     4527      681     4535
+   1       4480     4481     4527     4484
+   1       4480     4481     4525     4527
+   1       4481     4484     4535     4527
+   1       4481     4525     4527     4535
+   1       1663      102     1669     1666
+   1       4477     1666     4718      668
+   1       4478     1669      671     4718
+   1       1663     4477     1669     4478
+   1       1663     4477     1666     1669
+   1       4477     4478     4718     1669
+   1       4477     1666     1669     4718
+   1       4482      668     4721     1706
+   1       1703     1706     1709      105
+   1       4484     4721      681     1709
+   1       4482     1703     4721     4484
+   1       4482     1703     1706     4721
+   1       1703     4484     1709     4721
+   1       1703     1706     4721     1709
+   1       4492      671     1762     4736
+   1       4493     4736     1763      681
+   1       1760     1762      109     1763
+   1       4492     4493     1762     1760
+   1       4492     4493     4736     1762
+   1       4493     1760     1763     1762
+   1       4493     4736     1762     1763
+   1       4475      611     4483     4479
+   1       4476     4479     4492      613
+   1       4478     4483      671     4492
+   1       4475     4476     4483     4478
+   1       4475     4476     4479     4483
+   1       4476     4478     4492     4483
+   1       4476     4479     4483     4492
+   1       4475      611     4482     4483
+   1       4477     4482      668     4718
+   1       4478     4483     4718      671
+   1       4475     4477     4478     4483
+   1       4475     4477     4483     4482
+   1       4477     4478     4483     4718
+   1       4477     4482     4718     4483
+   1       4479      613     4493     4492
+   1       4483     4492     4736      671
+   1       4484     4493      681     4736
+   1       4479     4483     4493     4484
+   1       4479     4483     4492     4493
+   1       4483     4484     4736     4493
+   1       4483     4492     4493     4736
+   1       4482      668     4718     4721
+   1       4483     4718      671     4736
+   1       4484     4721     4736      681
+   1       4482     4483     4484     4721
+   1       4482     4483     4721     4718
+   1       4483     4484     4721     4736
+   1       4483     4718     4736     4721
+   1        838       17      843      842
+   1       2613      842     2648      238
+   1       2614      843      239     2648
+   1        838     2613      843     2614
+   1        838     2613      842      843
+   1       2613     2614     2648      843
+   1       2613      842      843     2648
+   1       2653      238     2654     1686
+   1       1694     1686     1696      104
+   1       4455     2654      676     1696
+   1       2653     1694     2654     4455
+   1       2653     1694     1686     2654
+   1       1694     4455     1696     2654
+   1       1694     1686     2654     1696
+   1       2659      239     1700     2662
+   1       4460     2662     1707      676
+   1       1702     1700      105     1707
+   1       2659     4460     1700     1702
+   1       2659     4460     2662     1700
+   1       4460     1702     1707     1700
+   1       4460     2662     1700     1707
+   1       2619      605     2658     4452
+   1       2620     4452     2659      606
+   1       2614     2658      239     2659
+   1       2619     2620     2658     2614
+   1       2619     2620     4452     2658
+   1       2620     2614     2659     2658
+   1       2620     4452     2658     2659
+   1       2619      605     2653     2658
+   1       2613     2653      238     2648
+   1       2614     2658     2648      239
+   1       2619     2613     2614     2658
+   1       2619     2613     2658     2653
+   1       2613     2614     2658     2648
+   1       2613     2653     2648     2658
+   1       4452      606     4460     2659
+   1       2658     2659     2662      239
+   1       4455     4460      676     2662
+   1       4452     2658     4460     4455
+   1       4452     2658     2659     4460
+   1       2658     4455     2662     4460
+   1       2658     2659     4460     2662
+   1       2653      238     2648     2654
+   1       2658     2648      239     2662
+   1       4455     2654     2662      676
+   1       2653     2658     4455     2654
+   1       2653     2658     2654     2648
+   1       2658     4455     2654     2662
+   1       2658     2648     2662     2654
+   1       1695      104     1698     1687
+   1       2954     1687     2955      281
+   1       4515     1698      678     2955
+   1       1695     2954     1698     4515
+   1       1695     2954     1687     1698
+   1       2954     4515     2955     1698
+   1       2954     1687     1698     2955
+   1       2939      281     2949      885
+   1        884      885      886       22
+   1       2940     2949      282      886
+   1       2939      884     2949     2940
+   1       2939      884      885     2949
+   1        884     2940      886     2949
+   1        884      885     2949      886
+   1       4523      678     1874     2960
+   1       2959     2960     1868      282
+   1       1872     1874      119     1868
+   1       4523     2959     1874     1872
+   1       4523     2959     2960     1874
+   1       2959     1872     1868     1874
+   1       2959     2960     1874     1868
+   1       2946      280     2948     2947
+   1       4513     2947     4523      621
+   1       4515     2948      678     4523
+   1       2946     4513     2948     4515
+   1       2946     4513     2947     2948
+   1       4513     4515     4523     2948
+   1       4513     2947     2948     4523
+   1       2946      280     2939     2948
+   1       2954     2939      281     2955
+   1       4515     2948     2955      678
+   1       2946     2954     4515     2948
+   1       2946     2954     2948     2939
+   1       2954     4515     2948     2955
+   1       2954     2939     2955     2948
+   1       2947      621     2959     4523
+   1       2948     4523     2960      678
+   1       2940     2959      282     2960
+   1       2947     2948     2959     2940
+   1       2947     2948     4523     2959
+   1       2948     2940     2960     2959
+   1       2948     4523     2959     2960
+   1       2939      281     2955     2949
+   1       2948     2955      678     2960
+   1       2940     2949     2960      282
+   1       2939     2948     2940     2949
+   1       2939     2948     2949     2955
+   1       2948     2940     2949     2960
+   1       2948     2955     2960     2949
+   1       1705      105     1701     1711
+   1       4528     1711     2999      683
+   1       2995     1701      287     2999
+   1       1705     4528     1701     2995
+   1       1705     4528     1711     1701
+   1       4528     2995     2999     1701
+   1       4528     1711     1701     2999
+   1       4540      683     3020     1875
+   1       1873     1875     1869      119
+   1       3019     3020      290     1869
+   1       4540     1873     3020     3019
+   1       4540     1873     1875     3020
+   1       1873     3019     1869     3020
+   1       1873     1875     3020     1869
+   1       2981      287      891     2993
+   1       2984     2993      894      290
+   1        890      891       23      894
+   1       2981     2984      891      890
+   1       2981     2984     2993      891
+   1       2984      890      894      891
+   1       2984     2993      891      894
+   1       4526      626     2997     2990
+   1       2987     2990     2981      286
+   1       2995     2997      287     2981
+   1       4526     2987     2997     2995
+   1       4526     2987     2990     2997
+   1       2987     2995     2981     2997
+   1       2987     2990     2997     2981
+   1       4526      626     4540     2997
+   1       4528     4540      683     2999
+   1       2995     2997     2999      287
+   1       4526     4528     2995     2997
+   1       4526     4528     2997     4540
+   1       4528     2995     2997     2999
+   1       4528     4540     2999     2997
+   1       2990      286     2984     2981
+   1       2997     2981     2993      287
+   1       3019     2984      290     2993
+   1       2990     2997     2984     3019
+   1       2990     2997     2981     2984
+   1       2997     3019     2993     2984
+   1       2997     2981     2984     2993
+   1       4540      683     2999     3020
+   1       2997     2999      287     2993
+   1       3019     3020     2993      290
+   1       4540     2997     3019     3020
+   1       4540     2997     3020     2999
+   1       2997     3019     3020     2993
+   1       2997     2999     2993     3020
+   1       1537       91     1540     1538
+   1       4439     1538     4508      618
+   1       4441     1540      620     4508
+   1       1537     4439     1540     4441
+   1       1537     4439     1538     1540
+   1       4439     4441     4508     1540
+   1       4439     1538     1540     4508
+   1       4445      618     4510     1550
+   1       1547     1550     1551       92
+   1       4447     4510      622     1551
+   1       4445     1547     4510     4447
+   1       4445     1547     1550     4510
+   1       1547     4447     1551     4510
+   1       1547     1550     4510     1551
+   1       4457      620     1704     4517
+   1       4458     4517     1705      622
+   1       1702     1704      105     1705
+   1       4457     4458     1704     1702
+   1       4457     4458     4517     1704
+   1       4458     1702     1705     1704
+   1       4458     4517     1704     1705
+   1       4436      603     4446     4442
+   1       4438     4442     4457      606
+   1       4441     4446      620     4457
+   1       4436     4438     4446     4441
+   1       4436     4438     4442     4446
+   1       4438     4441     4457     4446
+   1       4438     4442     4446     4457
+   1       4436      603     4445     4446
+   1       4439     4445      618     4508
+   1       4441     4446     4508      620
+   1       4436     4439     4441     4446
+   1       4436     4439     4446     4445
+   1       4439     4441     4446     4508
+   1       4439     4445     4508     4446
+   1       4442      606     4458     4457
+   1       4446     4457     4517      620
+   1       4447     4458      622     4517
+   1       4442     4446     4458     4447
+   1       4442     4446     4457     4458
+   1       4446     4447     4517     4458
+   1       4446     4457     4458     4517
+   1       4445      618     4508     4510
+   1       4446     4508      620     4517
+   1       4447     4510     4517      622
+   1       4445     4446     4447     4510
+   1       4445     4446     4510     4508
+   1       4446     4447     4510     4517
+   1       4446     4508     4517     4510
+   1       1537       91     1539     1540
+   1       4440     1539      619     4512
+   1       4441     1540     4512      620
+   1       1537     4440     4441     1540
+   1       1537     4440     1540     1539
+   1       4440     4441     1540     4512
+   1       4440     1539     4512     1540
+   1       4453      619     1695     4514
+   1       1694     1695      104     1696
+   1       4455     4514     1696      676
+   1       4453     1694     4455     4514
+   1       4453     1694     4514     1695
+   1       1694     4455     4514     1696
+   1       1694     1695     1696     4514
+   1       4457      620     4519     1704
+   1       4460     4519      676     1707
+   1       1702     1704     1707      105
+   1       4457     4460     1702     1704
+   1       4457     4460     1704     4519
+   1       4460     1702     1704     1707
+   1       4460     4519     1707     1704
+   1       4437      605     4452     4454
+   1       4438     4452      606     4457
+   1       4441     4454     4457      620
+   1       4437     4438     4441     4454
+   1       4437     4438     4454     4452
+   1       4438     4441     4454     4457
+   1       4438     4452     4457     4454
+   1       4437      605     4454     4453
+   1       4440     4453     4512      619
+   1       4441     4454      620     4512
+   1       4437     4440     4454     4441
+   1       4437     4440     4453     4454
+   1       4440     4441     4512     4454
+   1       4440     4453     4454     4512
+   1       4452      606     4457     4460
+   1       4454     4457      620     4519
+   1       4455     4460     4519      676
+   1       4452     4454     4455     4460
+   1       4452     4454     4460     4457
+   1       4454     4455     4460     4519
+   1       4454     4457     4519     4460
+   1       4453      619     4514     4512
+   1       4454     4512     4519      620
+   1       4455     4514      676     4519
+   1       4453     4454     4514     4455
+   1       4453     4454     4512     4514
+   1       4454     4455     4519     4514
+   1       4454     4512     4514     4519
+   1       1550       92     1555     1551
+   1       4510     1551     4526      622
+   1       4511     1555      626     4526
+   1       1550     4510     1555     4511
+   1       1550     4510     1551     1555
+   1       4510     4511     4526     1555
+   1       4510     1551     1555     4526
+   1       4517      622     4528     1705
+   1       1704     1705     1711      105
+   1       4521     4528      683     1711
+   1       4517     1704     4528     4521
+   1       4517     1704     1705     4528
+   1       1704     4521     1711     4528
+   1       1704     1705     4528     1711
+   1       4522      626     1873     4540
+   1       4524     4540     1875      683
+   1       1872     1873      119     1875
+   1       4522     4524     1873     1872
+   1       4522     4524     4540     1873
+   1       4524     1872     1875     1873
+   1       4524     4540     1873     1875
+   1       4508      620     4518     4516
+   1       4509     4516     4522      621
+   1       4511     4518      626     4522
+   1       4508     4509     4518     4511
+   1       4508     4509     4516     4518
+   1       4509     4511     4522     4518
+   1       4509     4516     4518     4522
+   1       4508      620     4517     4518
+   1       4510     4517      622     4526
+   1       4511     4518     4526      626
+   1       4508     4510     4511     4518
+   1       4508     4510     4518     4517
+   1       4510     4511     4518     4526
+   1       4510     4517     4526     4518
+   1       4516      621     4524     4522
+   1       4518     4522     4540      626
+   1       4521     4524      683     4540
+   1       4516     4518     4524     4521
+   1       4516     4518     4522     4524
+   1       4518     4521     4540     4524
+   1       4518     4522     4524     4540
+   1       4517      622     4526     4528
+   1       4518     4526      626     4540
+   1       4521     4528     4540      683
+   1       4517     4518     4521     4528
+   1       4517     4518     4528     4526
+   1       4518     4521     4528     4540
+   1       4518     4526     4540     4528
+   1       1695      104     1696     1698
+   1       4514     1696      676     4752
+   1       4515     1698     4752      678
+   1       1695     4514     4515     1698
+   1       1695     4514     1698     1696
+   1       4514     4515     1698     4752
+   1       4514     1696     4752     1698
+   1       4519      676     1707     4755
+   1       1704     1707      105     1711
+   1       4521     4755     1711      683
+   1       4519     1704     4521     4755
+   1       4519     1704     4755     1707
+   1       1704     4521     4755     1711
+   1       1704     1707     1711     4755
+   1       4523      678     4762     1874
+   1       4524     4762      683     1875
+   1       1872     1874     1875      119
+   1       4523     4524     1872     1874
+   1       4523     4524     1874     4762
+   1       4524     1872     1874     1875
+   1       4524     4762     1875     1874
+   1       4512      620     4516     4520
+   1       4513     4516      621     4523
+   1       4515     4520     4523      678
+   1       4512     4513     4515     4520
+   1       4512     4513     4520     4516
+   1       4513     4515     4520     4523
+   1       4513     4516     4523     4520
+   1       4512      620     4520     4519
+   1       4514     4519     4752      676
+   1       4515     4520      678     4752
+   1       4512     4514     4520     4515
+   1       4512     4514     4519     4520
+   1       4514     4515     4752     4520
+   1       4514     4519     4520     4752
+   1       4516      621     4523     4524
+   1       4520     4523      678     4762
+   1       4521     4524     4762      683
+   1       4516     4520     4521     4524
+   1       4516     4520     4524     4523
+   1       4520     4521     4524     4762
+   1       4520     4523     4762     4524
+   1       4519      676     4755     4752
+   1       4520     4752     4762      678
+   1       4521     4755      683     4762
+   1       4519     4520     4755     4521
+   1       4519     4520     4752     4755
+   1       4520     4521     4762     4755
+   1       4520     4752     4755     4762
+   1        851       18      853      857
+   1       2724      853      249     2744
+   1       2726      857     2744      253
+   1        851     2724     2726      857
+   1        851     2724      857      853
+   1       2724     2726      857     2744
+   1       2724      853     2744      857
+   1       2747      249     1756     2750
+   1       1762     1756      109     1766
+   1       4738     2750     1766      701
+   1       2747     1762     4738     2750
+   1       2747     1762     2750     1756
+   1       1762     4738     2750     1766
+   1       1762     1756     1766     2750
+   1       2773      253     2774     1804
+   1       4746     2774      701     1812
+   1       1809     1804     1812      113
+   1       2773     4746     1809     1804
+   1       2773     4746     1804     2774
+   1       4746     1809     1804     1812
+   1       4746     2774     1812     1804
+   1       2730      671     4735     2772
+   1       2732     4735      673     2773
+   1       2726     2772     2773      253
+   1       2730     2732     2726     2772
+   1       2730     2732     2772     4735
+   1       2732     2726     2772     2773
+   1       2732     4735     2773     2772
+   1       2730      671     2772     2747
+   1       2724     2747     2744      249
+   1       2726     2772      253     2744
+   1       2730     2724     2772     2726
+   1       2730     2724     2747     2772
+   1       2724     2726     2744     2772
+   1       2724     2747     2772     2744
+   1       4735      673     2773     4746
+   1       2772     2773      253     2774
+   1       4738     4746     2774      701
+   1       4735     2772     4738     4746
+   1       4735     2772     4746     2773
+   1       2772     4738     4746     2774
+   1       2772     2773     2774     4746
+   1       2747      249     2750     2744
+   1       2772     2744     2774      253
+   1       4738     2750      701     2774
+   1       2747     2772     2750     4738
+   1       2747     2772     2744     2750
+   1       2772     4738     2774     2750
+   1       2772     2744     2750     2774
+   1       1763      109     1757     1769
+   1       3008     1757      288     3011
+   1       4777     1769     3011      704
+   1       1763     3008     4777     1769
+   1       1763     3008     1769     1757
+   1       3008     4777     1769     3011
+   1       3008     1757     3011     1769
+   1       2992      288      892     3005
+   1        891      892       23      896
+   1       2994     3005      896      292
+   1       2992      891     2994     3005
+   1       2992      891     3005      892
+   1        891     2994     3005      896
+   1        891      892      896     3005
+   1       4795      704     3029     1904
+   1       3028     3029      292     1898
+   1       1902     1904     1898      122
+   1       4795     3028     1902     1904
+   1       4795     3028     1904     3029
+   1       3028     1902     1904     1898
+   1       3028     3029     1898     1904
+   1       2998      287     3000     3001
+   1       4775     3000      685     4795
+   1       4777     3001     4795      704
+   1       2998     4775     4777     3001
+   1       2998     4775     3001     3000
+   1       4775     4777     3001     4795
+   1       4775     3000     4795     3001
+   1       2998      287     3001     2992
+   1       3008     2992     3011      288
+   1       4777     3001      704     3011
+   1       2998     3008     3001     4777
+   1       2998     3008     2992     3001
+   1       3008     4777     3011     3001
+   1       3008     2992     3001     3011
+   1       3000      685     4795     3028
+   1       3001     4795      704     3029
+   1       2994     3028     3029      292
+   1       3000     3001     2994     3028
+   1       3000     3001     3028     4795
+   1       3001     2994     3028     3029
+   1       3001     4795     3029     3028
+   1       2992      288     3005     3011
+   1       3001     3011     3029      704
+   1       2994     3005      292     3029
+   1       2992     3001     3005     2994
+   1       2992     3001     3011     3005
+   1       3001     2994     3029     3005
+   1       3001     3011     3005     3029
+   1       1811      113     1815     1805
+   1       4817     1815      715     3187
+   1       3185     1805     3187      317
+   1       1811     4817     3185     1805
+   1       1811     4817     1805     1815
+   1       4817     3185     1805     3187
+   1       4817     1815     3187     1805
+   1       4821      715     1905     3198
+   1       1903     1905      122     1899
+   1       3197     3198     1899      319
+   1       4821     1903     3197     3198
+   1       4821     1903     3198     1905
+   1       1903     3197     3198     1899
+   1       1903     1905     1899     3198
+   1       3169      317     3180      921
+   1       3171     3180      319      923
+   1        920      921      923       27
+   1       3169     3171      920      921
+   1       3169     3171      921     3180
+   1       3171      920      921      923
+   1       3171     3180      923      921
+   1       4814      693     3177     3186
+   1       3175     3177      316     3169
+   1       3185     3186     3169      317
+   1       4814     3175     3185     3186
+   1       4814     3175     3186     3177
+   1       3175     3185     3186     3169
+   1       3175     3177     3169     3186
+   1       4814      693     3186     4821
+   1       4817     4821     3187      715
+   1       3185     3186      317     3187
+   1       4814     4817     3186     3185
+   1       4814     4817     4821     3186
+   1       4817     3185     3187     3186
+   1       4817     4821     3186     3187
+   1       3177      316     3169     3171
+   1       3186     3169      317     3180
+   1       3197     3171     3180      319
+   1       3177     3186     3197     3171
+   1       3177     3186     3171     3169
+   1       3186     3197     3171     3180
+   1       3186     3169     3180     3171
+   1       4821      715     3198     3187
+   1       3186     3187     3180      317
+   1       3197     3198      319     3180
+   1       4821     3186     3198     3197
+   1       4821     3186     3187     3198
+   1       3186     3197     3180     3198
+   1       3186     3187     3198     3180
+   1       1706      105     1708     1710
+   1       4720     1708      680     4768
+   1       4722     1710     4768      682
+   1       1706     4720     4722     1710
+   1       1706     4720     1710     1708
+   1       4720     4722     1710     4768
+   1       4720     1708     4768     1710
+   1       4730      680     1735     4771
+   1       1733     1735      107     1738
+   1       4734     4771     1738      691
+   1       4730     1733     4734     4771
+   1       4730     1733     4771     1735
+   1       1733     4734     4771     1738
+   1       1733     1735     1738     4771
+   1       4743      682     4779     1810
+   1       4745     4779      691     1811
+   1       1809     1810     1811      113
+   1       4743     4745     1809     1810
+   1       4743     4745     1810     4779
+   1       4745     1809     1810     1811
+   1       4745     4779     1811     1810
+   1       4717      670     4729     4731
+   1       4719     4729      673     4743
+   1       4722     4731     4743      682
+   1       4717     4719     4722     4731
+   1       4717     4719     4731     4729
+   1       4719     4722     4731     4743
+   1       4719     4729     4743     4731
+   1       4717      670     4731     4730
+   1       4720     4730     4768      680
+   1       4722     4731      682     4768
+   1       4717     4720     4731     4722
+   1       4717     4720     4730     4731
+   1       4720     4722     4768     4731
+   1       4720     4730     4731     4768
+   1       4729      673     4743     4745
+   1       4731     4743      682     4779
+   1       4734     4745     4779      691
+   1       4729     4731     4734     4745
+   1       4729     4731     4745     4743
+   1       4731     4734     4745     4779
+   1       4731     4743     4779     4745
+   1       4730      680     4771     4768
+   1       4731     4768     4779      682
+   1       4734     4771      691     4779
+   1       4730     4731     4771     4734
+   1       4730     4731     4768     4771
+   1       4731     4734     4779     4771
+   1       4731     4768     4771     4779
+   1       1706      105     1710     1709
+   1       4721     1709     4774      681
+   1       4722     1710      682     4774
+   1       1706     4721     1710     4722
+   1       1706     4721     1709     1710
+   1       4721     4722     4774     1710
+   1       4721     1709     1710     4774
+   1       4736      681     4776     1763
+   1       1762     1763     1766      109
+   1       4738     4776      701     1766
+   1       4736     1762     4776     4738
+   1       4736     1762     1763     4776
+   1       1762     4738     1766     4776
+   1       1762     1763     4776     1766
+   1       4743      682     1810     4781
+   1       4746     4781     1812      701
+   1       1809     1810      113     1812
+   1       4743     4746     1810     1809
+   1       4743     4746     4781     1810
+   1       4746     1809     1812     1810
+   1       4746     4781     1810     1812
+   1       4718      671     4737     4735
+   1       4719     4735     4743      673
+   1       4722     4737      682     4743
+   1       4718     4719     4737     4722
+   1       4718     4719     4735     4737
+   1       4719     4722     4743     4737
+   1       4719     4735     4737     4743
+   1       4718      671     4736     4737
+   1       4721     4736      681     4774
+   1       4722     4737     4774      682
+   1       4718     4721     4722     4737
+   1       4718     4721     4737     4736
+   1       4721     4722     4737     4774
+   1       4721     4736     4774     4737
+   1       4735      673     4746     4743
+   1       4737     4743     4781      682
+   1       4738     4746      701     4781
+   1       4735     4737     4746     4738
+   1       4735     4737     4743     4746
+   1       4737     4738     4781     4746
+   1       4737     4743     4746     4781
+   1       4736      681     4774     4776
+   1       4737     4774      682     4781
+   1       4738     4776     4781      701
+   1       4736     4737     4738     4776
+   1       4736     4737     4776     4774
+   1       4737     4738     4776     4781
+   1       4737     4774     4781     4776
+   1       1735      107     1738     1740
+   1       4771     1738      691     4814
+   1       4773     1740     4814      693
+   1       1735     4771     4773     1740
+   1       1735     4771     1740     1738
+   1       4771     4773     1740     4814
+   1       4771     1738     4814     1740
+   1       4779      691     1811     4817
+   1       1810     1811      113     1815
+   1       4783     4817     1815      715
+   1       4779     1810     4783     4817
+   1       4779     1810     4817     1811
+   1       1810     4783     4817     1815
+   1       1810     1811     1815     4817
+   1       4794      693     4821     1903
+   1       4796     4821      715     1905
+   1       1902     1903     1905      122
+   1       4794     4796     1902     1903
+   1       4794     4796     1903     4821
+   1       4796     1902     1903     1905
+   1       4796     4821     1905     1903
+   1       4768      682     4778     4780
+   1       4770     4778      685     4794
+   1       4773     4780     4794      693
+   1       4768     4770     4773     4780
+   1       4768     4770     4780     4778
+   1       4770     4773     4780     4794
+   1       4770     4778     4794     4780
+   1       4768      682     4780     4779
+   1       4771     4779     4814      691
+   1       4773     4780      693     4814
+   1       4768     4771     4780     4773
+   1       4768     4771     4779     4780
+   1       4771     4773     4814     4780
+   1       4771     4779     4780     4814
+   1       4778      685     4794     4796
+   1       4780     4794      693     4821
+   1       4783     4796     4821      715
+   1       4778     4780     4783     4796
+   1       4778     4780     4796     4794
+   1       4780     4783     4796     4821
+   1       4780     4794     4821     4796
+   1       4779      691     4817     4814
+   1       4780     4814     4821      693
+   1       4783     4817      715     4821
+   1       4779     4780     4817     4783
+   1       4779     4780     4814     4817
+   1       4780     4783     4821     4817
+   1       4780     4814     4817     4821
+   1       1763      109     1769     1766
+   1       4776     1766     4855      701
+   1       4777     1769      704     4855
+   1       1763     4776     1769     4777
+   1       1763     4776     1766     1769
+   1       4776     4777     4855     1769
+   1       4776     1766     1769     4855
+   1       4781      701     4856     1812
+   1       1810     1812     1815      113
+   1       4783     4856      715     1815
+   1       4781     1810     4856     4783
+   1       4781     1810     1812     4856
+   1       1810     4783     1815     4856
+   1       1810     1812     4856     1815
+   1       4795      704     1904     4861
+   1       4796     4861     1905      715
+   1       1902     1904      122     1905
+   1       4795     4796     1904     1902
+   1       4795     4796     4861     1904
+   1       4796     1902     1905     1904
+   1       4796     4861     1904     1905
+   1       4774      682     4782     4778
+   1       4775     4778     4795      685
+   1       4777     4782      704     4795
+   1       4774     4775     4782     4777
+   1       4774     4775     4778     4782
+   1       4775     4777     4795     4782
+   1       4775     4778     4782     4795
+   1       4774      682     4781     4782
+   1       4776     4781      701     4855
+   1       4777     4782     4855      704
+   1       4774     4776     4777     4782
+   1       4774     4776     4782     4781
+   1       4776     4777     4782     4855
+   1       4776     4781     4855     4782
+   1       4778      685     4796     4795
+   1       4782     4795     4861      704
+   1       4783     4796      715     4861
+   1       4778     4782     4796     4783
+   1       4778     4782     4795     4796
+   1       4782     4783     4861     4796
+   1       4782     4795     4796     4861
+   1       4781      701     4855     4856
+   1       4782     4855      704     4861
+   1       4783     4856     4861      715
+   1       4781     4782     4783     4856
+   1       4781     4782     4856     4855
+   1       4782     4783     4856     4861
+   1       4782     4855     4861     4856
+   1        885       22      887      886
+   1       2949      886     2957      282
+   1       2950      887      283     2957
+   1        885     2949      887     2950
+   1        885     2949      886      887
+   1       2949     2950     2957      887
+   1       2949      886      887     2957
+   1       2960      282     2961     1868
+   1       1874     1868     1876      119
+   1       4764     2961      724     1876
+   1       2960     1874     2961     4764
+   1       2960     1874     1868     2961
+   1       1874     4764     1876     2961
+   1       1874     1868     2961     1876
+   1       2965      283     1878     2966
+   1       4767     2966     1886      724
+   1       1883     1878      120     1886
+   1       2965     4767     1878     1883
+   1       2965     4767     2966     1878
+   1       4767     1883     1886     1878
+   1       4767     2966     1878     1886
+   1       2955      678     2964     4761
+   1       2956     4761     2965      679
+   1       2950     2964      283     2965
+   1       2955     2956     2964     2950
+   1       2955     2956     4761     2964
+   1       2956     2950     2965     2964
+   1       2956     4761     2964     2965
+   1       2955      678     2960     2964
+   1       2949     2960      282     2957
+   1       2950     2964     2957      283
+   1       2955     2949     2950     2964
+   1       2955     2949     2964     2960
+   1       2949     2950     2964     2957
+   1       2949     2960     2957     2964
+   1       4761      679     4767     2965
+   1       2964     2965     2966      283
+   1       4764     4767      724     2966
+   1       4761     2964     4767     4764
+   1       4761     2964     2965     4767
+   1       2964     4764     2966     4767
+   1       2964     2965     4767     2966
+   1       2960      282     2957     2961
+   1       2964     2957      283     2966
+   1       4764     2961     2966      724
+   1       2960     2964     4764     2961
+   1       2960     2964     2961     2957
+   1       2964     4764     2961     2966
+   1       2964     2957     2966     2961
+   1       1875      119     1877     1869
+   1       3020     1869     3021      290
+   1       4787     1877      725     3021
+   1       1875     3020     1877     4787
+   1       1875     3020     1869     1877
+   1       3020     4787     3021     1877
+   1       3020     1869     1877     3021
+   1       2993      290     3017      894
+   1        891      894      896       23
+   1       2994     3017      292      896
+   1       2993      891     3017     2994
+   1       2993      891      894     3017
+   1        891     2994      896     3017
+   1        891      894     3017      896
+   1       4797      725     1906     3030
+   1       3028     3030     1898      292
+   1       1902     1906      122     1898
+   1       4797     3028     1906     1902
+   1       4797     3028     3030     1906
+   1       3028     1902     1898     1906
+   1       3028     3030     1906     1898
+   1       2999      287     3002     3000
+   1       4785     3000     4797      685
+   1       4787     3002      725     4797
+   1       2999     4785     3002     4787
+   1       2999     4785     3000     3002
+   1       4785     4787     4797     3002
+   1       4785     3000     3002     4797
+   1       2999      287     2993     3002
+   1       3020     2993      290     3021
+   1       4787     3002     3021      725
+   1       2999     3020     4787     3002
+   1       2999     3020     3002     2993
+   1       3020     4787     3002     3021
+   1       3020     2993     3021     3002
+   1       3000      685     3028     4797
+   1       3002     4797     3030      725
+   1       2994     3028      292     3030
+   1       3000     3002     3028     2994
+   1       3000     3002     4797     3028
+   1       3002     2994     3030     3028
+   1       3002     4797     3028     3030
+   1       2993      290     3021     3017
+   1       3002     3021      725     3030
+   1       2994     3017     3030      292
+   1       2993     3002     2994     3017
+   1       2993     3002     3017     3021
+   1       3002     2994     3017     3030
+   1       3002     3021     3030     3017
+   1       1885      120     1879     1887
+   1       4820     1887     3195      726
+   1       3193     1879      318     3195
+   1       1885     4820     1879     3193
+   1       1885     4820     1887     1879
+   1       4820     3193     3195     1879
+   1       4820     1887     1879     3195
+   1       4822      726     3199     1907
+   1       1903     1907     1899      122
+   1       3197     3199      319     1899
+   1       4822     1903     3199     3197
+   1       4822     1903     1907     3199
+   1       1903     3197     1899     3199
+   1       1903     1907     3199     1899
+   1       3170      318      922     3190
+   1       3171     3190      923      319
+   1        920      922       27      923
+   1       3170     3171      922      920
+   1       3170     3171     3190      922
+   1       3171      920      923      922
+   1       3171     3190      922      923
+   1       4819      693     3194     3177
+   1       3176     3177     3170      316
+   1       3193     3194      318     3170
+   1       4819     3176     3194     3193
+   1       4819     3176     3177     3194
+   1       3176     3193     3170     3194
+   1       3176     3177     3194     3170
+   1       4819      693     4822     3194
+   1       4820     4822      726     3195
+   1       3193     3194     3195      318
+   1       4819     4820     3193     3194
+   1       4819     4820     3194     4822
+   1       4820     3193     3194     3195
+   1       4820     4822     3195     3194
+   1       3177      316     3171     3170
+   1       3194     3170     3190      318
+   1       3197     3171      319     3190
+   1       3177     3194     3171     3197
+   1       3177     3194     3170     3171
+   1       3194     3197     3190     3171
+   1       3194     3170     3171     3190
+   1       4822      726     3195     3199
+   1       3194     3195      318     3190
+   1       3197     3199     3190      319
+   1       4822     3194     3197     3199
+   1       4822     3194     3199     3195
+   1       3194     3197     3199     3190
+   1       3194     3195     3190     3199
+   1       1707      105     1712     1708
+   1       4754     1708     4769      680
+   1       4756     1712      684     4769
+   1       1707     4754     1712     4756
+   1       1707     4754     1708     1712
+   1       4754     4756     4769     1712
+   1       4754     1708     1712     4769
+   1       4758      680     4772     1735
+   1       1734     1735     1739      107
+   1       4760     4772      692     1739
+   1       4758     1734     4772     4760
+   1       4758     1734     1735     4772
+   1       1734     4760     1739     4772
+   1       1734     1735     4772     1739
+   1       4765      684     1884     4789
+   1       4766     4789     1885      692
+   1       1883     1884      120     1885
+   1       4765     4766     1884     1883
+   1       4765     4766     4789     1884
+   1       4766     1883     1885     1884
+   1       4766     4789     1884     1885
+   1       4751      677     4759     4757
+   1       4753     4757     4765      679
+   1       4756     4759      684     4765
+   1       4751     4753     4759     4756
+   1       4751     4753     4757     4759
+   1       4753     4756     4765     4759
+   1       4753     4757     4759     4765
+   1       4751      677     4758     4759
+   1       4754     4758      680     4769
+   1       4756     4759     4769      684
+   1       4751     4754     4756     4759
+   1       4751     4754     4759     4758
+   1       4754     4756     4759     4769
+   1       4754     4758     4769     4759
+   1       4757      679     4766     4765
+   1       4759     4765     4789      684
+   1       4760     4766      692     4789
+   1       4757     4759     4766     4760
+   1       4757     4759     4765     4766
+   1       4759     4760     4789     4766
+   1       4759     4765     4766     4789
+   1       4758      680     4769     4772
+   1       4759     4769      684     4789
+   1       4760     4772     4789      692
+   1       4758     4759     4760     4772
+   1       4758     4759     4772     4769
+   1       4759     4760     4772     4789
+   1       4759     4769     4789     4772
+   1       1707      105     1711     1712
+   1       4755     1711      683     4784
+   1       4756     1712     4784      684
+   1       1707     4755     4756     1712
+   1       1707     4755     1712     1711
+   1       4755     4756     1712     4784
+   1       4755     1711     4784     1712
+   1       4762      683     1875     4786
+   1       1874     1875      119     1876
+   1       4764     4786     1876      724
+   1       4762     1874     4764     4786
+   1       4762     1874     4786     1875
+   1       1874     4764     4786     1876
+   1       1874     1875     1876     4786
+   1       4765      684     4791     1884
+   1       4767     4791      724     1886
+   1       1883     1884     1886      120
+   1       4765     4767     1883     1884
+   1       4765     4767     1884     4791
+   1       4767     1883     1884     1886
+   1       4767     4791     1886     1884
+   1       4752      678     4761     4763
+   1       4753     4761      679     4765
+   1       4756     4763     4765      684
+   1       4752     4753     4756     4763
+   1       4752     4753     4763     4761
+   1       4753     4756     4763     4765
+   1       4753     4761     4765     4763
+   1       4752      678     4763     4762
+   1       4755     4762     4784      683
+   1       4756     4763      684     4784
+   1       4752     4755     4763     4756
+   1       4752     4755     4762     4763
+   1       4755     4756     4784     4763
+   1       4755     4762     4763     4784
+   1       4761      679     4765     4767
+   1       4763     4765      684     4791
+   1       4764     4767     4791      724
+   1       4761     4763     4764     4767
+   1       4761     4763     4767     4765
+   1       4763     4764     4767     4791
+   1       4763     4765     4791     4767
+   1       4762      683     4786     4784
+   1       4763     4784     4791      684
+   1       4764     4786      724     4791
+   1       4762     4763     4786     4764
+   1       4762     4763     4784     4786
+   1       4763     4764     4791     4786
+   1       4763     4784     4786     4791
+   1       1735      107     1740     1739
+   1       4772     1739     4819      692
+   1       4773     1740      693     4819
+   1       1735     4772     1740     4773
+   1       1735     4772     1739     1740
+   1       4772     4773     4819     1740
+   1       4772     1739     1740     4819
+   1       4789      692     4820     1885
+   1       1884     1885     1887      120
+   1       4793     4820      726     1887
+   1       4789     1884     4820     4793
+   1       4789     1884     1885     4820
+   1       1884     4793     1887     4820
+   1       1884     1885     4820     1887
+   1       4794      693     1903     4822
+   1       4798     4822     1907      726
+   1       1902     1903      122     1907
+   1       4794     4798     1903     1902
+   1       4794     4798     4822     1903
+   1       4798     1902     1907     1903
+   1       4798     4822     1903     1907
+   1       4769      684     4790     4788
+   1       4770     4788     4794      685
+   1       4773     4790      693     4794
+   1       4769     4770     4790     4773
+   1       4769     4770     4788     4790
+   1       4770     4773     4794     4790
+   1       4770     4788     4790     4794
+   1       4769      684     4789     4790
+   1       4772     4789      692     4819
+   1       4773     4790     4819      693
+   1       4769     4772     4773     4790
+   1       4769     4772     4790     4789
+   1       4772     4773     4790     4819
+   1       4772     4789     4819     4790
+   1       4788      685     4798     4794
+   1       4790     4794     4822      693
+   1       4793     4798      726     4822
+   1       4788     4790     4798     4793
+   1       4788     4790     4794     4798
+   1       4790     4793     4822     4798
+   1       4790     4794     4798     4822
+   1       4789      692     4819     4820
+   1       4790     4819      693     4822
+   1       4793     4820     4822      726
+   1       4789     4790     4793     4820
+   1       4789     4790     4820     4819
+   1       4790     4793     4820     4822
+   1       4790     4819     4822     4820
+   1       1875      119     1876     1877
+   1       4786     1876      724     4908
+   1       4787     1877     4908      725
+   1       1875     4786     4787     1877
+   1       1875     4786     1877     1876
+   1       4786     4787     1877     4908
+   1       4786     1876     4908     1877
+   1       4791      724     1886     4909
+   1       1884     1886      120     1887
+   1       4793     4909     1887      726
+   1       4791     1884     4793     4909
+   1       4791     1884     4909     1886
+   1       1884     4793     4909     1887
+   1       1884     1886     1887     4909
+   1       4797      725     4910     1906
+   1       4798     4910      726     1907
+   1       1902     1906     1907      122
+   1       4797     4798     1902     1906
+   1       4797     4798     1906     4910
+   1       4798     1902     1906     1907
+   1       4798     4910     1907     1906
+   1       4784      684     4788     4792
+   1       4785     4788      685     4797
+   1       4787     4792     4797      725
+   1       4784     4785     4787     4792
+   1       4784     4785     4792     4788
+   1       4785     4787     4792     4797
+   1       4785     4788     4797     4792
+   1       4784      684     4792     4791
+   1       4786     4791     4908      724
+   1       4787     4792      725     4908
+   1       4784     4786     4792     4787
+   1       4784     4786     4791     4792
+   1       4786     4787     4908     4792
+   1       4786     4791     4792     4908
+   1       4788      685     4797     4798
+   1       4792     4797      725     4910
+   1       4793     4798     4910      726
+   1       4788     4792     4793     4798
+   1       4788     4792     4798     4797
+   1       4792     4793     4798     4910
+   1       4792     4797     4910     4798
+   1       4791      724     4909     4908
+   1       4792     4908     4910      725
+   1       4793     4909      726     4910
+   1       4791     4792     4909     4793
+   1       4791     4792     4908     4909
+   1       4792     4793     4910     4909
+   1       4792     4908     4909     4910
+   1        742        3      743      744
+   1       2001      743      139     2007
+   1       2002      744     2007      140
+   1        742     2001     2002      744
+   1        742     2001      744      743
+   1       2001     2002      744     2007
+   1       2001      743     2007      744
+   1       2008      139     1039     2009
+   1       1041     1039       41     1042
+   1       3504     2009     1042      391
+   1       2008     1041     3504     2009
+   1       2008     1041     2009     1039
+   1       1041     3504     2009     1042
+   1       1041     1039     1042     2009
+   1       2012      140     2013     1045
+   1       3510     2013      391     1049
+   1       1048     1045     1049       42
+   1       2012     3510     1048     1045
+   1       2012     3510     1045     2013
+   1       3510     1048     1045     1049
+   1       3510     2013     1049     1045
+   1       2005      385     3502     2011
+   1       2006     3502      386     2012
+   1       2002     2011     2012      140
+   1       2005     2006     2002     2011
+   1       2005     2006     2011     3502
+   1       2006     2002     2011     2012
+   1       2006     3502     2012     2011
+   1       2005      385     2011     2008
+   1       2001     2008     2007      139
+   1       2002     2011      140     2007
+   1       2005     2001     2011     2002
+   1       2005     2001     2008     2011
+   1       2001     2002     2007     2011
+   1       2001     2008     2011     2007
+   1       3502      386     2012     3510
+   1       2011     2012      140     2013
+   1       3504     3510     2013      391
+   1       3502     2011     3504     3510
+   1       3502     2011     3510     2012
+   1       2011     3504     3510     2013
+   1       2011     2012     2013     3510
+   1       2008      139     2009     2007
+   1       2011     2007     2013      140
+   1       3504     2009      391     2013
+   1       2008     2011     2009     3504
+   1       2008     2011     2007     2009
+   1       2011     3504     2013     2009
+   1       2011     2007     2009     2013
+   1       1043       41     1040     1044
+   1       2779     1040      254     2780
+   1       3537     1044     2780      393
+   1       1043     2779     3537     1044
+   1       1043     2779     1044     1040
+   1       2779     3537     1044     2780
+   1       2779     1040     2780     1044
+   1       2777      254      858     2778
+   1        860      858       19      862
+   1       2786     2778      862      258
+   1       2777      860     2786     2778
+   1       2777      860     2778      858
+   1        860     2786     2778      862
+   1        860      858      862     2778
+   1       3542      393     2799     1820
+   1       2800     2799      258     1818
+   1       1822     1820     1818      114
+   1       3542     2800     1822     1820
+   1       3542     2800     1820     2799
+   1       2800     1822     1820     1818
+   1       2800     2799     1818     1820
+   1       2787      256     2790     2788
+   1       3539     2790      592     3542
+   1       3537     2788     3542      393
+   1       2787     3539     3537     2788
+   1       2787     3539     2788     2790
+   1       3539     3537     2788     3542
+   1       3539     2790     3542     2788
+   1       2787      256     2788     2777
+   1       2779     2777     2780      254
+   1       3537     2788      393     2780
+   1       2787     2779     2788     3537
+   1       2787     2779     2777     2788
+   1       2779     3537     2780     2788
+   1       2779     2777     2788     2780
+   1       2790      592     3542     2800
+   1       2788     3542      393     2799
+   1       2786     2800     2799      258
+   1       2790     2788     2786     2800
+   1       2790     2788     2800     3542
+   1       2788     2786     2800     2799
+   1       2788     3542     2799     2800
+   1       2777      254     2778     2780
+   1       2788     2780     2799      393
+   1       2786     2778      258     2799
+   1       2777     2788     2778     2786
+   1       2777     2788     2780     2778
+   1       2788     2786     2799     2778
+   1       2788     2780     2778     2799
+   1       1052       42     1053     1046
+   1       3550     1053      397     2813
+   1       2812     1046     2813      260
+   1       1052     3550     2812     1046
+   1       1052     3550     1046     1053
+   1       3550     2812     1046     2813
+   1       3550     1053     2813     1046
+   1       3555      397     1821     2864
+   1       1823     1821      114     1819
+   1       2865     2864     1819      267
+   1       3555     1823     2865     2864
+   1       3555     1823     2864     1821
+   1       1823     2865     2864     1819
+   1       1823     1821     1819     2864
+   1       2809      260     2810      864
+   1       2837     2810      267      871
+   1        868      864      871       20
+   1       2809     2837      868      864
+   1       2809     2837      864     2810
+   1       2837      868      864      871
+   1       2837     2810      871      864
+   1       3553      595     2843     2814
+   1       2838     2843      264     2809
+   1       2812     2814     2809      260
+   1       3553     2838     2812     2814
+   1       3553     2838     2814     2843
+   1       2838     2812     2814     2809
+   1       2838     2843     2809     2814
+   1       3553      595     2814     3555
+   1       3550     3555     2813      397
+   1       2812     2814      260     2813
+   1       3553     3550     2814     2812
+   1       3553     3550     3555     2814
+   1       3550     2812     2813     2814
+   1       3550     3555     2814     2813
+   1       2843      264     2809     2837
+   1       2814     2809      260     2810
+   1       2865     2837     2810      267
+   1       2843     2814     2865     2837
+   1       2843     2814     2837     2809
+   1       2814     2865     2837     2810
+   1       2814     2809     2810     2837
+   1       3555      397     2864     2813
+   1       2814     2813     2810      260
+   1       2865     2864      267     2810
+   1       3555     2814     2864     2865
+   1       3555     2814     2813     2864
+   1       2814     2865     2810     2864
+   1       2814     2813     2864     2810
+   1       1458       85     1462     1460
+   1       3527     1462      589     3547
+   1       3526     1460     3547      395
+   1       1458     3527     3526     1460
+   1       1458     3527     1460     1462
+   1       3527     3526     1460     3547
+   1       3527     1462     3547     1460
+   1       3532      589     1476     3552
+   1       1468     1476       86     1469
+   1       3529     3552     1469      396
+   1       3532     1468     3529     3552
+   1       3532     1468     3552     1476
+   1       1468     3529     3552     1469
+   1       1468     1476     1469     3552
+   1       3512      395     3545     1051
+   1       3513     3545      396     1052
+   1       1048     1051     1052       42
+   1       3512     3513     1048     1051
+   1       3512     3513     1051     3545
+   1       3513     1048     1051     1052
+   1       3513     3545     1052     1051
+   1       3524      390     3509     3528
+   1       3508     3509      386     3512
+   1       3526     3528     3512      395
+   1       3524     3508     3526     3528
+   1       3524     3508     3528     3509
+   1       3508     3526     3528     3512
+   1       3508     3509     3512     3528
+   1       3524      390     3528     3532
+   1       3527     3532     3547      589
+   1       3526     3528      395     3547
+   1       3524     3527     3528     3526
+   1       3524     3527     3532     3528
+   1       3527     3526     3547     3528
+   1       3527     3532     3528     3547
+   1       3509      386     3512     3513
+   1       3528     3512      395     3545
+   1       3529     3513     3545      396
+   1       3509     3528     3529     3513
+   1       3509     3528     3513     3512
+   1       3528     3529     3513     3545
+   1       3528     3512     3545     3513
+   1       3532      589     3552     3547
+   1       3528     3547     3545      395
+   1       3529     3552      396     3545
+   1       3532     3528     3552     3529
+   1       3532     3528     3547     3552
+   1       3528     3529     3545     3552
+   1       3528     3547     3552     3545
+   1       1458       85     1460     1459
+   1       3525     1459     3538      392
+   1       3526     1460      395     3538
+   1       1458     3525     1460     3526
+   1       1458     3525     1459     1460
+   1       3525     3526     3538     1460
+   1       3525     1459     1460     3538
+   1       3505      392     3533     1043
+   1       1041     1043     1042       41
+   1       3504     3533      391     1042
+   1       3505     1041     3533     3504
+   1       3505     1041     1043     3533
+   1       1041     3504     1042     3533
+   1       1041     1043     3533     1042
+   1       3512      395     1051     3535
+   1       3510     3535     1049      391
+   1       1048     1051       42     1049
+   1       3512     3510     1051     1048
+   1       3512     3510     3535     1051
+   1       3510     1048     1049     1051
+   1       3510     3535     1051     1049
+   1       3503      385     3506     3502
+   1       3508     3502     3512      386
+   1       3526     3506      395     3512
+   1       3503     3508     3506     3526
+   1       3503     3508     3502     3506
+   1       3508     3526     3512     3506
+   1       3508     3502     3506     3512
+   1       3503      385     3505     3506
+   1       3525     3505      392     3538
+   1       3526     3506     3538      395
+   1       3503     3525     3526     3506
+   1       3503     3525     3506     3505
+   1       3525     3526     3506     3538
+   1       3525     3505     3538     3506
+   1       3502      386     3510     3512
+   1       3506     3512     3535      395
+   1       3504     3510      391     3535
+   1       3502     3506     3510     3504
+   1       3502     3506     3512     3510
+   1       3506     3504     3535     3510
+   1       3506     3512     3510     3535
+   1       3505      392     3538     3533
+   1       3506     3538      395     3535
+   1       3504     3533     3535      391
+   1       3505     3506     3504     3533
+   1       3505     3506     3533     3538
+   1       3506     3504     3533     3535
+   1       3506     3538     3535     3533
+   1       1476       86     1469     1479
+   1       3552     1469      396     3553
+   1       4382     1479     3553      595
+   1       1476     3552     4382     1479
+   1       1476     3552     1479     1469
+   1       3552     4382     1479     3553
+   1       3552     1469     3553     1479
+   1       3545      396     1052     3550
+   1       1051     1052       42     1053
+   1       3546     3550     1053      397
+   1       3545     1051     3546     3550
+   1       3545     1051     3550     1052
+   1       1051     3546     3550     1053
+   1       1051     1052     1053     3550
+   1       4393      595     3555     1823
+   1       3554     3555      397     1821
+   1       1822     1823     1821      114
+   1       4393     3554     1822     1823
+   1       4393     3554     1823     3555
+   1       3554     1822     1823     1821
+   1       3554     3555     1821     1823
+   1       3547      395     3548     3549
+   1       4380     3548      592     4393
+   1       4382     3549     4393      595
+   1       3547     4380     4382     3549
+   1       3547     4380     3549     3548
+   1       4380     4382     3549     4393
+   1       4380     3548     4393     3549
+   1       3547      395     3549     3545
+   1       3552     3545     3553      396
+   1       4382     3549      595     3553
+   1       3547     3552     3549     4382
+   1       3547     3552     3545     3549
+   1       3552     4382     3553     3549
+   1       3552     3545     3549     3553
+   1       3548      592     4393     3554
+   1       3549     4393      595     3555
+   1       3546     3554     3555      397
+   1       3548     3549     3546     3554
+   1       3548     3549     3554     4393
+   1       3549     3546     3554     3555
+   1       3549     4393     3555     3554
+   1       3545      396     3550     3553
+   1       3549     3553     3555      595
+   1       3546     3550      397     3555
+   1       3545     3549     3550     3546
+   1       3545     3549     3553     3550
+   1       3549     3546     3555     3550
+   1       3549     3553     3550     3555
+   1       1043       41     1044     1042
+   1       3533     1042     3534      391
+   1       3537     1044      393     3534
+   1       1043     3533     1044     3537
+   1       1043     3533     1042     1044
+   1       3533     3537     3534     1044
+   1       3533     1042     1044     3534
+   1       3535      391     3536     1049
+   1       1051     1049     1053       42
+   1       3546     3536      397     1053
+   1       3535     1051     3536     3546
+   1       3535     1051     1049     3536
+   1       1051     3546     1053     3536
+   1       1051     1049     3536     1053
+   1       3542      393     1820     3541
+   1       3554     3541     1821      397
+   1       1822     1820      114     1821
+   1       3542     3554     1820     1822
+   1       3542     3554     3541     1820
+   1       3554     1822     1821     1820
+   1       3554     3541     1820     1821
+   1       3538      395     3540     3548
+   1       3539     3548     3542      592
+   1       3537     3540      393     3542
+   1       3538     3539     3540     3537
+   1       3538     3539     3548     3540
+   1       3539     3537     3542     3540
+   1       3539     3548     3540     3542
+   1       3538      395     3535     3540
+   1       3533     3535      391     3534
+   1       3537     3540     3534      393
+   1       3538     3533     3537     3540
+   1       3538     3533     3540     3535
+   1       3533     3537     3540     3534
+   1       3533     3535     3534     3540
+   1       3548      592     3554     3542
+   1       3540     3542     3541      393
+   1       3546     3554      397     3541
+   1       3548     3540     3554     3546
+   1       3548     3540     3542     3554
+   1       3540     3546     3541     3554
+   1       3540     3542     3554     3541
+   1       3535      391     3534     3536
+   1       3540     3534      393     3541
+   1       3546     3536     3541      397
+   1       3535     3540     3546     3536
+   1       3535     3540     3536     3534
+   1       3540     3546     3536     3541
+   1       3540     3534     3541     3536
+   1        861       19      859      863
+   1       2781      859      255     2782
+   1       2793      863     2782      259
+   1        861     2781     2793      863
+   1        861     2781      863      859
+   1       2781     2793      863     2782
+   1       2781      859     2782      863
+   1       2783      255     1105     2784
+   1       1108     1105       49     1109
+   1       3705     2784     1109      431
+   1       2783     1108     3705     2784
+   1       2783     1108     2784     1105
+   1       1108     3705     2784     1109
+   1       1108     1105     1109     2784
+   1       2806      259     2804     1828
+   1       3708     2804      431     1831
+   1       1833     1828     1831      115
+   1       2806     3708     1833     1828
+   1       2806     3708     1828     2804
+   1       3708     1833     1828     1831
+   1       3708     2804     1831     1828
+   1       2794      430     3706     2803
+   1       2797     3706      642     2806
+   1       2793     2803     2806      259
+   1       2794     2797     2793     2803
+   1       2794     2797     2803     3706
+   1       2797     2793     2803     2806
+   1       2797     3706     2806     2803
+   1       2794      430     2803     2783
+   1       2781     2783     2782      255
+   1       2793     2803      259     2782
+   1       2794     2781     2803     2793
+   1       2794     2781     2783     2803
+   1       2781     2793     2782     2803
+   1       2781     2783     2803     2782
+   1       3706      642     2806     3708
+   1       2803     2806      259     2804
+   1       3705     3708     2804      431
+   1       3706     2803     3705     3708
+   1       3706     2803     3708     2806
+   1       2803     3705     3708     2804
+   1       2803     2806     2804     3708
+   1       2783      255     2784     2782
+   1       2803     2782     2804      259
+   1       3705     2784      431     2804
+   1       2783     2803     2784     3705
+   1       2783     2803     2782     2784
+   1       2803     3705     2804     2784
+   1       2803     2782     2784     2804
+   1       1106       49     1104     1107
+   1       2046     1104      147     2047
+   1       3664     1107     2047      429
+   1       1106     2046     3664     1107
+   1       1106     2046     1107     1104
+   1       2046     3664     1107     2047
+   1       2046     1104     2047     1107
+   1       2038      147      751     2045
+   1        750      751        5      752
+   1       2039     2045      752      148
+   1       2038      750     2039     2045
+   1       2038      750     2045      751
+   1        750     2039     2045      752
+   1        750      751      752     2045
+   1       3671      429     2051     1113
+   1       2049     2051      148     1110
+   1       1112     1113     1110       50
+   1       3671     2049     1112     1113
+   1       3671     2049     1113     2051
+   1       2049     1112     1113     1110
+   1       2049     2051     1110     1113
+   1       2041      146     2042     2044
+   1       3661     2042      423     3671
+   1       3664     2044     3671      429
+   1       2041     3661     3664     2044
+   1       2041     3661     2044     2042
+   1       3661     3664     2044     3671
+   1       3661     2042     3671     2044
+   1       2041      146     2044     2038
+   1       2046     2038     2047      147
+   1       3664     2044      429     2047
+   1       2041     2046     2044     3664
+   1       2041     2046     2038     2044
+   1       2046     3664     2047     2044
+   1       2046     2038     2044     2047
+   1       2042      423     3671     2049
+   1       2044     3671      429     2051
+   1       2039     2049     2051      148
+   1       2042     2044     2039     2049
+   1       2042     2044     2049     3671
+   1       2044     2039     2049     2051
+   1       2044     3671     2051     2049
+   1       2038      147     2045     2047
+   1       2044     2047     2051      429
+   1       2039     2045      148     2051
+   1       2038     2044     2045     2039
+   1       2038     2044     2047     2045
+   1       2044     2039     2051     2045
+   1       2044     2047     2045     2051
+   1       1835      115     1832     1829
+   1       3725     1832      435     3078
+   1       3079     1829     3078      298
+   1       1835     3725     3079     1829
+   1       1835     3725     1829     1832
+   1       3725     3079     1829     3078
+   1       3725     1832     3078     1829
+   1       3714      435     1117     3035
+   1       1115     1117       50     1111
+   1       3034     3035     1111      293
+   1       3714     1115     3034     3035
+   1       3714     1115     3035     1117
+   1       1115     3034     3035     1111
+   1       1115     1117     1111     3035
+   1       3047      298     3032      902
+   1       3031     3032      293      897
+   1        899      902      897       24
+   1       3047     3031      899      902
+   1       3047     3031      902     3032
+   1       3031      899      902      897
+   1       3031     3032      897      902
+   1       3717      433     3050     3077
+   1       3053     3050      295     3047
+   1       3079     3077     3047      298
+   1       3717     3053     3079     3077
+   1       3717     3053     3077     3050
+   1       3053     3079     3077     3047
+   1       3053     3050     3047     3077
+   1       3717      433     3077     3714
+   1       3725     3714     3078      435
+   1       3079     3077      298     3078
+   1       3717     3725     3077     3079
+   1       3717     3725     3714     3077
+   1       3725     3079     3078     3077
+   1       3725     3714     3077     3078
+   1       3050      295     3047     3031
+   1       3077     3047      298     3032
+   1       3034     3031     3032      293
+   1       3050     3077     3034     3031
+   1       3050     3077     3031     3047
+   1       3077     3034     3031     3032
+   1       3077     3047     3032     3031
+   1       3714      435     3035     3078
+   1       3077     3078     3032      298
+   1       3034     3035      293     3032
+   1       3714     3077     3035     3034
+   1       3714     3077     3078     3035
+   1       3077     3034     3032     3035
+   1       3077     3078     3035     3032
+   1       1100       48     1101     1103
+   1       3680     1101      426     3686
+   1       3681     1103     3686      428
+   1       1100     3680     3681     1103
+   1       1100     3680     1103     1101
+   1       3680     3681     1103     3686
+   1       3680     1101     3686     1103
+   1       3689      426     1606     3691
+   1       1610     1606       97     1615
+   1       4612     3691     1615      652
+   1       3689     1610     4612     3691
+   1       3689     1610     3691     1606
+   1       1610     4612     3691     1615
+   1       1610     1606     1615     3691
+   1       3701      428     3702     1830
+   1       4618     3702      652     1835
+   1       1833     1830     1835      115
+   1       3701     4618     1833     1830
+   1       3701     4618     1830     3702
+   1       4618     1833     1830     1835
+   1       4618     3702     1835     1830
+   1       3683      640     4609     3700
+   1       3684     4609      642     3701
+   1       3681     3700     3701      428
+   1       3683     3684     3681     3700
+   1       3683     3684     3700     4609
+   1       3684     3681     3700     3701
+   1       3684     4609     3701     3700
+   1       3683      640     3700     3689
+   1       3680     3689     3686      426
+   1       3681     3700      428     3686
+   1       3683     3680     3700     3681
+   1       3683     3680     3689     3700
+   1       3680     3681     3686     3700
+   1       3680     3689     3700     3686
+   1       4609      642     3701     4618
+   1       3700     3701      428     3702
+   1       4612     4618     3702      652
+   1       4609     3700     4612     4618
+   1       4609     3700     4618     3701
+   1       3700     4612     4618     3702
+   1       3700     3701     3702     4618
+   1       3689      426     3691     3686
+   1       3700     3686     3702      428
+   1       4612     3691      652     3702
+   1       3689     3700     3691     4612
+   1       3689     3700     3686     3691
+   1       3700     4612     3702     3691
+   1       3700     3686     3691     3702
+   1       1100       48     1103     1097
+   1       3662     1097     3663      422
+   1       3681     1103      428     3663
+   1       1100     3662     1103     3681
+   1       1100     3662     1097     1103
+   1       3662     3681     3663     1103
+   1       3662     1097     1103     3663
+   1       3665      422     3666     1106
+   1       1108     1106     1109       49
+   1       3705     3666      431     1109
+   1       3665     1108     3666     3705
+   1       3665     1108     1106     3666
+   1       1108     3705     1109     3666
+   1       1108     1106     3666     1109
+   1       3701      428     1830     3697
+   1       3708     3697     1831      431
+   1       1833     1830      115     1831
+   1       3701     3708     1830     1833
+   1       3701     3708     3697     1830
+   1       3708     1833     1831     1830
+   1       3708     3697     1830     1831
+   1       3682      430     3696     3706
+   1       3684     3706     3701      642
+   1       3681     3696      428     3701
+   1       3682     3684     3696     3681
+   1       3682     3684     3706     3696
+   1       3684     3681     3701     3696
+   1       3684     3706     3696     3701
+   1       3682      430     3665     3696
+   1       3662     3665      422     3663
+   1       3681     3696     3663      428
+   1       3682     3662     3681     3696
+   1       3682     3662     3696     3665
+   1       3662     3681     3696     3663
+   1       3662     3665     3663     3696
+   1       3706      642     3708     3701
+   1       3696     3701     3697      428
+   1       3705     3708      431     3697
+   1       3706     3696     3708     3705
+   1       3706     3696     3701     3708
+   1       3696     3705     3697     3708
+   1       3696     3701     3708     3697
+   1       3665      422     3663     3666
+   1       3696     3663      428     3697
+   1       3705     3666     3697      431
+   1       3665     3696     3705     3666
+   1       3665     3696     3666     3663
+   1       3696     3705     3666     3697
+   1       3696     3663     3697     3666
+   1       1606       97     1615     1607
+   1       3691     1615      652     3717
+   1       3687     1607     3717      433
+   1       1606     3691     3687     1607
+   1       1606     3691     1607     1615
+   1       3691     3687     1607     3717
+   1       3691     1615     3717     1607
+   1       3702      652     1835     3725
+   1       1830     1835      115     1832
+   1       3699     3725     1832      435
+   1       3702     1830     3699     3725
+   1       3702     1830     3725     1835
+   1       1830     3699     3725     1832
+   1       1830     1835     1832     3725
+   1       3673      433     3714     1115
+   1       3675     3714      435     1117
+   1       1112     1115     1117       50
+   1       3673     3675     1112     1115
+   1       3673     3675     1115     3714
+   1       3675     1112     1115     1117
+   1       3675     3714     1117     1115
+   1       3686      428     3670     3698
+   1       3668     3670      423     3673
+   1       3687     3698     3673      433
+   1       3686     3668     3687     3698
+   1       3686     3668     3698     3670
+   1       3668     3687     3698     3673
+   1       3668     3670     3673     3698
+   1       3686      428     3698     3702
+   1       3691     3702     3717      652
+   1       3687     3698      433     3717
+   1       3686     3691     3698     3687
+   1       3686     3691     3702     3698
+   1       3691     3687     3717     3698
+   1       3691     3702     3698     3717
+   1       3670      423     3673     3675
+   1       3698     3673      433     3714
+   1       3699     3675     3714      435
+   1       3670     3698     3699     3675
+   1       3670     3698     3675     3673
+   1       3698     3699     3675     3714
+   1       3698     3673     3714     3675
+   1       3702      652     3725     3717
+   1       3698     3717     3714      433
+   1       3699     3725      435     3714
+   1       3702     3698     3725     3699
+   1       3702     3698     3717     3725
+   1       3698     3699     3714     3725
+   1       3698     3717     3725     3714
+   1       1106       49     1107     1109
+   1       3666     1109     3703      431
+   1       3664     1107      429     3703
+   1       1106     3666     1107     3664
+   1       1106     3666     1109     1107
+   1       3666     3664     3703     1107
+   1       3666     1109     1107     3703
+   1       3697      431     3707     1831
+   1       1830     1831     1832      115
+   1       3699     3707      435     1832
+   1       3697     1830     3707     3699
+   1       3697     1830     1831     3707
+   1       1830     3699     1832     3707
+   1       1830     1831     3707     1832
+   1       3671      429     1113     3704
+   1       3675     3704     1117      435
+   1       1112     1113       50     1117
+   1       3671     3675     1113     1112
+   1       3671     3675     3704     1113
+   1       3675     1112     1117     1113
+   1       3675     3704     1113     1117
+   1       3663      428     3695     3670
+   1       3661     3670     3671      423
+   1       3664     3695      429     3671
+   1       3663     3661     3695     3664
+   1       3663     3661     3670     3695
+   1       3661     3664     3671     3695
+   1       3661     3670     3695     3671
+   1       3663      428     3697     3695
+   1       3666     3697      431     3703
+   1       3664     3695     3703      429
+   1       3663     3666     3664     3695
+   1       3663     3666     3695     3697
+   1       3666     3664     3695     3703
+   1       3666     3697     3703     3695
+   1       3670      423     3675     3671
+   1       3695     3671     3704      429
+   1       3699     3675      435     3704
+   1       3670     3695     3675     3699
+   1       3670     3695     3671     3675
+   1       3695     3699     3704     3675
+   1       3695     3671     3675     3704
+   1       3697      431     3703     3707
+   1       3695     3703      429     3704
+   1       3699     3707     3704      435
+   1       3697     3695     3699     3707
+   1       3697     3695     3707     3703
+   1       3695     3699     3707     3704
+   1       3695     3703     3704     3707
+   1        870       20      872      865
+   1       2855      872      268     2817
+   1       2816      865     2817      261
+   1        870     2855     2816      865
+   1        870     2855      865      872
+   1       2855     2816      865     2817
+   1       2855      872     2817      865
+   1       2870      268     1838     2868
+   1       1844     1838      116     1840
+   1       3902     2868     1840      471
+   1       2870     1844     3902     2868
+   1       2870     1844     2868     1838
+   1       1844     3902     2868     1840
+   1       1844     1838     1840     2868
+   1       2819      261     2820     1168
+   1       3891     2820      471     1175
+   1       1173     1168     1175       57
+   1       2819     3891     1173     1168
+   1       2819     3891     1168     2820
+   1       3891     1173     1168     1175
+   1       3891     2820     1175     1168
+   1       2862      675     3894     2821
+   1       2857     3894      469     2819
+   1       2816     2821     2819      261
+   1       2862     2857     2816     2821
+   1       2862     2857     2821     3894
+   1       2857     2816     2821     2819
+   1       2857     3894     2819     2821
+   1       2862      675     2821     2870
+   1       2855     2870     2817      268
+   1       2816     2821      261     2817
+   1       2862     2855     2821     2816
+   1       2862     2855     2870     2821
+   1       2855     2816     2817     2821
+   1       2855     2870     2821     2817
+   1       3894      469     2819     3891
+   1       2821     2819      261     2820
+   1       3902     3891     2820      471
+   1       3894     2821     3902     3891
+   1       3894     2821     3891     2819
+   1       2821     3902     3891     2820
+   1       2821     2819     2820     3891
+   1       2870      268     2868     2817
+   1       2821     2817     2820      261
+   1       3902     2868      471     2820
+   1       2870     2821     2868     3902
+   1       2870     2821     2817     2868
+   1       2821     3902     2820     2868
+   1       2821     2817     2868     2820
+   1       1845      116     1839     1841
+   1       3084     1839      299     3082
+   1       3929     1841     3082      479
+   1       1845     3084     3929     1841
+   1       1845     3084     1841     1839
+   1       3084     3929     1841     3082
+   1       3084     1839     3082     1841
+   1       3057      299      903     3039
+   1        900      903       24      898
+   1       3038     3039      898      294
+   1       3057      900     3038     3039
+   1       3057      900     3039      903
+   1        900     3038     3039      898
+   1        900      903      898     3039
+   1       3918      479     3042     1191
+   1       3041     3042      294     1185
+   1       1189     1191     1185       59
+   1       3918     3041     1189     1191
+   1       3918     3041     1191     3042
+   1       3041     1189     1191     1185
+   1       3041     3042     1185     1191
+   1       3064      296     3059     3060
+   1       3921     3059      477     3918
+   1       3929     3060     3918      479
+   1       3064     3921     3929     3060
+   1       3064     3921     3060     3059
+   1       3921     3929     3060     3918
+   1       3921     3059     3918     3060
+   1       3064      296     3060     3057
+   1       3084     3057     3082      299
+   1       3929     3060      479     3082
+   1       3064     3084     3060     3929
+   1       3064     3084     3057     3060
+   1       3084     3929     3082     3060
+   1       3084     3057     3060     3082
+   1       3059      477     3918     3041
+   1       3060     3918      479     3042
+   1       3038     3041     3042      294
+   1       3059     3060     3038     3041
+   1       3059     3060     3041     3918
+   1       3060     3038     3041     3042
+   1       3060     3918     3042     3041
+   1       3057      299     3039     3082
+   1       3060     3082     3042      479
+   1       3038     3039      294     3042
+   1       3057     3060     3039     3038
+   1       3057     3060     3082     3039
+   1       3060     3038     3042     3039
+   1       3060     3082     3039     3042
+   1       1170       57     1171     1167
+   1       3814     1171      467     2087
+   1       2085     1167     2087      155
+   1       1170     3814     2085     1167
+   1       1170     3814     1167     1171
+   1       3814     2085     1167     2087
+   1       3814     1171     2087     1167
+   1       3828      467     1187     2095
+   1       1186     1187       59     1184
+   1       2093     2095     1184      157
+   1       3828     1186     2093     2095
+   1       3828     1186     2095     1187
+   1       1186     2093     2095     1184
+   1       1186     1187     1184     2095
+   1       2072      155     2083      759
+   1       2074     2083      157      761
+   1        758      759      761        7
+   1       2072     2074      758      759
+   1       2072     2074      759     2083
+   1       2074      758      759      761
+   1       2074     2083      761      759
+   1       3811      458     2080     2086
+   1       2078     2080      154     2072
+   1       2085     2086     2072      155
+   1       3811     2078     2085     2086
+   1       3811     2078     2086     2080
+   1       2078     2085     2086     2072
+   1       2078     2080     2072     2086
+   1       3811      458     2086     3828
+   1       3814     3828     2087      467
+   1       2085     2086      155     2087
+   1       3811     3814     2086     2085
+   1       3811     3814     3828     2086
+   1       3814     2085     2087     2086
+   1       3814     3828     2086     2087
+   1       2080      154     2072     2074
+   1       2086     2072      155     2083
+   1       2093     2074     2083      157
+   1       2080     2086     2093     2074
+   1       2080     2086     2074     2072
+   1       2086     2093     2074     2083
+   1       2086     2072     2083     2074
+   1       3828      467     2095     2087
+   1       2086     2087     2083      155
+   1       2093     2095      157     2083
+   1       3828     2086     2095     2093
+   1       3828     2086     2087     2095
+   1       2086     2093     2083     2095
+   1       2086     2087     2095     2083
+   1       1723      106     1716     1717
+   1       3868     1716      464     3865
+   1       3898     1717     3865      470
+   1       1723     3868     3898     1717
+   1       1723     3868     1717     1716
+   1       3868     3898     1717     3865
+   1       3868     1716     3865     1717
+   1       3852      464     1164     3813
+   1       1162     1164       56     1156
+   1       3812     3813     1156      456
+   1       3852     1162     3812     3813
+   1       3852     1162     3813     1164
+   1       1162     3812     3813     1156
+   1       1162     1164     1156     3813
+   1       3890      470     3816     1174
+   1       3815     3816      456     1170
+   1       1173     1174     1170       57
+   1       3890     3815     1173     1174
+   1       3890     3815     1174     3816
+   1       3815     1173     1174     1170
+   1       3815     3816     1170     1174
+   1       3856      462     3853     3854
+   1       3893     3853      469     3890
+   1       3898     3854     3890      470
+   1       3856     3893     3898     3854
+   1       3856     3893     3854     3853
+   1       3893     3898     3854     3890
+   1       3893     3853     3890     3854
+   1       3856      462     3854     3852
+   1       3868     3852     3865      464
+   1       3898     3854      470     3865
+   1       3856     3868     3854     3898
+   1       3856     3868     3852     3854
+   1       3868     3898     3865     3854
+   1       3868     3852     3854     3865
+   1       3853      469     3890     3815
+   1       3854     3890      470     3816
+   1       3812     3815     3816      456
+   1       3853     3854     3812     3815
+   1       3853     3854     3815     3890
+   1       3854     3812     3815     3816
+   1       3854     3890     3816     3815
+   1       3852      464     3813     3865
+   1       3854     3865     3816      470
+   1       3812     3813      456     3816
+   1       3852     3854     3813     3812
+   1       3852     3854     3865     3813
+   1       3854     3812     3816     3813
+   1       3854     3865     3813     3816
+   1       1723      106     1717     1726
+   1       4749     1726     3900      688
+   1       3898     1717      470     3900
+   1       1723     4749     1717     3898
+   1       1723     4749     1726     1717
+   1       4749     3898     3900     1717
+   1       4749     1726     1717     3900
+   1       4750      688     3903     1845
+   1       1844     1845     1840      116
+   1       3902     3903      471     1840
+   1       4750     1844     3903     3902
+   1       4750     1844     1845     3903
+   1       1844     3902     1840     3903
+   1       1844     1845     3903     1840
+   1       3890      470     1174     3895
+   1       3891     3895     1175      471
+   1       1173     1174       57     1175
+   1       3890     3891     1174     1173
+   1       3890     3891     3895     1174
+   1       3891     1173     1175     1174
+   1       3891     3895     1174     1175
+   1       4748      675     3899     3894
+   1       3893     3894     3890      469
+   1       3898     3899      470     3890
+   1       4748     3893     3899     3898
+   1       4748     3893     3894     3899
+   1       3893     3898     3890     3899
+   1       3893     3894     3899     3890
+   1       4748      675     4750     3899
+   1       4749     4750      688     3900
+   1       3898     3899     3900      470
+   1       4748     4749     3898     3899
+   1       4748     4749     3899     4750
+   1       4749     3898     3899     3900
+   1       4749     4750     3900     3899
+   1       3894      469     3891     3890
+   1       3899     3890     3895      470
+   1       3902     3891      471     3895
+   1       3894     3899     3891     3902
+   1       3894     3899     3890     3891
+   1       3899     3902     3895     3891
+   1       3899     3890     3891     3895
+   1       4750      688     3900     3903
+   1       3899     3900      470     3895
+   1       3902     3903     3895      471
+   1       4750     3899     3902     3903
+   1       4750     3899     3903     3900
+   1       3899     3902     3903     3895
+   1       3899     3900     3895     3903
+   1       1164       56     1156     1158
+   1       3813     1156      456     3811
+   1       3826     1158     3811      458
+   1       1164     3813     3826     1158
+   1       1164     3813     1158     1156
+   1       3813     3826     1158     3811
+   1       3813     1156     3811     1158
+   1       3816      456     1170     3814
+   1       1174     1170       57     1171
+   1       3884     3814     1171      467
+   1       3816     1174     3884     3814
+   1       3816     1174     3814     1170
+   1       1174     3884     3814     1171
+   1       1174     1170     1171     3814
+   1       3831      458     3828     1186
+   1       3886     3828      467     1187
+   1       1189     1186     1187       59
+   1       3831     3886     1189     1186
+   1       3831     3886     1186     3828
+   1       3886     1189     1186     1187
+   1       3886     3828     1187     1186
+   1       3865      470     3896     3829
+   1       3866     3896      477     3831
+   1       3826     3829     3831      458
+   1       3865     3866     3826     3829
+   1       3865     3866     3829     3896
+   1       3866     3826     3829     3831
+   1       3866     3896     3831     3829
+   1       3865      470     3829     3816
+   1       3813     3816     3811      456
+   1       3826     3829      458     3811
+   1       3865     3813     3829     3826
+   1       3865     3813     3816     3829
+   1       3813     3826     3811     3829
+   1       3813     3816     3829     3811
+   1       3896      477     3831     3886
+   1       3829     3831      458     3828
+   1       3884     3886     3828      467
+   1       3896     3829     3884     3886
+   1       3896     3829     3886     3831
+   1       3829     3884     3886     3828
+   1       3829     3831     3828     3886
+   1       3816      456     3814     3811
+   1       3829     3811     3828      458
+   1       3884     3814      467     3828
+   1       3816     3829     3814     3884
+   1       3816     3829     3811     3814
+   1       3829     3884     3828     3814
+   1       3829     3811     3814     3828
+   1       1845      116     1841     1840
+   1       3903     1840     3901      471
+   1       3929     1841      479     3901
+   1       1845     3903     1841     3929
+   1       1845     3903     1840     1841
+   1       3903     3929     3901     1841
+   1       3903     1840     1841     3901
+   1       3895      471     3885     1175
+   1       1174     1175     1171       57
+   1       3884     3885      467     1171
+   1       3895     1174     3885     3884
+   1       3895     1174     1175     3885
+   1       1174     3884     1171     3885
+   1       1174     1175     3885     1171
+   1       3918      479     1191     3887
+   1       3886     3887     1187      467
+   1       1189     1191       59     1187
+   1       3918     3886     1191     1189
+   1       3918     3886     3887     1191
+   1       3886     1189     1187     1191
+   1       3886     3887     1191     1187
+   1       3900      470     3897     3896
+   1       3921     3896     3918      477
+   1       3929     3897      479     3918
+   1       3900     3921     3897     3929
+   1       3900     3921     3896     3897
+   1       3921     3929     3918     3897
+   1       3921     3896     3897     3918
+   1       3900      470     3895     3897
+   1       3903     3895      471     3901
+   1       3929     3897     3901      479
+   1       3900     3903     3929     3897
+   1       3900     3903     3897     3895
+   1       3903     3929     3897     3901
+   1       3903     3895     3901     3897
+   1       3896      477     3886     3918
+   1       3897     3918     3887      479
+   1       3884     3886      467     3887
+   1       3896     3897     3886     3884
+   1       3896     3897     3918     3886
+   1       3897     3884     3887     3886
+   1       3897     3918     3886     3887
+   1       3895      471     3901     3885
+   1       3897     3901      479     3887
+   1       3884     3885     3887      467
+   1       3895     3897     3884     3885
+   1       3895     3897     3885     3901
+   1       3897     3884     3885     3887
+   1       3897     3901     3887     3885
+   1        819       15      820      823
+   1       2467      820      216     2475
+   1       2469      823     2475      219
+   1        819     2467     2469      823
+   1        819     2467      823      820
+   1       2467     2469      823     2475
+   1       2467      820     2475      823
+   1       2479      216     1556     2481
+   1       1561     1556       93     1564
+   1       4352     2481     1564      628
+   1       2479     1561     4352     2481
+   1       2479     1561     2481     1556
+   1       1561     4352     2481     1564
+   1       1561     1556     1564     2481
+   1       2499      219     2500     1590
+   1       4360     2500      628     1596
+   1       1592     1590     1596       96
+   1       2499     4360     1592     1590
+   1       2499     4360     1590     2500
+   1       4360     1592     1590     1596
+   1       4360     2500     1596     1590
+   1       2471      582     4349     2497
+   1       2473     4349      584     2499
+   1       2469     2497     2499      219
+   1       2471     2473     2469     2497
+   1       2471     2473     2497     4349
+   1       2473     2469     2497     2499
+   1       2473     4349     2499     2497
+   1       2471      582     2497     2479
+   1       2467     2479     2475      216
+   1       2469     2497      219     2475
+   1       2471     2467     2497     2469
+   1       2471     2467     2479     2497
+   1       2467     2469     2475     2497
+   1       2467     2479     2497     2475
+   1       4349      584     2499     4360
+   1       2497     2499      219     2500
+   1       4352     4360     2500      628
+   1       4349     2497     4352     4360
+   1       4349     2497     4360     2499
+   1       2497     4352     4360     2500
+   1       2497     2499     2500     4360
+   1       2479      216     2481     2475
+   1       2497     2475     2500      219
+   1       4352     2481      628     2500
+   1       2479     2497     2481     4352
+   1       2479     2497     2475     2481
+   1       2497     4352     2500     2481
+   1       2497     2475     2481     2500
+   1       1562       93     1557     1567
+   1       2626     1557      235     2628
+   1       4369     1567     2628      631
+   1       1562     2626     4369     1567
+   1       1562     2626     1567     1557
+   1       2626     4369     1567     2628
+   1       2626     1557     2628     1567
+   1       2603      235      839     2622
+   1        837      839       17      841
+   1       2604     2622      841      237
+   1       2603      837     2604     2622
+   1       2603      837     2622      839
+   1        837     2604     2622      841
+   1        837      839      841     2622
+   1       4377      631     2646     1682
+   1       2645     2646      237     1672
+   1       1680     1682     1672      103
+   1       4377     2645     1680     1682
+   1       4377     2645     1682     2646
+   1       2645     1680     1682     1672
+   1       2645     2646     1672     1682
+   1       2609      233     2610     2611
+   1       4367     2610      588     4377
+   1       4369     2611     4377      631
+   1       2609     4367     4369     2611
+   1       2609     4367     2611     2610
+   1       4367     4369     2611     4377
+   1       4367     2610     4377     2611
+   1       2609      233     2611     2603
+   1       2626     2603     2628      235
+   1       4369     2611      631     2628
+   1       2609     2626     2611     4369
+   1       2609     2626     2603     2611
+   1       2626     4369     2628     2611
+   1       2626     2603     2611     2628
+   1       2610      588     4377     2645
+   1       2611     4377      631     2646
+   1       2604     2645     2646      237
+   1       2610     2611     2604     2645
+   1       2610     2611     2645     4377
+   1       2611     2604     2645     2646
+   1       2611     4377     2646     2645
+   1       2603      235     2622     2628
+   1       2611     2628     2646      631
+   1       2604     2622      237     2646
+   1       2603     2611     2622     2604
+   1       2603     2611     2628     2622
+   1       2611     2604     2646     2622
+   1       2611     2628     2622     2646
+   1       1595       96     1599     1591
+   1       4398     1599      644     2850
+   1       2847     1591     2850      265
+   1       1595     4398     2847     1591
+   1       1595     4398     1591     1599
+   1       4398     2847     1591     2850
+   1       4398     1599     2850     1591
+   1       4400      644     1683     2861
+   1       1681     1683      103     1673
+   1       2860     2861     1673      266
+   1       4400     1681     2860     2861
+   1       4400     1681     2861     1683
+   1       1681     2860     2861     1673
+   1       1681     1683     1673     2861
+   1       2835      265     2844      869
+   1       2836     2844      266      870
+   1        868      869      870       20
+   1       2835     2836      868      869
+   1       2835     2836      869     2844
+   1       2836      868      869      870
+   1       2836     2844      870      869
+   1       4396      594     2842     2848
+   1       2841     2842      264     2835
+   1       2847     2848     2835      265
+   1       4396     2841     2847     2848
+   1       4396     2841     2848     2842
+   1       2841     2847     2848     2835
+   1       2841     2842     2835     2848
+   1       4396      594     2848     4400
+   1       4398     4400     2850      644
+   1       2847     2848      265     2850
+   1       4396     4398     2848     2847
+   1       4396     4398     4400     2848
+   1       4398     2847     2850     2848
+   1       4398     4400     2848     2850
+   1       2842      264     2835     2836
+   1       2848     2835      265     2844
+   1       2860     2836     2844      266
+   1       2842     2848     2860     2836
+   1       2842     2848     2836     2835
+   1       2848     2860     2836     2844
+   1       2848     2835     2844     2836
+   1       4400      644     2861     2850
+   1       2848     2850     2844      265
+   1       2860     2861      266     2844
+   1       4400     2848     2861     2860
+   1       4400     2848     2850     2861
+   1       2848     2860     2844     2861
+   1       2848     2850     2861     2844
+   1       1451       84     1452     1454
+   1       4334     1452      585     4362
+   1       4336     1454     4362      587
+   1       1451     4334     4336     1454
+   1       1451     4334     1454     1452
+   1       4334     4336     1454     4362
+   1       4334     1452     4362     1454
+   1       4344      585     1475     4364
+   1       1474     1475       86     1477
+   1       4348     4364     1477      593
+   1       4344     1474     4348     4364
+   1       4344     1474     4364     1475
+   1       1474     4348     4364     1477
+   1       1474     1475     1477     4364
+   1       4357      587     4371     1593
+   1       4359     4371      593     1595
+   1       1592     1593     1595       96
+   1       4357     4359     1592     1593
+   1       4357     4359     1593     4371
+   1       4359     1592     1593     1595
+   1       4359     4371     1595     1593
+   1       4331      581     4343     4345
+   1       4333     4343      584     4357
+   1       4336     4345     4357      587
+   1       4331     4333     4336     4345
+   1       4331     4333     4345     4343
+   1       4333     4336     4345     4357
+   1       4333     4343     4357     4345
+   1       4331      581     4345     4344
+   1       4334     4344     4362      585
+   1       4336     4345      587     4362
+   1       4331     4334     4345     4336
+   1       4331     4334     4344     4345
+   1       4334     4336     4362     4345
+   1       4334     4344     4345     4362
+   1       4343      584     4357     4359
+   1       4345     4357      587     4371
+   1       4348     4359     4371      593
+   1       4343     4345     4348     4359
+   1       4343     4345     4359     4357
+   1       4345     4348     4359     4371
+   1       4345     4357     4371     4359
+   1       4344      585     4364     4362
+   1       4345     4362     4371      587
+   1       4348     4364      593     4371
+   1       4344     4345     4364     4348
+   1       4344     4345     4362     4364
+   1       4345     4348     4371     4364
+   1       4345     4362     4364     4371
+   1       1451       84     1454     1453
+   1       4335     1453     4366      586
+   1       4336     1454      587     4366
+   1       1451     4335     1454     4336
+   1       1451     4335     1453     1454
+   1       4335     4336     4366     1454
+   1       4335     1453     1454     4366
+   1       4350      586     4368     1562
+   1       1561     1562     1564       93
+   1       4352     4368      628     1564
+   1       4350     1561     4368     4352
+   1       4350     1561     1562     4368
+   1       1561     4352     1564     4368
+   1       1561     1562     4368     1564
+   1       4357      587     1593     4373
+   1       4360     4373     1596      628
+   1       1592     1593       96     1596
+   1       4357     4360     1593     1592
+   1       4357     4360     4373     1593
+   1       4360     1592     1596     1593
+   1       4360     4373     1593     1596
+   1       4332      582     4351     4349
+   1       4333     4349     4357      584
+   1       4336     4351      587     4357
+   1       4332     4333     4351     4336
+   1       4332     4333     4349     4351
+   1       4333     4336     4357     4351
+   1       4333     4349     4351     4357
+   1       4332      582     4350     4351
+   1       4335     4350      586     4366
+   1       4336     4351     4366      587
+   1       4332     4335     4336     4351
+   1       4332     4335     4351     4350
+   1       4335     4336     4351     4366
+   1       4335     4350     4366     4351
+   1       4349      584     4360     4357
+   1       4351     4357     4373      587
+   1       4352     4360      628     4373
+   1       4349     4351     4360     4352
+   1       4349     4351     4357     4360
+   1       4351     4352     4373     4360
+   1       4351     4357     4360     4373
+   1       4350      586     4366     4368
+   1       4351     4366      587     4373
+   1       4352     4368     4373      628
+   1       4350     4351     4352     4368
+   1       4350     4351     4368     4366
+   1       4351     4352     4368     4373
+   1       4351     4366     4373     4368
+   1       1475       86     1477     1478
+   1       4364     1477      593     4396
+   1       4365     1478     4396      594
+   1       1475     4364     4365     1478
+   1       1475     4364     1478     1477
+   1       4364     4365     1478     4396
+   1       4364     1477     4396     1478
+   1       4371      593     1595     4398
+   1       1593     1595       96     1599
+   1       4375     4398     1599      644
+   1       4371     1593     4375     4398
+   1       4371     1593     4398     1595
+   1       1593     4375     4398     1599
+   1       1593     1595     1599     4398
+   1       4376      594     4400     1681
+   1       4378     4400      644     1683
+   1       1680     1681     1683      103
+   1       4376     4378     1680     1681
+   1       4376     4378     1681     4400
+   1       4378     1680     1681     1683
+   1       4378     4400     1683     1681
+   1       4362      587     4370     4372
+   1       4363     4370      588     4376
+   1       4365     4372     4376      594
+   1       4362     4363     4365     4372
+   1       4362     4363     4372     4370
+   1       4363     4365     4372     4376
+   1       4363     4370     4376     4372
+   1       4362      587     4372     4371
+   1       4364     4371     4396      593
+   1       4365     4372      594     4396
+   1       4362     4364     4372     4365
+   1       4362     4364     4371     4372
+   1       4364     4365     4396     4372
+   1       4364     4371     4372     4396
+   1       4370      588     4376     4378
+   1       4372     4376      594     4400
+   1       4375     4378     4400      644
+   1       4370     4372     4375     4378
+   1       4370     4372     4378     4376
+   1       4372     4375     4378     4400
+   1       4372     4376     4400     4378
+   1       4371      593     4398     4396
+   1       4372     4396     4400      594
+   1       4375     4398      644     4400
+   1       4371     4372     4398     4375
+   1       4371     4372     4396     4398
+   1       4372     4375     4400     4398
+   1       4372     4396     4398     4400
+   1       1562       93     1567     1564
+   1       4368     1564     4548      628
+   1       4369     1567      631     4548
+   1       1562     4368     1567     4369
+   1       1562     4368     1564     1567
+   1       4368     4369     4548     1567
+   1       4368     1564     1567     4548
+   1       4373      628     4551     1596
+   1       1593     1596     1599       96
+   1       4375     4551      644     1599
+   1       4373     1593     4551     4375
+   1       4373     1593     1596     4551
+   1       1593     4375     1599     4551
+   1       1593     1596     4551     1599
+   1       4377      631     1682     4566
+   1       4378     4566     1683      644
+   1       1680     1682      103     1683
+   1       4377     4378     1682     1680
+   1       4377     4378     4566     1682
+   1       4378     1680     1683     1682
+   1       4378     4566     1682     1683
+   1       4366      587     4374     4370
+   1       4367     4370     4377      588
+   1       4369     4374      631     4377
+   1       4366     4367     4374     4369
+   1       4366     4367     4370     4374
+   1       4367     4369     4377     4374
+   1       4367     4370     4374     4377
+   1       4366      587     4373     4374
+   1       4368     4373      628     4548
+   1       4369     4374     4548      631
+   1       4366     4368     4369     4374
+   1       4366     4368     4374     4373
+   1       4368     4369     4374     4548
+   1       4368     4373     4548     4374
+   1       4370      588     4378     4377
+   1       4374     4377     4566      631
+   1       4375     4378      644     4566
+   1       4370     4374     4378     4375
+   1       4370     4374     4377     4378
+   1       4374     4375     4566     4378
+   1       4374     4377     4378     4566
+   1       4373      628     4548     4551
+   1       4374     4548      631     4566
+   1       4375     4551     4566      644
+   1       4373     4374     4375     4551
+   1       4373     4374     4551     4548
+   1       4374     4375     4551     4566
+   1       4374     4548     4566     4551
+   1        819       15      823      822
+   1       2468      822     2490      218
+   1       2469      823      219     2490
+   1        819     2468      823     2469
+   1        819     2468      822      823
+   1       2468     2469     2490      823
+   1       2468      822      823     2490
+   1       2493      218     2494     1580
+   1       1584     1580     1586       95
+   1       4356     2494      639     1586
+   1       2493     1584     2494     4356
+   1       2493     1584     1580     2494
+   1       1584     4356     1586     2494
+   1       1584     1580     2494     1586
+   1       2499      219     1590     2502
+   1       4361     2502     1597      639
+   1       1592     1590       96     1597
+   1       2499     4361     1590     1592
+   1       2499     4361     2502     1590
+   1       4361     1592     1597     1590
+   1       4361     2502     1590     1597
+   1       2472      583     2498     4353
+   1       2473     4353     2499      584
+   1       2469     2498      219     2499
+   1       2472     2473     2498     2469
+   1       2472     2473     4353     2498
+   1       2473     2469     2499     2498
+   1       2473     4353     2498     2499
+   1       2472      583     2493     2498
+   1       2468     2493      218     2490
+   1       2469     2498     2490      219
+   1       2472     2468     2469     2498
+   1       2472     2468     2498     2493
+   1       2468     2469     2498     2490
+   1       2468     2493     2490     2498
+   1       4353      584     4361     2499
+   1       2498     2499     2502      219
+   1       4356     4361      639     2502
+   1       4353     2498     4361     4356
+   1       4353     2498     2499     4361
+   1       2498     4356     2502     4361
+   1       2498     2499     4361     2502
+   1       2493      218     2490     2494
+   1       2498     2490      219     2502
+   1       4356     2494     2502      639
+   1       2493     2498     4356     2494
+   1       2493     2498     2494     2490
+   1       2498     4356     2494     2502
+   1       2498     2490     2502     2494
+   1       1585       95     1588     1581
+   1       2795     1581     2796      257
+   1       4386     1588      641     2796
+   1       1585     2795     1588     4386
+   1       1585     2795     1581     1588
+   1       2795     4386     2796     1588
+   1       2795     1581     1588     2796
+   1       2785      257     2792      861
+   1        860      861      862       19
+   1       2786     2792      258      862
+   1       2785      860     2792     2786
+   1       2785      860      861     2792
+   1        860     2786      862     2792
+   1        860      861     2792      862
+   1       4394      641     1824     2801
+   1       2800     2801     1818      258
+   1       1822     1824      114     1818
+   1       4394     2800     1824     1822
+   1       4394     2800     2801     1824
+   1       2800     1822     1818     1824
+   1       2800     2801     1824     1818
+   1       2789      256     2791     2790
+   1       4384     2790     4394      592
+   1       4386     2791      641     4394
+   1       2789     4384     2791     4386
+   1       2789     4384     2790     2791
+   1       4384     4386     4394     2791
+   1       4384     2790     2791     4394
+   1       2789      256     2785     2791
+   1       2795     2785      257     2796
+   1       4386     2791     2796      641
+   1       2789     2795     4386     2791
+   1       2789     2795     2791     2785
+   1       2795     4386     2791     2796
+   1       2795     2785     2796     2791
+   1       2790      592     2800     4394
+   1       2791     4394     2801      641
+   1       2786     2800      258     2801
+   1       2790     2791     2800     2786
+   1       2790     2791     4394     2800
+   1       2791     2786     2801     2800
+   1       2791     4394     2800     2801
+   1       2785      257     2796     2792
+   1       2791     2796      641     2801
+   1       2786     2792     2801      258
+   1       2785     2791     2786     2792
+   1       2785     2791     2792     2796
+   1       2791     2786     2792     2801
+   1       2791     2796     2801     2792
+   1       1595       96     1591     1601
+   1       4399     1601     2851      646
+   1       2847     1591      265     2851
+   1       1595     4399     1591     2847
+   1       1595     4399     1601     1591
+   1       4399     2847     2851     1591
+   1       4399     1601     1591     2851
+   1       4401      646     2866     1825
+   1       1823     1825     1819      114
+   1       2865     2866      267     1819
+   1       4401     1823     2866     2865
+   1       4401     1823     1825     2866
+   1       1823     2865     1819     2866
+   1       1823     1825     2866     1819
+   1       2835      265      869     2845
+   1       2837     2845      871      267
+   1        868      869       20      871
+   1       2835     2837      869      868
+   1       2835     2837     2845      869
+   1       2837      868      871      869
+   1       2837     2845      869      871
+   1       4397      595     2849     2843
+   1       2841     2843     2835      264
+   1       2847     2849      265     2835
+   1       4397     2841     2849     2847
+   1       4397     2841     2843     2849
+   1       2841     2847     2835     2849
+   1       2841     2843     2849     2835
+   1       4397      595     4401     2849
+   1       4399     4401      646     2851
+   1       2847     2849     2851      265
+   1       4397     4399     2847     2849
+   1       4397     4399     2849     4401
+   1       4399     2847     2849     2851
+   1       4399     4401     2851     2849
+   1       2843      264     2837     2835
+   1       2849     2835     2845      265
+   1       2865     2837      267     2845
+   1       2843     2849     2837     2865
+   1       2843     2849     2835     2837
+   1       2849     2865     2845     2837
+   1       2849     2835     2837     2845
+   1       4401      646     2851     2866
+   1       2849     2851      265     2845
+   1       2865     2866     2845      267
+   1       4401     2849     2865     2866
+   1       4401     2849     2866     2851
+   1       2849     2865     2866     2845
+   1       2849     2851     2845     2866
+   1       1461       85     1464     1462
+   1       4340     1462     4379      589
+   1       4342     1464      591     4379
+   1       1461     4340     1464     4342
+   1       1461     4340     1462     1464
+   1       4340     4342     4379     1464
+   1       4340     1462     1464     4379
+   1       4346      589     4381     1476
+   1       1474     1476     1477       86
+   1       4348     4381      593     1477
+   1       4346     1474     4381     4348
+   1       4346     1474     1476     4381
+   1       1474     4348     1477     4381
+   1       1474     1476     4381     1477
+   1       4358      591     1594     4388
+   1       4359     4388     1595      593
+   1       1592     1594       96     1595
+   1       4358     4359     1594     1592
+   1       4358     4359     4388     1594
+   1       4359     1592     1595     1594
+   1       4359     4388     1594     1595
+   1       4337      581     4347     4343
+   1       4339     4343     4358      584
+   1       4342     4347      591     4358
+   1       4337     4339     4347     4342
+   1       4337     4339     4343     4347
+   1       4339     4342     4358     4347
+   1       4339     4343     4347     4358
+   1       4337      581     4346     4347
+   1       4340     4346      589     4379
+   1       4342     4347     4379      591
+   1       4337     4340     4342     4347
+   1       4337     4340     4347     4346
+   1       4340     4342     4347     4379
+   1       4340     4346     4379     4347
+   1       4343      584     4359     4358
+   1       4347     4358     4388      591
+   1       4348     4359      593     4388
+   1       4343     4347     4359     4348
+   1       4343     4347     4358     4359
+   1       4347     4348     4388     4359
+   1       4347     4358     4359     4388
+   1       4346      589     4379     4381
+   1       4347     4379      591     4388
+   1       4348     4381     4388      593
+   1       4346     4347     4348     4381
+   1       4346     4347     4381     4379
+   1       4347     4348     4381     4388
+   1       4347     4379     4388     4381
+   1       1461       85     1463     1464
+   1       4341     1463      590     4383
+   1       4342     1464     4383      591
+   1       1461     4341     4342     1464
+   1       1461     4341     1464     1463
+   1       4341     4342     1464     4383
+   1       4341     1463     4383     1464
+   1       4354      590     1585     4385
+   1       1584     1585       95     1586
+   1       4356     4385     1586      639
+   1       4354     1584     4356     4385
+   1       4354     1584     4385     1585
+   1       1584     4356     4385     1586
+   1       1584     1585     1586     4385
+   1       4358      591     4390     1594
+   1       4361     4390      639     1597
+   1       1592     1594     1597       96
+   1       4358     4361     1592     1594
+   1       4358     4361     1594     4390
+   1       4361     1592     1594     1597
+   1       4361     4390     1597     1594
+   1       4338      583     4353     4355
+   1       4339     4353      584     4358
+   1       4342     4355     4358      591
+   1       4338     4339     4342     4355
+   1       4338     4339     4355     4353
+   1       4339     4342     4355     4358
+   1       4339     4353     4358     4355
+   1       4338      583     4355     4354
+   1       4341     4354     4383      590
+   1       4342     4355      591     4383
+   1       4338     4341     4355     4342
+   1       4338     4341     4354     4355
+   1       4341     4342     4383     4355
+   1       4341     4354     4355     4383
+   1       4353      584     4358     4361
+   1       4355     4358      591     4390
+   1       4356     4361     4390      639
+   1       4353     4355     4356     4361
+   1       4353     4355     4361     4358
+   1       4355     4356     4361     4390
+   1       4355     4358     4390     4361
+   1       4354      590     4385     4383
+   1       4355     4383     4390      591
+   1       4356     4385      639     4390
+   1       4354     4355     4385     4356
+   1       4354     4355     4383     4385
+   1       4355     4356     4390     4385
+   1       4355     4383     4385     4390
+   1       1476       86     1479     1477
+   1       4381     1477     4397      593
+   1       4382     1479      595     4397
+   1       1476     4381     1479     4382
+   1       1476     4381     1477     1479
+   1       4381     4382     4397     1479
+   1       4381     1477     1479     4397
+   1       4388      593     4399     1595
+   1       1594     1595     1601       96
+   1       4392     4399      646     1601
+   1       4388     1594     4399     4392
+   1       4388     1594     1595     4399
+   1       1594     4392     1601     4399
+   1       1594     1595     4399     1601
+   1       4393      595     1823     4401
+   1       4395     4401     1825      646
+   1       1822     1823      114     1825
+   1       4393     4395     1823     1822
+   1       4393     4395     4401     1823
+   1       4395     1822     1825     1823
+   1       4395     4401     1823     1825
+   1       4379      591     4389     4387
+   1       4380     4387     4393      592
+   1       4382     4389      595     4393
+   1       4379     4380     4389     4382
+   1       4379     4380     4387     4389
+   1       4380     4382     4393     4389
+   1       4380     4387     4389     4393
+   1       4379      591     4388     4389
+   1       4381     4388      593     4397
+   1       4382     4389     4397      595
+   1       4379     4381     4382     4389
+   1       4379     4381     4389     4388
+   1       4381     4382     4389     4397
+   1       4381     4388     4397     4389
+   1       4387      592     4395     4393
+   1       4389     4393     4401      595
+   1       4392     4395      646     4401
+   1       4387     4389     4395     4392
+   1       4387     4389     4393     4395
+   1       4389     4392     4401     4395
+   1       4389     4393     4395     4401
+   1       4388      593     4397     4399
+   1       4389     4397      595     4401
+   1       4392     4399     4401      646
+   1       4388     4389     4392     4399
+   1       4388     4389     4399     4397
+   1       4389     4392     4399     4401
+   1       4389     4397     4401     4399
+   1       1585       95     1586     1588
+   1       4385     1586      639     4604
+   1       4386     1588     4604      641
+   1       1585     4385     4386     1588
+   1       1585     4385     1588     1586
+   1       4385     4386     1588     4604
+   1       4385     1586     4604     1588
+   1       4390      639     1597     4607
+   1       1594     1597       96     1601
+   1       4392     4607     1601      646
+   1       4390     1594     4392     4607
+   1       4390     1594     4607     1597
+   1       1594     4392     4607     1601
+   1       1594     1597     1601     4607
+   1       4394      641     4614     1824
+   1       4395     4614      646     1825
+   1       1822     1824     1825      114
+   1       4394     4395     1822     1824
+   1       4394     4395     1824     4614
+   1       4395     1822     1824     1825
+   1       4395     4614     1825     1824
+   1       4383      591     4387     4391
+   1       4384     4387      592     4394
+   1       4386     4391     4394      641
+   1       4383     4384     4386     4391
+   1       4383     4384     4391     4387
+   1       4384     4386     4391     4394
+   1       4384     4387     4394     4391
+   1       4383      591     4391     4390
+   1       4385     4390     4604      639
+   1       4386     4391      641     4604
+   1       4383     4385     4391     4386
+   1       4383     4385     4390     4391
+   1       4385     4386     4604     4391
+   1       4385     4390     4391     4604
+   1       4387      592     4394     4395
+   1       4391     4394      641     4614
+   1       4392     4395     4614      646
+   1       4387     4391     4392     4395
+   1       4387     4391     4395     4394
+   1       4391     4392     4395     4614
+   1       4391     4394     4614     4395
+   1       4390      639     4607     4604
+   1       4391     4604     4614      641
+   1       4392     4607      646     4614
+   1       4390     4391     4607     4392
+   1       4390     4391     4604     4607
+   1       4391     4392     4614     4607
+   1       4391     4604     4607     4614
+   1        839       17      841      844
+   1       2622      841      237     2640
+   1       2623      844     2640      240
+   1        839     2622     2623      844
+   1        839     2622      844      841
+   1       2622     2623      844     2640
+   1       2622      841     2640      844
+   1       2646      237     1672     2647
+   1       1682     1672      103     1684
+   1       4568     2647     1684      674
+   1       2646     1682     4568     2647
+   1       2646     1682     2647     1672
+   1       1682     4568     2647     1684
+   1       1682     1672     1684     2647
+   1       2669      240     2671     1714
+   1       4573     2671      674     1723
+   1       1719     1714     1723      106
+   1       2669     4573     1719     1714
+   1       2669     4573     1714     2671
+   1       4573     1719     1714     1723
+   1       4573     2671     1723     1714
+   1       2628      631     4565     2668
+   1       2629     4565      632     2669
+   1       2623     2668     2669      240
+   1       2628     2629     2623     2668
+   1       2628     2629     2668     4565
+   1       2629     2623     2668     2669
+   1       2629     4565     2669     2668
+   1       2628      631     2668     2646
+   1       2622     2646     2640      237
+   1       2623     2668      240     2640
+   1       2628     2622     2668     2623
+   1       2628     2622     2646     2668
+   1       2622     2623     2640     2668
+   1       2622     2646     2668     2640
+   1       4565      632     2669     4573
+   1       2668     2669      240     2671
+   1       4568     4573     2671      674
+   1       4565     2668     4568     4573
+   1       4565     2668     4573     2669
+   1       2668     4568     4573     2671
+   1       2668     2669     2671     4573
+   1       2646      237     2647     2640
+   1       2668     2640     2671      240
+   1       4568     2647      674     2671
+   1       2646     2668     2647     4568
+   1       2646     2668     2640     2647
+   1       2668     4568     2671     2647
+   1       2668     2640     2647     2671
+   1       1683      103     1673     1685
+   1       2861     1673      266     2862
+   1       4629     1685     2862      675
+   1       1683     2861     4629     1685
+   1       1683     2861     1685     1673
+   1       2861     4629     1685     2862
+   1       2861     1673     2862     1685
+   1       2844      266      870     2855
+   1        869      870       20      872
+   1       2846     2855      872      268
+   1       2844      869     2846     2855
+   1       2844      869     2855      870
+   1        869     2846     2855      872
+   1        869      870      872     2855
+   1       4647      675     2870     1844
+   1       2869     2870      268     1838
+   1       1842     1844     1838      116
+   1       4647     2869     1842     1844
+   1       4647     2869     1844     2870
+   1       2869     1842     1844     1838
+   1       2869     2870     1838     1844
+   1       2850      265     2852     2853
+   1       4627     2852      648     4647
+   1       4629     2853     4647      675
+   1       2850     4627     4629     2853
+   1       2850     4627     2853     2852
+   1       4627     4629     2853     4647
+   1       4627     2852     4647     2853
+   1       2850      265     2853     2844
+   1       2861     2844     2862      266
+   1       4629     2853      675     2862
+   1       2850     2861     2853     4629
+   1       2850     2861     2844     2853
+   1       2861     4629     2862     2853
+   1       2861     2844     2853     2862
+   1       2852      648     4647     2869
+   1       2853     4647      675     2870
+   1       2846     2869     2870      268
+   1       2852     2853     2846     2869
+   1       2852     2853     2869     4647
+   1       2853     2846     2869     2870
+   1       2853     4647     2870     2869
+   1       2844      266     2855     2862
+   1       2853     2862     2870      675
+   1       2846     2855      268     2870
+   1       2844     2853     2855     2846
+   1       2844     2853     2862     2855
+   1       2853     2846     2870     2855
+   1       2853     2862     2855     2870
+   1       1721      106     1726     1715
+   1       4658     1726      688     3064
+   1       3061     1715     3064      296
+   1       1721     4658     3061     1715
+   1       1721     4658     1715     1726
+   1       4658     3061     1715     3064
+   1       4658     1726     3064     1715
+   1       4665      688     1845     3084
+   1       1843     1845      116     1839
+   1       3083     3084     1839      299
+   1       4665     1843     3083     3084
+   1       4665     1843     3084     1845
+   1       1843     3083     3084     1839
+   1       1843     1845     1839     3084
+   1       3045      296     3057      900
+   1       3048     3057      299      903
+   1        899      900      903       24
+   1       3045     3048      899      900
+   1       3045     3048      900     3057
+   1       3048      899      900      903
+   1       3048     3057      903      900
+   1       4656      653     3054     3062
+   1       3051     3054      295     3045
+   1       3061     3062     3045      296
+   1       4656     3051     3061     3062
+   1       4656     3051     3062     3054
+   1       3051     3061     3062     3045
+   1       3051     3054     3045     3062
+   1       4656      653     3062     4665
+   1       4658     4665     3064      688
+   1       3061     3062      296     3064
+   1       4656     4658     3062     3061
+   1       4656     4658     4665     3062
+   1       4658     3061     3064     3062
+   1       4658     4665     3062     3064
+   1       3054      295     3045     3048
+   1       3062     3045      296     3057
+   1       3083     3048     3057      299
+   1       3054     3062     3083     3048
+   1       3054     3062     3048     3045
+   1       3062     3083     3048     3057
+   1       3062     3045     3057     3048
+   1       4665      688     3084     3064
+   1       3062     3064     3057      296
+   1       3083     3084      299     3057
+   1       4665     3062     3084     3083
+   1       4665     3062     3064     3084
+   1       3062     3083     3057     3084
+   1       3062     3064     3084     3057
+   1       1596       96     1598     1600
+   1       4550     1598      643     4620
+   1       4552     1600     4620      645
+   1       1596     4550     4552     1600
+   1       1596     4550     1600     1598
+   1       4550     4552     1600     4620
+   1       4550     1598     4620     1600
+   1       4556      643     1611     4623
+   1       1608     1611       97     1613
+   1       4558     4623     1613      650
+   1       4556     1608     4558     4623
+   1       4556     1608     4623     1611
+   1       1608     4558     4623     1613
+   1       1608     1611     1613     4623
+   1       4570      645     4631     1720
+   1       4571     4631      650     1721
+   1       1719     1720     1721      106
+   1       4570     4571     1719     1720
+   1       4570     4571     1720     4631
+   1       4571     1719     1720     1721
+   1       4571     4631     1721     1720
+   1       4547      629     4553     4557
+   1       4549     4553      632     4570
+   1       4552     4557     4570      645
+   1       4547     4549     4552     4557
+   1       4547     4549     4557     4553
+   1       4549     4552     4557     4570
+   1       4549     4553     4570     4557
+   1       4547      629     4557     4556
+   1       4550     4556     4620      643
+   1       4552     4557      645     4620
+   1       4547     4550     4557     4552
+   1       4547     4550     4556     4557
+   1       4550     4552     4620     4557
+   1       4550     4556     4557     4620
+   1       4553      632     4570     4571
+   1       4557     4570      645     4631
+   1       4558     4571     4631      650
+   1       4553     4557     4558     4571
+   1       4553     4557     4571     4570
+   1       4557     4558     4571     4631
+   1       4557     4570     4631     4571
+   1       4556      643     4623     4620
+   1       4557     4620     4631      645
+   1       4558     4623      650     4631
+   1       4556     4557     4623     4558
+   1       4556     4557     4620     4623
+   1       4557     4558     4631     4623
+   1       4557     4620     4623     4631
+   1       1596       96     1600     1599
+   1       4551     1599     4626      644
+   1       4552     1600      645     4626
+   1       1596     4551     1600     4552
+   1       1596     4551     1599     1600
+   1       4551     4552     4626     1600
+   1       4551     1599     1600     4626
+   1       4566      644     4628     1683
+   1       1682     1683     1684      103
+   1       4568     4628      674     1684
+   1       4566     1682     4628     4568
+   1       4566     1682     1683     4628
+   1       1682     4568     1684     4628
+   1       1682     1683     4628     1684
+   1       4570      645     1720     4633
+   1       4573     4633     1723      674
+   1       1719     1720      106     1723
+   1       4570     4573     1720     1719
+   1       4570     4573     4633     1720
+   1       4573     1719     1723     1720
+   1       4573     4633     1720     1723
+   1       4548      631     4567     4565
+   1       4549     4565     4570      632
+   1       4552     4567      645     4570
+   1       4548     4549     4567     4552
+   1       4548     4549     4565     4567
+   1       4549     4552     4570     4567
+   1       4549     4565     4567     4570
+   1       4548      631     4566     4567
+   1       4551     4566      644     4626
+   1       4552     4567     4626      645
+   1       4548     4551     4552     4567
+   1       4548     4551     4567     4566
+   1       4551     4552     4567     4626
+   1       4551     4566     4626     4567
+   1       4565      632     4573     4570
+   1       4567     4570     4633      645
+   1       4568     4573      674     4633
+   1       4565     4567     4573     4568
+   1       4565     4567     4570     4573
+   1       4567     4568     4633     4573
+   1       4567     4570     4573     4633
+   1       4566      644     4626     4628
+   1       4567     4626      645     4633
+   1       4568     4628     4633      674
+   1       4566     4567     4568     4628
+   1       4566     4567     4628     4626
+   1       4567     4568     4628     4633
+   1       4567     4626     4633     4628
+   1       1611       97     1613     1616
+   1       4623     1613      650     4656
+   1       4625     1616     4656      653
+   1       1611     4623     4625     1616
+   1       1611     4623     1616     1613
+   1       4623     4625     1616     4656
+   1       4623     1613     4656     1616
+   1       4631      650     1721     4658
+   1       1720     1721      106     1726
+   1       4635     4658     1726      688
+   1       4631     1720     4635     4658
+   1       4631     1720     4658     1721
+   1       1720     4635     4658     1726
+   1       1720     1721     1726     4658
+   1       4646      653     4665     1843
+   1       4648     4665      688     1845
+   1       1842     1843     1845      116
+   1       4646     4648     1842     1843
+   1       4646     4648     1843     4665
+   1       4648     1842     1843     1845
+   1       4648     4665     1845     1843
+   1       4620      645     4630     4632
+   1       4622     4630      648     4646
+   1       4625     4632     4646      653
+   1       4620     4622     4625     4632
+   1       4620     4622     4632     4630
+   1       4622     4625     4632     4646
+   1       4622     4630     4646     4632
+   1       4620      645     4632     4631
+   1       4623     4631     4656      650
+   1       4625     4632      653     4656
+   1       4620     4623     4632     4625
+   1       4620     4623     4631     4632
+   1       4623     4625     4656     4632
+   1       4623     4631     4632     4656
+   1       4630      648     4646     4648
+   1       4632     4646      653     4665
+   1       4635     4648     4665      688
+   1       4630     4632     4635     4648
+   1       4630     4632     4648     4646
+   1       4632     4635     4648     4665
+   1       4632     4646     4665     4648
+   1       4631      650     4658     4656
+   1       4632     4656     4665      653
+   1       4635     4658      688     4665
+   1       4631     4632     4658     4635
+   1       4631     4632     4656     4658
+   1       4632     4635     4665     4658
+   1       4632     4656     4658     4665
+   1       1683      103     1685     1684
+   1       4628     1684     4748      674
+   1       4629     1685      675     4748
+   1       1683     4628     1685     4629
+   1       1683     4628     1684     1685
+   1       4628     4629     4748     1685
+   1       4628     1684     1685     4748
+   1       4633      674     4749     1723
+   1       1720     1723     1726      106
+   1       4635     4749      688     1726
+   1       4633     1720     4749     4635
+   1       4633     1720     1723     4749
+   1       1720     4635     1726     4749
+   1       1720     1723     4749     1726
+   1       4647      675     1844     4750
+   1       4648     4750     1845      688
+   1       1842     1844      116     1845
+   1       4647     4648     1844     1842
+   1       4647     4648     4750     1844
+   1       4648     1842     1845     1844
+   1       4648     4750     1844     1845
+   1       4626      645     4634     4630
+   1       4627     4630     4647      648
+   1       4629     4634      675     4647
+   1       4626     4627     4634     4629
+   1       4626     4627     4630     4634
+   1       4627     4629     4647     4634
+   1       4627     4630     4634     4647
+   1       4626      645     4633     4634
+   1       4628     4633      674     4748
+   1       4629     4634     4748      675
+   1       4626     4628     4629     4634
+   1       4626     4628     4634     4633
+   1       4628     4629     4634     4748
+   1       4628     4633     4748     4634
+   1       4630      648     4648     4647
+   1       4634     4647     4750      675
+   1       4635     4648      688     4750
+   1       4630     4634     4648     4635
+   1       4630     4634     4647     4648
+   1       4634     4635     4750     4648
+   1       4634     4647     4648     4750
+   1       4633      674     4748     4749
+   1       4634     4748      675     4750
+   1       4635     4749     4750      688
+   1       4633     4634     4635     4749
+   1       4633     4634     4749     4748
+   1       4634     4635     4749     4750
+   1       4634     4748     4750     4749
+   1        861       19      863      862
+   1       2792      862     2798      258
+   1       2793      863      259     2798
+   1        861     2792      863     2793
+   1        861     2792      862      863
+   1       2792     2793     2798      863
+   1       2792      862      863     2798
+   1       2801      258     2802     1818
+   1       1824     1818     1826      114
+   1       4616     2802      718     1826
+   1       2801     1824     2802     4616
+   1       2801     1824     1818     2802
+   1       1824     4616     1826     2802
+   1       1824     1818     2802     1826
+   1       2806      259     1828     2807
+   1       4619     2807     1836      718
+   1       1833     1828      115     1836
+   1       2806     4619     1828     1833
+   1       2806     4619     2807     1828
+   1       4619     1833     1836     1828
+   1       4619     2807     1828     1836
+   1       2796      641     2805     4613
+   1       2797     4613     2806      642
+   1       2793     2805      259     2806
+   1       2796     2797     2805     2793
+   1       2796     2797     4613     2805
+   1       2797     2793     2806     2805
+   1       2797     4613     2805     2806
+   1       2796      641     2801     2805
+   1       2792     2801      258     2798
+   1       2793     2805     2798      259
+   1       2796     2792     2793     2805
+   1       2796     2792     2805     2801
+   1       2792     2793     2805     2798
+   1       2792     2801     2798     2805
+   1       4613      642     4619     2806
+   1       2805     2806     2807      259
+   1       4616     4619      718     2807
+   1       4613     2805     4619     4616
+   1       4613     2805     2806     4619
+   1       2805     4616     2807     4619
+   1       2805     2806     4619     2807
+   1       2801      258     2798     2802
+   1       2805     2798      259     2807
+   1       4616     2802     2807      718
+   1       2801     2805     4616     2802
+   1       2801     2805     2802     2798
+   1       2805     4616     2802     2807
+   1       2805     2798     2807     2802
+   1       1825      114     1827     1819
+   1       2866     1819     2867      267
+   1       4639     1827      719     2867
+   1       1825     2866     1827     4639
+   1       1825     2866     1819     1827
+   1       2866     4639     2867     1827
+   1       2866     1819     1827     2867
+   1       2845      267     2863      871
+   1        869      871      872       20
+   1       2846     2863      268      872
+   1       2845      869     2863     2846
+   1       2845      869      871     2863
+   1        869     2846      872     2863
+   1        869      871     2863      872
+   1       4649      719     1846     2871
+   1       2869     2871     1838      268
+   1       1842     1846      116     1838
+   1       4649     2869     1846     1842
+   1       4649     2869     2871     1846
+   1       2869     1842     1838     1846
+   1       2869     2871     1846     1838
+   1       2851      265     2854     2852
+   1       4637     2852     4649      648
+   1       4639     2854      719     4649
+   1       2851     4637     2854     4639
+   1       2851     4637     2852     2854
+   1       4637     4639     4649     2854
+   1       4637     2852     2854     4649
+   1       2851      265     2845     2854
+   1       2866     2845      267     2867
+   1       4639     2854     2867      719
+   1       2851     2866     4639     2854
+   1       2851     2866     2854     2845
+   1       2866     4639     2854     2867
+   1       2866     2845     2867     2854
+   1       2852      648     2869     4649
+   1       2854     4649     2871      719
+   1       2846     2869      268     2871
+   1       2852     2854     2869     2846
+   1       2852     2854     4649     2869
+   1       2854     2846     2871     2869
+   1       2854     4649     2869     2871
+   1       2845      267     2867     2863
+   1       2854     2867      719     2871
+   1       2846     2863     2871      268
+   1       2845     2854     2846     2863
+   1       2845     2854     2863     2867
+   1       2854     2846     2863     2871
+   1       2854     2867     2871     2863
+   1       1835      115     1829     1837
+   1       4664     1837     3081      720
+   1       3079     1829      298     3081
+   1       1835     4664     1829     3079
+   1       1835     4664     1837     1829
+   1       4664     3079     3081     1829
+   1       4664     1837     1829     3081
+   1       4666      720     3085     1847
+   1       1843     1847     1839      116
+   1       3083     3085      299     1839
+   1       4666     1843     3085     3083
+   1       4666     1843     1847     3085
+   1       1843     3083     1839     3085
+   1       1843     1847     3085     1839
+   1       3047      298      902     3076
+   1       3048     3076      903      299
+   1        899      902       24      903
+   1       3047     3048      902      899
+   1       3047     3048     3076      902
+   1       3048      899      903      902
+   1       3048     3076      902      903
+   1       4663      653     3080     3054
+   1       3053     3054     3047      295
+   1       3079     3080      298     3047
+   1       4663     3053     3080     3079
+   1       4663     3053     3054     3080
+   1       3053     3079     3047     3080
+   1       3053     3054     3080     3047
+   1       4663      653     4666     3080
+   1       4664     4666      720     3081
+   1       3079     3080     3081      298
+   1       4663     4664     3079     3080
+   1       4663     4664     3080     4666
+   1       4664     3079     3080     3081
+   1       4664     4666     3081     3080
+   1       3054      295     3048     3047
+   1       3080     3047     3076      298
+   1       3083     3048      299     3076
+   1       3054     3080     3048     3083
+   1       3054     3080     3047     3048
+   1       3080     3083     3076     3048
+   1       3080     3047     3048     3076
+   1       4666      720     3081     3085
+   1       3080     3081      298     3076
+   1       3083     3085     3076      299
+   1       4666     3080     3083     3085
+   1       4666     3080     3085     3081
+   1       3080     3083     3085     3076
+   1       3080     3081     3076     3085
+   1       1597       96     1602     1598
+   1       4606     1598     4621      643
+   1       4608     1602      647     4621
+   1       1597     4606     1602     4608
+   1       1597     4606     1598     1602
+   1       4606     4608     4621     1602
+   1       4606     1598     1602     4621
+   1       4610      643     4624     1611
+   1       1610     1611     1615       97
+   1       4612     4624      652     1615
+   1       4610     1610     4624     4612
+   1       4610     1610     1611     4624
+   1       1610     4612     1615     4624
+   1       1610     1611     4624     1615
+   1       4617      647     1834     4641
+   1       4618     4641     1835      652
+   1       1833     1834      115     1835
+   1       4617     4618     1834     1833
+   1       4617     4618     4641     1834
+   1       4618     1833     1835     1834
+   1       4618     4641     1834     1835
+   1       4603      640     4611     4609
+   1       4605     4609     4617      642
+   1       4608     4611      647     4617
+   1       4603     4605     4611     4608
+   1       4603     4605     4609     4611
+   1       4605     4608     4617     4611
+   1       4605     4609     4611     4617
+   1       4603      640     4610     4611
+   1       4606     4610      643     4621
+   1       4608     4611     4621      647
+   1       4603     4606     4608     4611
+   1       4603     4606     4611     4610
+   1       4606     4608     4611     4621
+   1       4606     4610     4621     4611
+   1       4609      642     4618     4617
+   1       4611     4617     4641      647
+   1       4612     4618      652     4641
+   1       4609     4611     4618     4612
+   1       4609     4611     4617     4618
+   1       4611     4612     4641     4618
+   1       4611     4617     4618     4641
+   1       4610      643     4621     4624
+   1       4611     4621      647     4641
+   1       4612     4624     4641      652
+   1       4610     4611     4612     4624
+   1       4610     4611     4624     4621
+   1       4611     4612     4624     4641
+   1       4611     4621     4641     4624
+   1       1597       96     1601     1602
+   1       4607     1601      646     4636
+   1       4608     1602     4636      647
+   1       1597     4607     4608     1602
+   1       1597     4607     1602     1601
+   1       4607     4608     1602     4636
+   1       4607     1601     4636     1602
+   1       4614      646     1825     4638
+   1       1824     1825      114     1826
+   1       4616     4638     1826      718
+   1       4614     1824     4616     4638
+   1       4614     1824     4638     1825
+   1       1824     4616     4638     1826
+   1       1824     1825     1826     4638
+   1       4617      647     4643     1834
+   1       4619     4643      718     1836
+   1       1833     1834     1836      115
+   1       4617     4619     1833     1834
+   1       4617     4619     1834     4643
+   1       4619     1833     1834     1836
+   1       4619     4643     1836     1834
+   1       4604      641     4613     4615
+   1       4605     4613      642     4617
+   1       4608     4615     4617      647
+   1       4604     4605     4608     4615
+   1       4604     4605     4615     4613
+   1       4605     4608     4615     4617
+   1       4605     4613     4617     4615
+   1       4604      641     4615     4614
+   1       4607     4614     4636      646
+   1       4608     4615      647     4636
+   1       4604     4607     4615     4608
+   1       4604     4607     4614     4615
+   1       4607     4608     4636     4615
+   1       4607     4614     4615     4636
+   1       4613      642     4617     4619
+   1       4615     4617      647     4643
+   1       4616     4619     4643      718
+   1       4613     4615     4616     4619
+   1       4613     4615     4619     4617
+   1       4615     4616     4619     4643
+   1       4615     4617     4643     4619
+   1       4614      646     4638     4636
+   1       4615     4636     4643      647
+   1       4616     4638      718     4643
+   1       4614     4615     4638     4616
+   1       4614     4615     4636     4638
+   1       4615     4616     4643     4638
+   1       4615     4636     4638     4643
+   1       1611       97     1616     1615
+   1       4624     1615     4663      652
+   1       4625     1616      653     4663
+   1       1611     4624     1616     4625
+   1       1611     4624     1615     1616
+   1       4624     4625     4663     1616
+   1       4624     1615     1616     4663
+   1       4641      652     4664     1835
+   1       1834     1835     1837      115
+   1       4645     4664      720     1837
+   1       4641     1834     4664     4645
+   1       4641     1834     1835     4664
+   1       1834     4645     1837     4664
+   1       1834     1835     4664     1837
+   1       4646      653     1843     4666
+   1       4650     4666     1847      720
+   1       1842     1843      116     1847
+   1       4646     4650     1843     1842
+   1       4646     4650     4666     1843
+   1       4650     1842     1847     1843
+   1       4650     4666     1843     1847
+   1       4621      647     4642     4640
+   1       4622     4640     4646      648
+   1       4625     4642      653     4646
+   1       4621     4622     4642     4625
+   1       4621     4622     4640     4642
+   1       4622     4625     4646     4642
+   1       4622     4640     4642     4646
+   1       4621      647     4641     4642
+   1       4624     4641      652     4663
+   1       4625     4642     4663      653
+   1       4621     4624     4625     4642
+   1       4621     4624     4642     4641
+   1       4624     4625     4642     4663
+   1       4624     4641     4663     4642
+   1       4640      648     4650     4646
+   1       4642     4646     4666      653
+   1       4645     4650      720     4666
+   1       4640     4642     4650     4645
+   1       4640     4642     4646     4650
+   1       4642     4645     4666     4650
+   1       4642     4646     4650     4666
+   1       4641      652     4663     4664
+   1       4642     4663      653     4666
+   1       4645     4664     4666      720
+   1       4641     4642     4645     4664
+   1       4641     4642     4664     4663
+   1       4642     4645     4664     4666
+   1       4642     4663     4666     4664
+   1       1825      114     1826     1827
+   1       4638     1826      718     4902
+   1       4639     1827     4902      719
+   1       1825     4638     4639     1827
+   1       1825     4638     1827     1826
+   1       4638     4639     1827     4902
+   1       4638     1826     4902     1827
+   1       4643      718     1836     4903
+   1       1834     1836      115     1837
+   1       4645     4903     1837      720
+   1       4643     1834     4645     4903
+   1       4643     1834     4903     1836
+   1       1834     4645     4903     1837
+   1       1834     1836     1837     4903
+   1       4649      719     4904     1846
+   1       4650     4904      720     1847
+   1       1842     1846     1847      116
+   1       4649     4650     1842     1846
+   1       4649     4650     1846     4904
+   1       4650     1842     1846     1847
+   1       4650     4904     1847     1846
+   1       4636      647     4640     4644
+   1       4637     4640      648     4649
+   1       4639     4644     4649      719
+   1       4636     4637     4639     4644
+   1       4636     4637     4644     4640
+   1       4637     4639     4644     4649
+   1       4637     4640     4649     4644
+   1       4636      647     4644     4643
+   1       4638     4643     4902      718
+   1       4639     4644      719     4902
+   1       4636     4638     4644     4639
+   1       4636     4638     4643     4644
+   1       4638     4639     4902     4644
+   1       4638     4643     4644     4902
+   1       4640      648     4649     4650
+   1       4644     4649      719     4904
+   1       4645     4650     4904      720
+   1       4640     4644     4645     4650
+   1       4640     4644     4650     4649
+   1       4644     4645     4650     4904
+   1       4644     4649     4904     4650
+   1       4643      718     4903     4902
+   1       4644     4902     4904      719
+   1       4645     4903      720     4904
+   1       4643     4644     4903     4645
+   1       4643     4644     4902     4903
+   1       4644     4645     4904     4903
+   1       4644     4902     4903     4904
+   1        746        4      749      747
+   1       2021      749      145     2026
+   1       2019      747     2026      143
+   1        746     2021     2019      747
+   1        746     2021      747      749
+   1       2021     2019      747     2026
+   1       2021      749     2026      747
+   1       2035      145     1086     2036
+   1       1088     1086       47     1089
+   1       3597     2036     1089      410
+   1       2035     1088     3597     2036
+   1       2035     1088     2036     1086
+   1       1088     3597     2036     1089
+   1       1088     1086     1089     2036
+   1       2027      143     2029     1071
+   1       3587     2029      410     1074
+   1       1073     1071     1074       45
+   1       2027     3587     1073     1071
+   1       2027     3587     1071     2029
+   1       3587     1073     1071     1074
+   1       3587     2029     1074     1071
+   1       2025      405     3584     2028
+   1       2023     3584      403     2027
+   1       2019     2028     2027      143
+   1       2025     2023     2019     2028
+   1       2025     2023     2028     3584
+   1       2023     2019     2028     2027
+   1       2023     3584     2027     2028
+   1       2025      405     2028     2035
+   1       2021     2035     2026      145
+   1       2019     2028      143     2026
+   1       2025     2021     2028     2019
+   1       2025     2021     2035     2028
+   1       2021     2019     2026     2028
+   1       2021     2035     2028     2026
+   1       3584      403     2027     3587
+   1       2028     2027      143     2029
+   1       3597     3587     2029      410
+   1       3584     2028     3597     3587
+   1       3584     2028     3587     2027
+   1       2028     3597     3587     2029
+   1       2028     2027     2029     3587
+   1       2035      145     2036     2026
+   1       2028     2026     2029      143
+   1       3597     2036      410     2029
+   1       2035     2028     2036     3597
+   1       2035     2028     2026     2036
+   1       2028     3597     2029     2036
+   1       2028     2026     2036     2029
+   1       1092       47     1087     1093
+   1       2970     1087      284     2971
+   1       3653     1093     2971      420
+   1       1092     2970     3653     1093
+   1       1092     2970     1093     1087
+   1       2970     3653     1093     2971
+   1       2970     1087     2971     1093
+   1       2967      284      888     2968
+   1        890      888       23      893
+   1       2983     2968      893      289
+   1       2967      890     2983     2968
+   1       2967      890     2968      888
+   1        890     2983     2968      893
+   1        890      888      893     2968
+   1       3658      420     3013     1851
+   1       3014     3013      289     1849
+   1       1853     1851     1849      117
+   1       3658     3014     1853     1851
+   1       3658     3014     1851     3013
+   1       3014     1853     1851     1849
+   1       3014     3013     1849     1851
+   1       2985      286     2989     2986
+   1       3656     2989      625     3658
+   1       3653     2986     3658      420
+   1       2985     3656     3653     2986
+   1       2985     3656     2986     2989
+   1       3656     3653     2986     3658
+   1       3656     2989     3658     2986
+   1       2985      286     2986     2967
+   1       2970     2967     2971      284
+   1       3653     2986      420     2971
+   1       2985     2970     2986     3653
+   1       2985     2970     2967     2986
+   1       2970     3653     2971     2986
+   1       2970     2967     2986     2971
+   1       2989      625     3658     3014
+   1       2986     3658      420     3013
+   1       2983     3014     3013      289
+   1       2989     2986     2983     3014
+   1       2989     2986     3014     3658
+   1       2986     2983     3014     3013
+   1       2986     3658     3013     3014
+   1       2967      284     2968     2971
+   1       2986     2971     3013      420
+   1       2983     2968      289     3013
+   1       2967     2986     2968     2983
+   1       2967     2986     2971     2968
+   1       2986     2983     3013     2968
+   1       2986     2971     2968     3013
+   1       1075       45     1077     1072
+   1       3623     1077      413     2875
+   1       2874     1072     2875      269
+   1       1075     3623     2874     1072
+   1       1075     3623     1072     1077
+   1       3623     2874     1072     2875
+   1       3623     1077     2875     1072
+   1       3633      413     1850     2906
+   1       1852     1850      117     1848
+   1       2907     2906     1848      274
+   1       3633     1852     2907     2906
+   1       3633     1852     2906     1850
+   1       1852     2907     2906     1848
+   1       1852     1850     1848     2906
+   1       2872      269     2873      873
+   1       2884     2873      274      878
+   1        875      873      878       21
+   1       2872     2884      875      873
+   1       2872     2884      873     2873
+   1       2884      875      873      878
+   1       2884     2873      878      873
+   1       3625      617     2888     2876
+   1       2885     2888      271     2872
+   1       2874     2876     2872      269
+   1       3625     2885     2874     2876
+   1       3625     2885     2876     2888
+   1       2885     2874     2876     2872
+   1       2885     2888     2872     2876
+   1       3625      617     2876     3633
+   1       3623     3633     2875      413
+   1       2874     2876      269     2875
+   1       3625     3623     2876     2874
+   1       3625     3623     3633     2876
+   1       3623     2874     2875     2876
+   1       3623     3633     2876     2875
+   1       2888      271     2872     2884
+   1       2876     2872      269     2873
+   1       2907     2884     2873      274
+   1       2888     2876     2907     2884
+   1       2888     2876     2884     2872
+   1       2876     2907     2884     2873
+   1       2876     2872     2873     2884
+   1       3633      413     2906     2875
+   1       2876     2875     2873      269
+   1       2907     2906      274     2873
+   1       3633     2876     2906     2907
+   1       3633     2876     2875     2906
+   1       2876     2907     2873     2906
+   1       2876     2875     2906     2873
+   1       1544       92     1549     1545
+   1       3616     1549      614     3629
+   1       3613     1545     3629      412
+   1       1544     3616     3613     1545
+   1       1544     3616     1545     1549
+   1       3616     3613     1545     3629
+   1       3616     1549     3629     1545
+   1       3607      614     1524     3624
+   1       1520     1524       90     1521
+   1       3605     3624     1521      411
+   1       3607     1520     3605     3624
+   1       3607     1520     3624     1524
+   1       1520     3605     3624     1521
+   1       1520     1524     1521     3624
+   1       3589      412     3622     1076
+   1       3588     3622      411     1075
+   1       1073     1076     1075       45
+   1       3589     3588     1073     1076
+   1       3589     3588     1076     3622
+   1       3588     1073     1076     1075
+   1       3588     3622     1075     1076
+   1       3604      407     3585     3606
+   1       3586     3585      403     3589
+   1       3613     3606     3589      412
+   1       3604     3586     3613     3606
+   1       3604     3586     3606     3585
+   1       3586     3613     3606     3589
+   1       3586     3585     3589     3606
+   1       3604      407     3606     3607
+   1       3616     3607     3629      614
+   1       3613     3606      412     3629
+   1       3604     3616     3606     3613
+   1       3604     3616     3607     3606
+   1       3616     3613     3629     3606
+   1       3616     3607     3606     3629
+   1       3585      403     3589     3588
+   1       3606     3589      412     3622
+   1       3605     3588     3622      411
+   1       3585     3606     3605     3588
+   1       3585     3606     3588     3589
+   1       3606     3605     3588     3622
+   1       3606     3589     3622     3588
+   1       3607      614     3624     3629
+   1       3606     3629     3622      412
+   1       3605     3624      411     3622
+   1       3607     3606     3624     3605
+   1       3607     3606     3629     3624
+   1       3606     3605     3622     3624
+   1       3606     3629     3624     3622
+   1       1544       92     1545     1546
+   1       3615     1546     3627      419
+   1       3613     1545      412     3627
+   1       1544     3615     1545     3613
+   1       1544     3615     1546     1545
+   1       3615     3613     3627     1545
+   1       3615     1546     1545     3627
+   1       3601      419     3620     1092
+   1       1088     1092     1089       47
+   1       3597     3620      410     1089
+   1       3601     1088     3620     3597
+   1       3601     1088     1092     3620
+   1       1088     3597     1089     3620
+   1       1088     1092     3620     1089
+   1       3589      412     1076     3618
+   1       3587     3618     1074      410
+   1       1073     1076       45     1074
+   1       3589     3587     1076     1073
+   1       3589     3587     3618     1076
+   1       3587     1073     1074     1076
+   1       3587     3618     1076     1074
+   1       3596      405     3598     3584
+   1       3586     3584     3589      403
+   1       3613     3598      412     3589
+   1       3596     3586     3598     3613
+   1       3596     3586     3584     3598
+   1       3586     3613     3589     3598
+   1       3586     3584     3598     3589
+   1       3596      405     3601     3598
+   1       3615     3601      419     3627
+   1       3613     3598     3627      412
+   1       3596     3615     3613     3598
+   1       3596     3615     3598     3601
+   1       3615     3613     3598     3627
+   1       3615     3601     3627     3598
+   1       3584      403     3587     3589
+   1       3598     3589     3618      412
+   1       3597     3587      410     3618
+   1       3584     3598     3587     3597
+   1       3584     3598     3589     3587
+   1       3598     3597     3618     3587
+   1       3598     3589     3587     3618
+   1       3601      419     3627     3620
+   1       3598     3627      412     3618
+   1       3597     3620     3618      410
+   1       3601     3598     3597     3620
+   1       3601     3598     3620     3627
+   1       3598     3597     3620     3618
+   1       3598     3627     3618     3620
+   1       1524       90     1521     1527
+   1       3624     1521      411     3625
+   1       4496     1527     3625      617
+   1       1524     3624     4496     1527
+   1       1524     3624     1527     1521
+   1       3624     4496     1527     3625
+   1       3624     1521     3625     1527
+   1       3622      411     1075     3623
+   1       1076     1075       45     1077
+   1       3626     3623     1077      413
+   1       3622     1076     3626     3623
+   1       3622     1076     3623     1075
+   1       1076     3626     3623     1077
+   1       1076     1075     1077     3623
+   1       4506      617     3633     1852
+   1       3634     3633      413     1850
+   1       1853     1852     1850      117
+   1       4506     3634     1853     1852
+   1       4506     3634     1852     3633
+   1       3634     1853     1852     1850
+   1       3634     3633     1850     1852
+   1       3629      412     3631     3630
+   1       4498     3631      625     4506
+   1       4496     3630     4506      617
+   1       3629     4498     4496     3630
+   1       3629     4498     3630     3631
+   1       4498     4496     3630     4506
+   1       4498     3631     4506     3630
+   1       3629      412     3630     3622
+   1       3624     3622     3625      411
+   1       4496     3630      617     3625
+   1       3629     3624     3630     4496
+   1       3629     3624     3622     3630
+   1       3624     4496     3625     3630
+   1       3624     3622     3630     3625
+   1       3631      625     4506     3634
+   1       3630     4506      617     3633
+   1       3626     3634     3633      413
+   1       3631     3630     3626     3634
+   1       3631     3630     3634     4506
+   1       3630     3626     3634     3633
+   1       3630     4506     3633     3634
+   1       3622      411     3623     3625
+   1       3630     3625     3633      617
+   1       3626     3623      413     3633
+   1       3622     3630     3623     3626
+   1       3622     3630     3625     3623
+   1       3630     3626     3633     3623
+   1       3630     3625     3623     3633
+   1       1092       47     1093     1089
+   1       3620     1089     3621      410
+   1       3653     1093      420     3621
+   1       1092     3620     1093     3653
+   1       1092     3620     1089     1093
+   1       3620     3653     3621     1093
+   1       3620     1089     1093     3621
+   1       3618      410     3619     1074
+   1       1076     1074     1077       45
+   1       3626     3619      413     1077
+   1       3618     1076     3619     3626
+   1       3618     1076     1074     3619
+   1       1076     3626     1077     3619
+   1       1076     1074     3619     1077
+   1       3658      420     1851     3632
+   1       3634     3632     1850      413
+   1       1853     1851      117     1850
+   1       3658     3634     1851     1853
+   1       3658     3634     3632     1851
+   1       3634     1853     1850     1851
+   1       3634     3632     1851     1850
+   1       3627      412     3628     3631
+   1       3656     3631     3658      625
+   1       3653     3628      420     3658
+   1       3627     3656     3628     3653
+   1       3627     3656     3631     3628
+   1       3656     3653     3658     3628
+   1       3656     3631     3628     3658
+   1       3627      412     3618     3628
+   1       3620     3618      410     3621
+   1       3653     3628     3621      420
+   1       3627     3620     3653     3628
+   1       3627     3620     3628     3618
+   1       3620     3653     3628     3621
+   1       3620     3618     3621     3628
+   1       3631      625     3634     3658
+   1       3628     3658     3632      420
+   1       3626     3634      413     3632
+   1       3631     3628     3634     3626
+   1       3631     3628     3658     3634
+   1       3628     3626     3632     3634
+   1       3628     3658     3634     3632
+   1       3618      410     3621     3619
+   1       3628     3621      420     3632
+   1       3626     3619     3632      413
+   1       3618     3628     3626     3619
+   1       3618     3628     3619     3621
+   1       3628     3626     3619     3632
+   1       3628     3621     3632     3619
+   1        892       23      889      895
+   1       2974      889      285     2975
+   1       3004      895     2975      291
+   1        892     2974     3004      895
+   1        892     2974      895      889
+   1       2974     3004      895     2975
+   1       2974      889     2975      895
+   1       2977      285     1214     2978
+   1       1218     1214       62     1220
+   1       4013     2978     1220      498
+   1       2977     1218     4013     2978
+   1       2977     1218     2978     1214
+   1       1218     4013     2978     1220
+   1       1218     1214     1220     2978
+   1       3025      291     3023     1888
+   1       4025     3023      498     1891
+   1       1894     1888     1891      121
+   1       3025     4025     1894     1888
+   1       3025     4025     1888     3023
+   1       4025     1894     1888     1891
+   1       4025     3023     1891     1888
+   1       3006      496     4016     3022
+   1       3010     4016      703     3025
+   1       3004     3022     3025      291
+   1       3006     3010     3004     3022
+   1       3006     3010     3022     4016
+   1       3010     3004     3022     3025
+   1       3010     4016     3025     3022
+   1       3006      496     3022     2977
+   1       2974     2977     2975      285
+   1       3004     3022      291     2975
+   1       3006     2974     3022     3004
+   1       3006     2974     2977     3022
+   1       2974     3004     2975     3022
+   1       2974     2977     3022     2975
+   1       4016      703     3025     4025
+   1       3022     3025      291     3023
+   1       4013     4025     3023      498
+   1       4016     3022     4013     4025
+   1       4016     3022     4025     3025
+   1       3022     4013     4025     3023
+   1       3022     3025     3023     4025
+   1       2977      285     2978     2975
+   1       3022     2975     3023      291
+   1       4013     2978      498     3023
+   1       2977     3022     2978     4013
+   1       2977     3022     2975     2978
+   1       3022     4013     3023     2978
+   1       3022     2975     2978     3023
+   1       1215       62     1213     1216
+   1       2112     1213      160     2114
+   1       3944     1216     2114      494
+   1       1215     2112     3944     1216
+   1       1215     2112     1216     1213
+   1       2112     3944     1216     2114
+   1       2112     1213     2114     1216
+   1       2100      160      764     2110
+   1        763      764        8      766
+   1       2102     2110      766      162
+   1       2100      763     2102     2110
+   1       2100      763     2110      764
+   1        763     2102     2110      766
+   1        763      764      766     2110
+   1       3957      494     2120     1231
+   1       2119     2120      162     1228
+   1       1230     1231     1228       64
+   1       3957     2119     1230     1231
+   1       3957     2119     1231     2120
+   1       2119     1230     1231     1228
+   1       2119     2120     1228     1231
+   1       2104      159     2106     2108
+   1       3939     2106      486     3957
+   1       3944     2108     3957      494
+   1       2104     3939     3944     2108
+   1       2104     3939     2108     2106
+   1       3939     3944     2108     3957
+   1       3939     2106     3957     2108
+   1       2104      159     2108     2100
+   1       2112     2100     2114      160
+   1       3944     2108      494     2114
+   1       2104     2112     2108     3944
+   1       2104     2112     2100     2108
+   1       2112     3944     2114     2108
+   1       2112     2100     2108     2114
+   1       2106      486     3957     2119
+   1       2108     3957      494     2120
+   1       2102     2119     2120      162
+   1       2106     2108     2102     2119
+   1       2106     2108     2119     3957
+   1       2108     2102     2119     2120
+   1       2108     3957     2120     2119
+   1       2100      160     2110     2114
+   1       2108     2114     2120      494
+   1       2102     2110      162     2120
+   1       2100     2108     2110     2102
+   1       2100     2108     2114     2110
+   1       2108     2102     2120     2110
+   1       2108     2114     2110     2120
+   1       1895      121     1892     1889
+   1       4037     1892      504     3153
+   1       3155     1889     3153      313
+   1       1895     4037     3155     1889
+   1       1895     4037     1889     1892
+   1       4037     3155     1889     3153
+   1       4037     1892     3153     1889
+   1       4035      504     1233     3133
+   1       1232     1233       64     1229
+   1       3132     3133     1229      309
+   1       4035     1232     3132     3133
+   1       4035     1232     3133     1233
+   1       1232     3132     3133     1229
+   1       1232     1233     1229     3133
+   1       3142      313     3131      917
+   1       3130     3131      309      913
+   1        915      917      913       26
+   1       3142     3130      915      917
+   1       3142     3130      917     3131
+   1       3130      915      917      913
+   1       3130     3131      913      917
+   1       4036      503     3143     3152
+   1       3146     3143      311     3142
+   1       3155     3152     3142      313
+   1       4036     3146     3155     3152
+   1       4036     3146     3152     3143
+   1       3146     3155     3152     3142
+   1       3146     3143     3142     3152
+   1       4036      503     3152     4035
+   1       4037     4035     3153      504
+   1       3155     3152      313     3153
+   1       4036     4037     3152     3155
+   1       4036     4037     4035     3152
+   1       4037     3155     3153     3152
+   1       4037     4035     3152     3153
+   1       3143      311     3142     3130
+   1       3152     3142      313     3131
+   1       3132     3130     3131      309
+   1       3143     3152     3132     3130
+   1       3143     3152     3130     3142
+   1       3152     3132     3130     3131
+   1       3152     3142     3131     3130
+   1       4035      504     3133     3153
+   1       3152     3153     3131      313
+   1       3132     3133      309     3131
+   1       4035     3152     3133     3132
+   1       4035     3152     3153     3133
+   1       3152     3132     3131     3133
+   1       3152     3153     3133     3131
+   1       1207       61     1209     1211
+   1       3967     1209      490     3980
+   1       3969     1211     3980      492
+   1       1207     3967     3969     1211
+   1       1207     3967     1211     1209
+   1       3967     3969     1211     3980
+   1       3967     1209     3980     1211
+   1       3982      490     1796     3983
+   1       1801     1796      112     1803
+   1       4854     3983     1803      714
+   1       3982     1801     4854     3983
+   1       3982     1801     3983     1796
+   1       1801     4854     3983     1803
+   1       1801     1796     1803     3983
+   1       3996      492     3997     1890
+   1       4859     3997      714     1895
+   1       1894     1890     1895      121
+   1       3996     4859     1894     1890
+   1       3996     4859     1890     3997
+   1       4859     1894     1890     1895
+   1       4859     3997     1895     1890
+   1       3972      700     4853     3995
+   1       3974     4853      703     3996
+   1       3969     3995     3996      492
+   1       3972     3974     3969     3995
+   1       3972     3974     3995     4853
+   1       3974     3969     3995     3996
+   1       3974     4853     3996     3995
+   1       3972      700     3995     3982
+   1       3967     3982     3980      490
+   1       3969     3995      492     3980
+   1       3972     3967     3995     3969
+   1       3972     3967     3982     3995
+   1       3967     3969     3980     3995
+   1       3967     3982     3995     3980
+   1       4853      703     3996     4859
+   1       3995     3996      492     3997
+   1       4854     4859     3997      714
+   1       4853     3995     4854     4859
+   1       4853     3995     4859     3996
+   1       3995     4854     4859     3997
+   1       3995     3996     3997     4859
+   1       3982      490     3983     3980
+   1       3995     3980     3997      492
+   1       4854     3983      714     3997
+   1       3982     3995     3983     4854
+   1       3982     3995     3980     3983
+   1       3995     4854     3997     3983
+   1       3995     3980     3983     3997
+   1       1207       61     1211     1203
+   1       3941     1203     3943      484
+   1       3969     1211      492     3943
+   1       1207     3941     1211     3969
+   1       1207     3941     1203     1211
+   1       3941     3969     3943     1211
+   1       3941     1203     1211     3943
+   1       3946      484     3948     1215
+   1       1218     1215     1220       62
+   1       4013     3948      498     1220
+   1       3946     1218     3948     4013
+   1       3946     1218     1215     3948
+   1       1218     4013     1220     3948
+   1       1218     1215     3948     1220
+   1       3996      492     1890     3992
+   1       4025     3992     1891      498
+   1       1894     1890      121     1891
+   1       3996     4025     1890     1894
+   1       3996     4025     3992     1890
+   1       4025     1894     1891     1890
+   1       4025     3992     1890     1891
+   1       3970      496     3991     4016
+   1       3974     4016     3996      703
+   1       3969     3991      492     3996
+   1       3970     3974     3991     3969
+   1       3970     3974     4016     3991
+   1       3974     3969     3996     3991
+   1       3974     4016     3991     3996
+   1       3970      496     3946     3991
+   1       3941     3946      484     3943
+   1       3969     3991     3943      492
+   1       3970     3941     3969     3991
+   1       3970     3941     3991     3946
+   1       3941     3969     3991     3943
+   1       3941     3946     3943     3991
+   1       4016      703     4025     3996
+   1       3991     3996     3992      492
+   1       4013     4025      498     3992
+   1       4016     3991     4025     4013
+   1       4016     3991     3996     4025
+   1       3991     4013     3992     4025
+   1       3991     3996     4025     3992
+   1       3946      484     3943     3948
+   1       3991     3943      492     3992
+   1       4013     3948     3992      498
+   1       3946     3991     4013     3948
+   1       3946     3991     3948     3943
+   1       3991     4013     3948     3992
+   1       3991     3943     3992     3948
+   1       1796      112     1803     1797
+   1       3983     1803      714     4036
+   1       3981     1797     4036      503
+   1       1796     3983     3981     1797
+   1       1796     3983     1797     1803
+   1       3983     3981     1797     4036
+   1       3983     1803     4036     1797
+   1       3997      714     1895     4037
+   1       1890     1895      121     1892
+   1       3994     4037     1892      504
+   1       3997     1890     3994     4037
+   1       3997     1890     4037     1895
+   1       1890     3994     4037     1892
+   1       1890     1895     1892     4037
+   1       3958      503     4035     1232
+   1       3959     4035      504     1233
+   1       1230     1232     1233       64
+   1       3958     3959     1230     1232
+   1       3958     3959     1232     4035
+   1       3959     1230     1232     1233
+   1       3959     4035     1233     1232
+   1       3980      492     3956     3993
+   1       3955     3956      486     3958
+   1       3981     3993     3958      503
+   1       3980     3955     3981     3993
+   1       3980     3955     3993     3956
+   1       3955     3981     3993     3958
+   1       3955     3956     3958     3993
+   1       3980      492     3993     3997
+   1       3983     3997     4036      714
+   1       3981     3993      503     4036
+   1       3980     3983     3993     3981
+   1       3980     3983     3997     3993
+   1       3983     3981     4036     3993
+   1       3983     3997     3993     4036
+   1       3956      486     3958     3959
+   1       3993     3958      503     4035
+   1       3994     3959     4035      504
+   1       3956     3993     3994     3959
+   1       3956     3993     3959     3958
+   1       3993     3994     3959     4035
+   1       3993     3958     4035     3959
+   1       3997      714     4037     4036
+   1       3993     4036     4035      503
+   1       3994     4037      504     4035
+   1       3997     3993     4037     3994
+   1       3997     3993     4036     4037
+   1       3993     3994     4035     4037
+   1       3993     4036     4037     4035
+   1       1215       62     1216     1220
+   1       3948     1220     4006      498
+   1       3944     1216      494     4006
+   1       1215     3948     1216     3944
+   1       1215     3948     1220     1216
+   1       3948     3944     4006     1216
+   1       3948     1220     1216     4006
+   1       3992      498     4024     1891
+   1       1890     1891     1892      121
+   1       3994     4024      504     1892
+   1       3992     1890     4024     3994
+   1       3992     1890     1891     4024
+   1       1890     3994     1892     4024
+   1       1890     1891     4024     1892
+   1       3957      494     1231     4007
+   1       3959     4007     1233      504
+   1       1230     1231       64     1233
+   1       3957     3959     1231     1230
+   1       3957     3959     4007     1231
+   1       3959     1230     1233     1231
+   1       3959     4007     1231     1233
+   1       3943      492     3990     3956
+   1       3939     3956     3957      486
+   1       3944     3990      494     3957
+   1       3943     3939     3990     3944
+   1       3943     3939     3956     3990
+   1       3939     3944     3957     3990
+   1       3939     3956     3990     3957
+   1       3943      492     3992     3990
+   1       3948     3992      498     4006
+   1       3944     3990     4006      494
+   1       3943     3948     3944     3990
+   1       3943     3948     3990     3992
+   1       3948     3944     3990     4006
+   1       3948     3992     4006     3990
+   1       3956      486     3959     3957
+   1       3990     3957     4007      494
+   1       3994     3959      504     4007
+   1       3956     3990     3959     3994
+   1       3956     3990     3957     3959
+   1       3990     3994     4007     3959
+   1       3990     3957     3959     4007
+   1       3992      498     4006     4024
+   1       3990     4006      494     4007
+   1       3994     4024     4007      504
+   1       3992     3990     3994     4024
+   1       3992     3990     4024     4006
+   1       3990     3994     4024     4007
+   1       3990     4006     4007     4024
+   1        876       21      879      874
+   1       2890      879      275     2878
+   1       2877      874     2878      270
+   1        876     2890     2877      874
+   1        876     2890      874      879
+   1       2890     2877      874     2878
+   1       2890      879     2878      874
+   1       2911      275     1858     2910
+   1       1862     1858      118     1860
+   1       3764     2910     1860      446
+   1       2911     1862     3764     2910
+   1       2911     1862     2910     1858
+   1       1862     3764     2910     1860
+   1       1862     1858     1860     2910
+   1       2879      270     2880     1132
+   1       3754     2880      446     1137
+   1       1135     1132     1137       53
+   1       2879     3754     1135     1132
+   1       2879     3754     1132     2880
+   1       3754     1135     1132     1137
+   1       3754     2880     1137     1132
+   1       2894      664     3756     2881
+   1       2891     3756      444     2879
+   1       2877     2881     2879      270
+   1       2894     2891     2877     2881
+   1       2894     2891     2881     3756
+   1       2891     2877     2881     2879
+   1       2891     3756     2879     2881
+   1       2894      664     2881     2911
+   1       2890     2911     2878      275
+   1       2877     2881      270     2878
+   1       2894     2890     2881     2877
+   1       2894     2890     2911     2881
+   1       2890     2877     2878     2881
+   1       2890     2911     2881     2878
+   1       3756      444     2879     3754
+   1       2881     2879      270     2880
+   1       3764     3754     2880      446
+   1       3756     2881     3764     3754
+   1       3756     2881     3754     2879
+   1       2881     3764     3754     2880
+   1       2881     2879     2880     3754
+   1       2911      275     2910     2878
+   1       2881     2878     2880      270
+   1       3764     2910      446     2880
+   1       2911     2881     2910     3764
+   1       2911     2881     2878     2910
+   1       2881     3764     2880     2910
+   1       2881     2878     2910     2880
+   1       1863      118     1859     1861
+   1       3149     1859      312     3148
+   1       3768     1861     3148      448
+   1       1863     3149     3768     1861
+   1       1863     3149     1861     1859
+   1       3149     3768     1861     3148
+   1       3149     1859     3148     1861
+   1       3135      312      916     3127
+   1        914      916       26      912
+   1       3126     3127      912      308
+   1       3135      914     3126     3127
+   1       3135      914     3127      916
+   1        914     3126     3127      912
+   1        914      916      912     3127
+   1       3766      448     3129     1143
+   1       3128     3129      308     1139
+   1       1142     1143     1139       54
+   1       3766     3128     1142     1143
+   1       3766     3128     1143     3129
+   1       3128     1142     1143     1139
+   1       3128     3129     1139     1143
+   1       3139      310     3136     3137
+   1       3767     3136      447     3766
+   1       3768     3137     3766      448
+   1       3139     3767     3768     3137
+   1       3139     3767     3137     3136
+   1       3767     3768     3137     3766
+   1       3767     3136     3766     3137
+   1       3139      310     3137     3135
+   1       3149     3135     3148      312
+   1       3768     3137      448     3148
+   1       3139     3149     3137     3768
+   1       3139     3149     3135     3137
+   1       3149     3768     3148     3137
+   1       3149     3135     3137     3148
+   1       3136      447     3766     3128
+   1       3137     3766      448     3129
+   1       3126     3128     3129      308
+   1       3136     3137     3126     3128
+   1       3136     3137     3128     3766
+   1       3137     3126     3128     3129
+   1       3137     3766     3129     3128
+   1       3135      312     3127     3148
+   1       3137     3148     3129      448
+   1       3126     3127      308     3129
+   1       3135     3137     3127     3126
+   1       3135     3137     3148     3127
+   1       3137     3126     3129     3127
+   1       3137     3148     3127     3129
+   1       1133       53     1134     1131
+   1       3735     1134      443     2062
+   1       2060     1131     2062      151
+   1       1133     3735     2060     1131
+   1       1133     3735     1131     1134
+   1       3735     2060     1131     2062
+   1       3735     1134     2062     1131
+   1       3739      443     1141     2064
+   1       1140     1141       54     1138
+   1       2063     2064     1138      152
+   1       3739     1140     2063     2064
+   1       3739     1140     2064     1141
+   1       1140     2063     2064     1138
+   1       1140     1141     1138     2064
+   1       2055      151     2059      755
+   1       2056     2059      152      756
+   1        754      755      756        6
+   1       2055     2056      754      755
+   1       2055     2056      755     2059
+   1       2056      754      755      756
+   1       2056     2059      756      755
+   1       3732      440     2058     2061
+   1       2057     2058      150     2055
+   1       2060     2061     2055      151
+   1       3732     2057     2060     2061
+   1       3732     2057     2061     2058
+   1       2057     2060     2061     2055
+   1       2057     2058     2055     2061
+   1       3732      440     2061     3739
+   1       3735     3739     2062      443
+   1       2060     2061      151     2062
+   1       3732     3735     2061     2060
+   1       3732     3735     3739     2061
+   1       3735     2060     2062     2061
+   1       3735     3739     2061     2062
+   1       2058      150     2055     2056
+   1       2061     2055      151     2059
+   1       2063     2056     2059      152
+   1       2058     2061     2063     2056
+   1       2058     2061     2056     2055
+   1       2061     2063     2056     2059
+   1       2061     2055     2059     2056
+   1       3739      443     2064     2062
+   1       2061     2062     2059      151
+   1       2063     2064      152     2059
+   1       3739     2061     2064     2063
+   1       3739     2061     2062     2064
+   1       2061     2063     2059     2064
+   1       2061     2062     2064     2059
+   1       1654      101     1650     1651
+   1       3748     1650      442     3746
+   1       3760     1651     3746      445
+   1       1654     3748     3760     1651
+   1       1654     3748     1651     1650
+   1       3748     3760     1651     3746
+   1       3748     1650     3746     1651
+   1       3742      442     1130     3734
+   1       1129     1130       52     1127
+   1       3733     3734     1127      439
+   1       3742     1129     3733     3734
+   1       3742     1129     3734     1130
+   1       1129     3733     3734     1127
+   1       1129     1130     1127     3734
+   1       3753      445     3737     1136
+   1       3736     3737      439     1133
+   1       1135     1136     1133       53
+   1       3753     3736     1135     1136
+   1       3753     3736     1136     3737
+   1       3736     1135     1136     1133
+   1       3736     3737     1133     1136
+   1       3745      441     3743     3744
+   1       3755     3743      444     3753
+   1       3760     3744     3753      445
+   1       3745     3755     3760     3744
+   1       3745     3755     3744     3743
+   1       3755     3760     3744     3753
+   1       3755     3743     3753     3744
+   1       3745      441     3744     3742
+   1       3748     3742     3746      442
+   1       3760     3744      445     3746
+   1       3745     3748     3744     3760
+   1       3745     3748     3742     3744
+   1       3748     3760     3746     3744
+   1       3748     3742     3744     3746
+   1       3743      444     3753     3736
+   1       3744     3753      445     3737
+   1       3733     3736     3737      439
+   1       3743     3744     3733     3736
+   1       3743     3744     3736     3753
+   1       3744     3733     3736     3737
+   1       3744     3753     3737     3736
+   1       3742      442     3734     3746
+   1       3744     3746     3737      445
+   1       3733     3734      439     3737
+   1       3742     3744     3734     3733
+   1       3742     3744     3746     3734
+   1       3744     3733     3737     3734
+   1       3744     3746     3734     3737
+   1       1654      101     1651     1657
+   1       4700     1657     3762      667
+   1       3760     1651      445     3762
+   1       1654     4700     1651     3760
+   1       1654     4700     1657     1651
+   1       4700     3760     3762     1651
+   1       4700     1657     1651     3762
+   1       4705      667     3765     1863
+   1       1862     1863     1860      118
+   1       3764     3765      446     1860
+   1       4705     1862     3765     3764
+   1       4705     1862     1863     3765
+   1       1862     3764     1860     3765
+   1       1862     1863     3765     1860
+   1       3753      445     1136     3757
+   1       3754     3757     1137      446
+   1       1135     1136       53     1137
+   1       3753     3754     1136     1135
+   1       3753     3754     3757     1136
+   1       3754     1135     1137     1136
+   1       3754     3757     1136     1137
+   1       4698      664     3761     3756
+   1       3755     3756     3753      444
+   1       3760     3761      445     3753
+   1       4698     3755     3761     3760
+   1       4698     3755     3756     3761
+   1       3755     3760     3753     3761
+   1       3755     3756     3761     3753
+   1       4698      664     4705     3761
+   1       4700     4705      667     3762
+   1       3760     3761     3762      445
+   1       4698     4700     3760     3761
+   1       4698     4700     3761     4705
+   1       4700     3760     3761     3762
+   1       4700     4705     3762     3761
+   1       3756      444     3754     3753
+   1       3761     3753     3757      445
+   1       3764     3754      446     3757
+   1       3756     3761     3754     3764
+   1       3756     3761     3753     3754
+   1       3761     3764     3757     3754
+   1       3761     3753     3754     3757
+   1       4705      667     3762     3765
+   1       3761     3762      445     3757
+   1       3764     3765     3757      446
+   1       4705     3761     3764     3765
+   1       4705     3761     3765     3762
+   1       3761     3764     3765     3757
+   1       3761     3762     3757     3765
+   1       1130       52     1127     1128
+   1       3734     1127      439     3732
+   1       3738     1128     3732      440
+   1       1130     3734     3738     1128
+   1       1130     3734     1128     1127
+   1       3734     3738     1128     3732
+   1       3734     1127     3732     1128
+   1       3737      439     1133     3735
+   1       1136     1133       53     1134
+   1       3749     3735     1134      443
+   1       3737     1136     3749     3735
+   1       3737     1136     3735     1133
+   1       1136     3749     3735     1134
+   1       1136     1133     1134     3735
+   1       3741      440     3739     1140
+   1       3751     3739      443     1141
+   1       1142     1140     1141       54
+   1       3741     3751     1142     1140
+   1       3741     3751     1140     3739
+   1       3751     1142     1140     1141
+   1       3751     3739     1141     1140
+   1       3746      445     3758     3740
+   1       3747     3758      447     3741
+   1       3738     3740     3741      440
+   1       3746     3747     3738     3740
+   1       3746     3747     3740     3758
+   1       3747     3738     3740     3741
+   1       3747     3758     3741     3740
+   1       3746      445     3740     3737
+   1       3734     3737     3732      439
+   1       3738     3740      440     3732
+   1       3746     3734     3740     3738
+   1       3746     3734     3737     3740
+   1       3734     3738     3732     3740
+   1       3734     3737     3740     3732
+   1       3758      447     3741     3751
+   1       3740     3741      440     3739
+   1       3749     3751     3739      443
+   1       3758     3740     3749     3751
+   1       3758     3740     3751     3741
+   1       3740     3749     3751     3739
+   1       3740     3741     3739     3751
+   1       3737      439     3735     3732
+   1       3740     3732     3739      440
+   1       3749     3735      443     3739
+   1       3737     3740     3735     3749
+   1       3737     3740     3732     3735
+   1       3740     3749     3739     3735
+   1       3740     3732     3735     3739
+   1       1863      118     1861     1860
+   1       3765     1860     3763      446
+   1       3768     1861      448     3763
+   1       1863     3765     1861     3768
+   1       1863     3765     1860     1861
+   1       3765     3768     3763     1861
+   1       3765     1860     1861     3763
+   1       3757      446     3750     1137
+   1       1136     1137     1134       53
+   1       3749     3750      443     1134
+   1       3757     1136     3750     3749
+   1       3757     1136     1137     3750
+   1       1136     3749     1134     3750
+   1       1136     1137     3750     1134
+   1       3766      448     1143     3752
+   1       3751     3752     1141      443
+   1       1142     1143       54     1141
+   1       3766     3751     1143     1142
+   1       3766     3751     3752     1143
+   1       3751     1142     1141     1143
+   1       3751     3752     1143     1141
+   1       3762      445     3759     3758
+   1       3767     3758     3766      447
+   1       3768     3759      448     3766
+   1       3762     3767     3759     3768
+   1       3762     3767     3758     3759
+   1       3767     3768     3766     3759
+   1       3767     3758     3759     3766
+   1       3762      445     3757     3759
+   1       3765     3757      446     3763
+   1       3768     3759     3763      448
+   1       3762     3765     3768     3759
+   1       3762     3765     3759     3757
+   1       3765     3768     3759     3763
+   1       3765     3757     3763     3759
+   1       3758      447     3751     3766
+   1       3759     3766     3752      448
+   1       3749     3751      443     3752
+   1       3758     3759     3751     3749
+   1       3758     3759     3766     3751
+   1       3759     3749     3752     3751
+   1       3759     3766     3751     3752
+   1       3757      446     3763     3750
+   1       3759     3763      448     3752
+   1       3749     3750     3752      443
+   1       3757     3759     3749     3750
+   1       3757     3759     3750     3763
+   1       3759     3749     3750     3752
+   1       3759     3763     3752     3750
+   1        848       18      850      852
+   1       2700      850      246     2718
+   1       2702      852     2718      248
+   1        848     2700     2702      852
+   1        848     2700      852      850
+   1       2700     2702      852     2718
+   1       2700      850     2718      852
+   1       2721      246     1629     2722
+   1       1633     1629       99     1636
+   1       4474     2722     1636      660
+   1       2721     1633     4474     2722
+   1       2721     1633     2722     1629
+   1       1633     4474     2722     1636
+   1       1633     1629     1636     2722
+   1       2736      248     2738     1742
+   1       4488     2738      660     1748
+   1       1745     1742     1748      108
+   1       2736     4488     1745     1742
+   1       2736     4488     1742     2738
+   1       4488     1745     1742     1748
+   1       4488     2738     1748     1742
+   1       2706      609     4473     2735
+   1       2708     4473      612     2736
+   1       2702     2735     2736      248
+   1       2706     2708     2702     2735
+   1       2706     2708     2735     4473
+   1       2708     2702     2735     2736
+   1       2708     4473     2736     2735
+   1       2706      609     2735     2721
+   1       2700     2721     2718      246
+   1       2702     2735      248     2718
+   1       2706     2700     2735     2702
+   1       2706     2700     2721     2735
+   1       2700     2702     2718     2735
+   1       2700     2721     2735     2718
+   1       4473      612     2736     4488
+   1       2735     2736      248     2738
+   1       4474     4488     2738      660
+   1       4473     2735     4474     4488
+   1       4473     2735     4488     2736
+   1       2735     4474     4488     2738
+   1       2735     2736     2738     4488
+   1       2721      246     2722     2718
+   1       2735     2718     2738      248
+   1       4474     2722      660     2738
+   1       2721     2735     2722     4474
+   1       2721     2735     2718     2722
+   1       2735     4474     2738     2722
+   1       2735     2718     2722     2738
+   1       1632       99     1628     1634
+   1       2535     1628      225     2536
+   1       4416     1634     2536      658
+   1       1632     2535     4416     1634
+   1       1632     2535     1634     1628
+   1       2535     4416     1634     2536
+   1       2535     1628     2536     1634
+   1       2525      225      829     2532
+   1        828      829       16      830
+   1       2526     2532      830      226
+   1       2525      828     2526     2532
+   1       2525      828     2532      829
+   1        828     2526     2532      830
+   1        828      829      830     2532
+   1       4420      658     2541     1644
+   1       2540     2541      226     1638
+   1       1642     1644     1638      100
+   1       4420     2540     1642     1644
+   1       4420     2540     1644     2541
+   1       2540     1642     1644     1638
+   1       2540     2541     1638     1644
+   1       2529      224     2530     2531
+   1       4413     2530      599     4420
+   1       4416     2531     4420      658
+   1       2529     4413     4416     2531
+   1       2529     4413     2531     2530
+   1       4413     4416     2531     4420
+   1       4413     2530     4420     2531
+   1       2529      224     2531     2525
+   1       2535     2525     2536      225
+   1       4416     2531      658     2536
+   1       2529     2535     2531     4416
+   1       2529     2535     2525     2531
+   1       2535     4416     2536     2531
+   1       2535     2525     2531     2536
+   1       2530      599     4420     2540
+   1       2531     4420      658     2541
+   1       2526     2540     2541      226
+   1       2530     2531     2526     2540
+   1       2530     2531     2540     4420
+   1       2531     2526     2540     2541
+   1       2531     4420     2541     2540
+   1       2525      225     2532     2536
+   1       2531     2536     2541      658
+   1       2526     2532      226     2541
+   1       2525     2531     2532     2526
+   1       2525     2531     2536     2532
+   1       2531     2526     2541     2532
+   1       2531     2536     2532     2541
+   1       1746      108     1749     1743
+   1       4503     1749      663     2900
+   1       2898     1743     2900      273
+   1       1746     4503     2898     1743
+   1       1746     4503     1743     1749
+   1       4503     2898     1743     2900
+   1       4503     1749     2900     1743
+   1       4500      663     1646     2893
+   1       1643     1646      100     1639
+   1       2892     2893     1639      272
+   1       4500     1643     2892     2893
+   1       4500     1643     2893     1646
+   1       1643     2892     2893     1639
+   1       1643     1646     1639     2893
+   1       2883      273     2889      877
+   1       2882     2889      272      876
+   1        875      877      876       21
+   1       2883     2882      875      877
+   1       2883     2882      877     2889
+   1       2882      875      877      876
+   1       2882     2889      876      877
+   1       4499      615     2886     2897
+   1       2887     2886      271     2883
+   1       2898     2897     2883      273
+   1       4499     2887     2898     2897
+   1       4499     2887     2897     2886
+   1       2887     2898     2897     2883
+   1       2887     2886     2883     2897
+   1       4499      615     2897     4500
+   1       4503     4500     2900      663
+   1       2898     2897      273     2900
+   1       4499     4503     2897     2898
+   1       4499     4503     4500     2897
+   1       4503     2898     2900     2897
+   1       4503     4500     2897     2900
+   1       2886      271     2883     2882
+   1       2897     2883      273     2889
+   1       2892     2882     2889      272
+   1       2886     2897     2892     2882
+   1       2886     2897     2882     2883
+   1       2897     2892     2882     2889
+   1       2897     2883     2889     2882
+   1       4500      663     2893     2900
+   1       2897     2900     2889      273
+   1       2892     2893      272     2889
+   1       4500     2897     2893     2892
+   1       4500     2897     2900     2893
+   1       2897     2892     2889     2893
+   1       2897     2900     2893     2889
+   1       1485       87     1486     1489
+   1       4402     1486      597     4409
+   1       4404     1489     4409      600
+   1       1485     4402     4404     1489
+   1       1485     4402     1489     1486
+   1       4402     4404     1489     4409
+   1       4402     1486     4409     1489
+   1       4410      597     1522     4412
+   1       1523     1522       90     1526
+   1       4464     4412     1526      616
+   1       4410     1523     4464     4412
+   1       4410     1523     4412     1522
+   1       1523     4464     4412     1526
+   1       1523     1522     1526     4412
+   1       4424      600     4426     1744
+   1       4486     4426      616     1746
+   1       1745     1744     1746      108
+   1       4424     4486     1745     1744
+   1       4424     4486     1744     4426
+   1       4486     1745     1744     1746
+   1       4486     4426     1746     1744
+   1       4405      607     4462     4422
+   1       4407     4462      612     4424
+   1       4404     4422     4424      600
+   1       4405     4407     4404     4422
+   1       4405     4407     4422     4462
+   1       4407     4404     4422     4424
+   1       4407     4462     4424     4422
+   1       4405      607     4422     4410
+   1       4402     4410     4409      597
+   1       4404     4422      600     4409
+   1       4405     4402     4422     4404
+   1       4405     4402     4410     4422
+   1       4402     4404     4409     4422
+   1       4402     4410     4422     4409
+   1       4462      612     4424     4486
+   1       4422     4424      600     4426
+   1       4464     4486     4426      616
+   1       4462     4422     4464     4486
+   1       4462     4422     4486     4424
+   1       4422     4464     4486     4426
+   1       4422     4424     4426     4486
+   1       4410      597     4412     4409
+   1       4422     4409     4426      600
+   1       4464     4412      616     4426
+   1       4410     4422     4412     4464
+   1       4410     4422     4409     4412
+   1       4422     4464     4426     4412
+   1       4422     4409     4412     4426
+   1       1485       87     1489     1487
+   1       4403     1487     4414      598
+   1       4404     1489      600     4414
+   1       1485     4403     1489     4404
+   1       1485     4403     1487     1489
+   1       4403     4404     4414     1489
+   1       4403     1487     1489     4414
+   1       4415      598     4417     1632
+   1       1633     1632     1636       99
+   1       4474     4417      660     1636
+   1       4415     1633     4417     4474
+   1       4415     1633     1632     4417
+   1       1633     4474     1636     4417
+   1       1633     1632     4417     1636
+   1       4424      600     1744     4428
+   1       4488     4428     1748      660
+   1       1745     1744      108     1748
+   1       4424     4488     1744     1745
+   1       4424     4488     4428     1744
+   1       4488     1745     1748     1744
+   1       4488     4428     1744     1748
+   1       4406      609     4423     4473
+   1       4407     4473     4424      612
+   1       4404     4423      600     4424
+   1       4406     4407     4423     4404
+   1       4406     4407     4473     4423
+   1       4407     4404     4424     4423
+   1       4407     4473     4423     4424
+   1       4406      609     4415     4423
+   1       4403     4415      598     4414
+   1       4404     4423     4414      600
+   1       4406     4403     4404     4423
+   1       4406     4403     4423     4415
+   1       4403     4404     4423     4414
+   1       4403     4415     4414     4423
+   1       4473      612     4488     4424
+   1       4423     4424     4428      600
+   1       4474     4488      660     4428
+   1       4473     4423     4488     4474
+   1       4473     4423     4424     4488
+   1       4423     4474     4428     4488
+   1       4423     4424     4488     4428
+   1       4415      598     4414     4417
+   1       4423     4414      600     4428
+   1       4474     4417     4428      660
+   1       4415     4423     4474     4417
+   1       4415     4423     4417     4414
+   1       4423     4474     4417     4428
+   1       4423     4414     4428     4417
+   1       1522       90     1526     1525
+   1       4412     1526      616     4499
+   1       4411     1525     4499      615
+   1       1522     4412     4411     1525
+   1       1522     4412     1525     1526
+   1       4412     4411     1525     4499
+   1       4412     1526     4499     1525
+   1       4426      616     1746     4503
+   1       1744     1746      108     1749
+   1       4429     4503     1749      663
+   1       4426     1744     4429     4503
+   1       4426     1744     4503     1746
+   1       1744     4429     4503     1749
+   1       1744     1746     1749     4503
+   1       4419      615     4500     1643
+   1       4421     4500      663     1646
+   1       1642     1643     1646      100
+   1       4419     4421     1642     1643
+   1       4419     4421     1643     4500
+   1       4421     1642     1643     1646
+   1       4421     4500     1646     1643
+   1       4409      600     4418     4425
+   1       4408     4418      599     4419
+   1       4411     4425     4419      615
+   1       4409     4408     4411     4425
+   1       4409     4408     4425     4418
+   1       4408     4411     4425     4419
+   1       4408     4418     4419     4425
+   1       4409      600     4425     4426
+   1       4412     4426     4499      616
+   1       4411     4425      615     4499
+   1       4409     4412     4425     4411
+   1       4409     4412     4426     4425
+   1       4412     4411     4499     4425
+   1       4412     4426     4425     4499
+   1       4418      599     4419     4421
+   1       4425     4419      615     4500
+   1       4429     4421     4500      663
+   1       4418     4425     4429     4421
+   1       4418     4425     4421     4419
+   1       4425     4429     4421     4500
+   1       4425     4419     4500     4421
+   1       4426      616     4503     4499
+   1       4425     4499     4500      615
+   1       4429     4503      663     4500
+   1       4426     4425     4503     4429
+   1       4426     4425     4499     4503
+   1       4425     4429     4500     4503
+   1       4425     4499     4503     4500
+   1       1632       99     1634     1636
+   1       4417     1636     4681      660
+   1       4416     1634      658     4681
+   1       1632     4417     1634     4416
+   1       1632     4417     1636     1634
+   1       4417     4416     4681     1634
+   1       4417     1636     1634     4681
+   1       4428      660     4691     1748
+   1       1744     1748     1749      108
+   1       4429     4691      663     1749
+   1       4428     1744     4691     4429
+   1       4428     1744     1748     4691
+   1       1744     4429     1749     4691
+   1       1744     1748     4691     1749
+   1       4420      658     1644     4683
+   1       4421     4683     1646      663
+   1       1642     1644      100     1646
+   1       4420     4421     1644     1642
+   1       4420     4421     4683     1644
+   1       4421     1642     1646     1644
+   1       4421     4683     1644     1646
+   1       4414      600     4427     4418
+   1       4413     4418     4420      599
+   1       4416     4427      658     4420
+   1       4414     4413     4427     4416
+   1       4414     4413     4418     4427
+   1       4413     4416     4420     4427
+   1       4413     4418     4427     4420
+   1       4414      600     4428     4427
+   1       4417     4428      660     4681
+   1       4416     4427     4681      658
+   1       4414     4417     4416     4427
+   1       4414     4417     4427     4428
+   1       4417     4416     4427     4681
+   1       4417     4428     4681     4427
+   1       4418      599     4421     4420
+   1       4427     4420     4683      658
+   1       4429     4421      663     4683
+   1       4418     4427     4421     4429
+   1       4418     4427     4420     4421
+   1       4427     4429     4683     4421
+   1       4427     4420     4421     4683
+   1       4428      660     4681     4691
+   1       4427     4681      658     4683
+   1       4429     4691     4683      663
+   1       4428     4427     4429     4691
+   1       4428     4427     4691     4681
+   1       4427     4429     4691     4683
+   1       4427     4681     4683     4691
+   1        848       18      852      853
+   1       2703      853     2733      249
+   1       2702      852      248     2733
+   1        848     2703      852     2702
+   1        848     2703      853      852
+   1       2703     2702     2733      852
+   1       2703      853      852     2733
+   1       2746      249     2748     1756
+   1       1760     1756     1764      109
+   1       4494     2748      695     1764
+   1       2746     1760     2748     4494
+   1       2746     1760     1756     2748
+   1       1760     4494     1764     2748
+   1       1760     1756     2748     1764
+   1       2736      248     1742     2740
+   1       4489     2740     1751      695
+   1       1745     1742      108     1751
+   1       2736     4489     1742     1745
+   1       2736     4489     2740     1742
+   1       4489     1745     1751     1742
+   1       4489     2740     1742     1751
+   1       2709      613     2737     4485
+   1       2708     4485     2736      612
+   1       2702     2737      248     2736
+   1       2709     2708     2737     2702
+   1       2709     2708     4485     2737
+   1       2708     2702     2736     2737
+   1       2708     4485     2737     2736
+   1       2709      613     2746     2737
+   1       2703     2746      249     2733
+   1       2702     2737     2733      248
+   1       2709     2703     2702     2737
+   1       2709     2703     2737     2746
+   1       2703     2702     2737     2733
+   1       2703     2746     2733     2737
+   1       4485      612     4489     2736
+   1       2737     2736     2740      248
+   1       4494     4489      695     2740
+   1       4485     2737     4489     4494
+   1       4485     2737     2736     4489
+   1       2737     4494     2740     4489
+   1       2737     2736     4489     2740
+   1       2746      249     2733     2748
+   1       2737     2733      248     2740
+   1       4494     2748     2740      695
+   1       2746     2737     4494     2748
+   1       2746     2737     2748     2733
+   1       2737     4494     2748     2740
+   1       2737     2733     2740     2748
+   1       1761      109     1767     1757
+   1       3007     1757     3009      288
+   1       4537     1767      702     3009
+   1       1761     3007     1767     4537
+   1       1761     3007     1757     1767
+   1       3007     4537     3009     1767
+   1       3007     1757     1767     3009
+   1       2982      288     3003      892
+   1        890      892      893       23
+   1       2983     3003      289      893
+   1       2982      890     3003     2983
+   1       2982      890      892     3003
+   1        890     2983      893     3003
+   1        890      892     3003      893
+   1       4539      702     1855     3015
+   1       3014     3015     1849      289
+   1       1853     1855      117     1849
+   1       4539     3014     1855     1853
+   1       4539     3014     3015     1855
+   1       3014     1853     1849     1855
+   1       3014     3015     1855     1849
+   1       2988      286     2991     2989
+   1       4534     2989     4539      625
+   1       4537     2991      702     4539
+   1       2988     4534     2991     4537
+   1       2988     4534     2989     2991
+   1       4534     4537     4539     2991
+   1       4534     2989     2991     4539
+   1       2988      286     2982     2991
+   1       3007     2982      288     3009
+   1       4537     2991     3009      702
+   1       2988     3007     4537     2991
+   1       2988     3007     2991     2982
+   1       3007     4537     2991     3009
+   1       3007     2982     3009     2991
+   1       2989      625     3014     4539
+   1       2991     4539     3015      702
+   1       2983     3014      289     3015
+   1       2989     2991     3014     2983
+   1       2989     2991     4539     3014
+   1       2991     2983     3015     3014
+   1       2991     4539     3014     3015
+   1       2982      288     3009     3003
+   1       2991     3009      702     3015
+   1       2983     3003     3015      289
+   1       2982     2991     2983     3003
+   1       2982     2991     3003     3009
+   1       2991     2983     3003     3015
+   1       2991     3009     3015     3003
+   1       1746      108     1743     1753
+   1       4504     1753     2902      697
+   1       2898     1743      273     2902
+   1       1746     4504     1743     2898
+   1       1746     4504     1753     1743
+   1       4504     2898     2902     1743
+   1       4504     1753     1743     2902
+   1       4507      697     2908     1854
+   1       1852     1854     1848      117
+   1       2907     2908      274     1848
+   1       4507     1852     2908     2907
+   1       4507     1852     1854     2908
+   1       1852     2907     1848     2908
+   1       1852     1854     2908     1848
+   1       2883      273      877     2895
+   1       2884     2895      878      274
+   1        875      877       21      878
+   1       2883     2884      877      875
+   1       2883     2884     2895      877
+   1       2884      875      878      877
+   1       2884     2895      877      878
+   1       4501      617     2899     2888
+   1       2887     2888     2883      271
+   1       2898     2899      273     2883
+   1       4501     2887     2899     2898
+   1       4501     2887     2888     2899
+   1       2887     2898     2883     2899
+   1       2887     2888     2899     2883
+   1       4501      617     4507     2899
+   1       4504     4507      697     2902
+   1       2898     2899     2902      273
+   1       4501     4504     2898     2899
+   1       4501     4504     2899     4507
+   1       4504     2898     2899     2902
+   1       4504     4507     2902     2899
+   1       2888      271     2884     2883
+   1       2899     2883     2895      273
+   1       2907     2884      274     2895
+   1       2888     2899     2884     2907
+   1       2888     2899     2883     2884
+   1       2899     2907     2895     2884
+   1       2899     2883     2884     2895
+   1       4507      697     2902     2908
+   1       2899     2902      273     2895
+   1       2907     2908     2895      274
+   1       4507     2899     2907     2908
+   1       4507     2899     2908     2902
+   1       2899     2907     2908     2895
+   1       2899     2902     2895     2908
+   1       1548       92     1552     1549
+   1       4469     1549     4497      614
+   1       4471     1552      623     4497
+   1       1548     4469     1552     4471
+   1       1548     4469     1549     1552
+   1       4469     4471     4497     1552
+   1       4469     1549     1552     4497
+   1       4463      614     4495     1524
+   1       1523     1524     1526       90
+   1       4464     4495      616     1526
+   1       4463     1523     4495     4464
+   1       4463     1523     1524     4495
+   1       1523     4464     1526     4495
+   1       1523     1524     4495     1526
+   1       4487      623     1747     4502
+   1       4486     4502     1746      616
+   1       1745     1747      108     1746
+   1       4487     4486     1747     1745
+   1       4487     4486     4502     1747
+   1       4486     1745     1746     1747
+   1       4486     4502     1747     1746
+   1       4461      607     4465     4462
+   1       4467     4462     4487      612
+   1       4471     4465      623     4487
+   1       4461     4467     4465     4471
+   1       4461     4467     4462     4465
+   1       4467     4471     4487     4465
+   1       4467     4462     4465     4487
+   1       4461      607     4463     4465
+   1       4469     4463      614     4497
+   1       4471     4465     4497      623
+   1       4461     4469     4471     4465
+   1       4461     4469     4465     4463
+   1       4469     4471     4465     4497
+   1       4469     4463     4497     4465
+   1       4462      612     4486     4487
+   1       4465     4487     4502      623
+   1       4464     4486      616     4502
+   1       4462     4465     4486     4464
+   1       4462     4465     4487     4486
+   1       4465     4464     4502     4486
+   1       4465     4487     4486     4502
+   1       4463      614     4497     4495
+   1       4465     4497      623     4502
+   1       4464     4495     4502      616
+   1       4463     4465     4464     4495
+   1       4463     4465     4495     4497
+   1       4465     4464     4495     4502
+   1       4465     4497     4502     4495
+   1       1548       92     1553     1552
+   1       4472     1553      624     4529
+   1       4471     1552     4529      623
+   1       1548     4472     4471     1552
+   1       1548     4472     1552     1553
+   1       4472     4471     1552     4529
+   1       4472     1553     4529     1552
+   1       4491      624     1761     4536
+   1       1760     1761      109     1764
+   1       4494     4536     1764      695
+   1       4491     1760     4494     4536
+   1       4491     1760     4536     1761
+   1       1760     4494     4536     1764
+   1       1760     1761     1764     4536
+   1       4487      623     4531     1747
+   1       4489     4531      695     1751
+   1       1745     1747     1751      108
+   1       4487     4489     1745     1747
+   1       4487     4489     1747     4531
+   1       4489     1745     1747     1751
+   1       4489     4531     1751     1747
+   1       4468      613     4485     4490
+   1       4467     4485      612     4487
+   1       4471     4490     4487      623
+   1       4468     4467     4471     4490
+   1       4468     4467     4490     4485
+   1       4467     4471     4490     4487
+   1       4467     4485     4487     4490
+   1       4468      613     4490     4491
+   1       4472     4491     4529      624
+   1       4471     4490      623     4529
+   1       4468     4472     4490     4471
+   1       4468     4472     4491     4490
+   1       4472     4471     4529     4490
+   1       4472     4491     4490     4529
+   1       4485      612     4487     4489
+   1       4490     4487      623     4531
+   1       4494     4489     4531      695
+   1       4485     4490     4494     4489
+   1       4485     4490     4489     4487
+   1       4490     4494     4489     4531
+   1       4490     4487     4531     4489
+   1       4491      624     4536     4529
+   1       4490     4529     4531      623
+   1       4494     4536      695     4531
+   1       4491     4490     4536     4494
+   1       4491     4490     4529     4536
+   1       4490     4494     4531     4536
+   1       4490     4529     4536     4531
+   1       1524       90     1527     1526
+   1       4495     1526     4501      616
+   1       4496     1527      617     4501
+   1       1524     4495     1527     4496
+   1       1524     4495     1526     1527
+   1       4495     4496     4501     1527
+   1       4495     1526     1527     4501
+   1       4502      616     4504     1746
+   1       1747     1746     1753      108
+   1       4532     4504      697     1753
+   1       4502     1747     4504     4532
+   1       4502     1747     1746     4504
+   1       1747     4532     1753     4504
+   1       1747     1746     4504     1753
+   1       4506      617     1852     4507
+   1       4538     4507     1854      697
+   1       1853     1852      117     1854
+   1       4506     4538     1852     1853
+   1       4506     4538     4507     1852
+   1       4538     1853     1854     1852
+   1       4538     4507     1852     1854
+   1       4497      623     4505     4530
+   1       4498     4530     4506      625
+   1       4496     4505      617     4506
+   1       4497     4498     4505     4496
+   1       4497     4498     4530     4505
+   1       4498     4496     4506     4505
+   1       4498     4530     4505     4506
+   1       4497      623     4502     4505
+   1       4495     4502      616     4501
+   1       4496     4505     4501      617
+   1       4497     4495     4496     4505
+   1       4497     4495     4505     4502
+   1       4495     4496     4505     4501
+   1       4495     4502     4501     4505
+   1       4530      625     4538     4506
+   1       4505     4506     4507      617
+   1       4532     4538      697     4507
+   1       4530     4505     4538     4532
+   1       4530     4505     4506     4538
+   1       4505     4532     4507     4538
+   1       4505     4506     4538     4507
+   1       4502      616     4501     4504
+   1       4505     4501      617     4507
+   1       4532     4504     4507      697
+   1       4502     4505     4532     4504
+   1       4502     4505     4504     4501
+   1       4505     4532     4504     4507
+   1       4505     4501     4507     4504
+   1       1761      109     1764     1767
+   1       4536     1764      695     4829
+   1       4537     1767     4829      702
+   1       1761     4536     4537     1767
+   1       1761     4536     1767     1764
+   1       4536     4537     1767     4829
+   1       4536     1764     4829     1767
+   1       4531      695     1751     4826
+   1       1747     1751      108     1753
+   1       4532     4826     1753      697
+   1       4531     1747     4532     4826
+   1       4531     1747     4826     1751
+   1       1747     4532     4826     1753
+   1       1747     1751     1753     4826
+   1       4539      702     4838     1855
+   1       4538     4838      697     1854
+   1       1853     1855     1854      117
+   1       4539     4538     1853     1855
+   1       4539     4538     1855     4838
+   1       4538     1853     1855     1854
+   1       4538     4838     1854     1855
+   1       4529      623     4530     4533
+   1       4534     4530      625     4539
+   1       4537     4533     4539      702
+   1       4529     4534     4537     4533
+   1       4529     4534     4533     4530
+   1       4534     4537     4533     4539
+   1       4534     4530     4539     4533
+   1       4529      623     4533     4531
+   1       4536     4531     4829      695
+   1       4537     4533      702     4829
+   1       4529     4536     4533     4537
+   1       4529     4536     4531     4533
+   1       4536     4537     4829     4533
+   1       4536     4531     4533     4829
+   1       4530      625     4539     4538
+   1       4533     4539      702     4838
+   1       4532     4538     4838      697
+   1       4530     4533     4532     4538
+   1       4530     4533     4538     4539
+   1       4533     4532     4538     4838
+   1       4533     4539     4838     4538
+   1       4531      695     4826     4829
+   1       4533     4829     4838      702
+   1       4532     4826      697     4838
+   1       4531     4533     4826     4532
+   1       4531     4533     4829     4826
+   1       4533     4532     4838     4826
+   1       4533     4829     4826     4838
+   1        829       16      830      831
+   1       2532      830      226     2538
+   1       2533      831     2538      227
+   1        829     2532     2533      831
+   1        829     2532      831      830
+   1       2532     2533      831     2538
+   1       2532      830     2538      831
+   1       2541      226     1638     2542
+   1       1644     1638      100     1645
+   1       4682     2542     1645      662
+   1       2541     1644     4682     2542
+   1       2541     1644     2542     1638
+   1       1644     4682     2542     1645
+   1       1644     1638     1645     2542
+   1       2546      227     2547     1648
+   1       4687     2547      662     1654
+   1       1653     1648     1654      101
+   1       2546     4687     1653     1648
+   1       2546     4687     1648     2547
+   1       4687     1653     1648     1654
+   1       4687     2547     1654     1648
+   1       2536      658     4680     2545
+   1       2537     4680      659     2546
+   1       2533     2545     2546      227
+   1       2536     2537     2533     2545
+   1       2536     2537     2545     4680
+   1       2537     2533     2545     2546
+   1       2537     4680     2546     2545
+   1       2536      658     2545     2541
+   1       2532     2541     2538      226
+   1       2533     2545      227     2538
+   1       2536     2532     2545     2533
+   1       2536     2532     2541     2545
+   1       2532     2533     2538     2545
+   1       2532     2541     2545     2538
+   1       4680      659     2546     4687
+   1       2545     2546      227     2547
+   1       4682     4687     2547      662
+   1       4680     2545     4682     4687
+   1       4680     2545     4687     2546
+   1       2545     4682     4687     2547
+   1       2545     2546     2547     4687
+   1       2541      226     2542     2538
+   1       2545     2538     2547      227
+   1       4682     2542      662     2547
+   1       2541     2545     2542     4682
+   1       2541     2545     2538     2542
+   1       2545     4682     2547     2542
+   1       2545     2538     2542     2547
+   1       1646      100     1639     1647
+   1       2893     1639      272     2894
+   1       4701     1647     2894      664
+   1       1646     2893     4701     1647
+   1       1646     2893     1647     1639
+   1       2893     4701     1647     2894
+   1       2893     1639     2894     1647
+   1       2889      272      876     2890
+   1        877      876       21      879
+   1       2896     2890      879      275
+   1       2889      877     2896     2890
+   1       2889      877     2890      876
+   1        877     2896     2890      879
+   1        877      876      879     2890
+   1       4706      664     2911     1862
+   1       2912     2911      275     1858
+   1       1864     1862     1858      118
+   1       4706     2912     1864     1862
+   1       4706     2912     1862     2911
+   1       2912     1864     1862     1858
+   1       2912     2911     1858     1862
+   1       2900      273     2903     2901
+   1       4703     2903      698     4706
+   1       4701     2901     4706      664
+   1       2900     4703     4701     2901
+   1       2900     4703     2901     2903
+   1       4703     4701     2901     4706
+   1       4703     2903     4706     2901
+   1       2900      273     2901     2889
+   1       2893     2889     2894      272
+   1       4701     2901      664     2894
+   1       2900     2893     2901     4701
+   1       2900     2893     2889     2901
+   1       2893     4701     2894     2901
+   1       2893     2889     2901     2894
+   1       2903      698     4706     2912
+   1       2901     4706      664     2911
+   1       2896     2912     2911      275
+   1       2903     2901     2896     2912
+   1       2903     2901     2912     4706
+   1       2901     2896     2912     2911
+   1       2901     4706     2911     2912
+   1       2889      272     2890     2894
+   1       2901     2894     2911      664
+   1       2896     2890      275     2911
+   1       2889     2901     2890     2896
+   1       2889     2901     2894     2890
+   1       2901     2896     2911     2890
+   1       2901     2894     2890     2911
+   1       1656      101     1657     1649
+   1       4712     1657      667     3139
+   1       3138     1649     3139      310
+   1       1656     4712     3138     1649
+   1       1656     4712     1649     1657
+   1       4712     3138     1649     3139
+   1       4712     1657     3139     1649
+   1       4716      667     1863     3149
+   1       1865     1863      118     1859
+   1       3150     3149     1859      312
+   1       4716     1865     3150     3149
+   1       4716     1865     3149     1863
+   1       1865     3150     3149     1859
+   1       1865     1863     1859     3149
+   1       3134      310     3135      914
+   1       3141     3135      312      916
+   1        915      914      916       26
+   1       3134     3141      915      914
+   1       3134     3141      914     3135
+   1       3141      915      914      916
+   1       3141     3135      916      914
+   1       4714      713     3145     3140
+   1       3144     3145      311     3134
+   1       3138     3140     3134      310
+   1       4714     3144     3138     3140
+   1       4714     3144     3140     3145
+   1       3144     3138     3140     3134
+   1       3144     3145     3134     3140
+   1       4714      713     3140     4716
+   1       4712     4716     3139      667
+   1       3138     3140      310     3139
+   1       4714     4712     3140     3138
+   1       4714     4712     4716     3140
+   1       4712     3138     3139     3140
+   1       4712     4716     3140     3139
+   1       3145      311     3134     3141
+   1       3140     3134      310     3135
+   1       3150     3141     3135      312
+   1       3145     3140     3150     3141
+   1       3145     3140     3141     3134
+   1       3140     3150     3141     3135
+   1       3140     3134     3135     3141
+   1       4716      667     3149     3139
+   1       3140     3139     3135      310
+   1       3150     3149      312     3135
+   1       4716     3140     3149     3150
+   1       4716     3140     3139     3149
+   1       3140     3150     3135     3149
+   1       3140     3139     3149     3135
+   1       1748      108     1752     1750
+   1       4693     1752      696     4709
+   1       4692     1750     4709      665
+   1       1748     4693     4692     1750
+   1       1748     4693     1750     1752
+   1       4693     4692     1750     4709
+   1       4693     1752     4709     1750
+   1       4696      696     1800     4713
+   1       1798     1800      112     1799
+   1       4695     4713     1799      666
+   1       4696     1798     4695     4713
+   1       4696     1798     4713     1800
+   1       1798     4695     4713     1799
+   1       1798     1800     1799     4713
+   1       4688      665     4707     1655
+   1       4689     4707      666     1656
+   1       1653     1655     1656      101
+   1       4688     4689     1653     1655
+   1       4688     4689     1655     4707
+   1       4689     1653     1655     1656
+   1       4689     4707     1656     1655
+   1       4690      661     4686     4694
+   1       4685     4686      659     4688
+   1       4692     4694     4688      665
+   1       4690     4685     4692     4694
+   1       4690     4685     4694     4686
+   1       4685     4692     4694     4688
+   1       4685     4686     4688     4694
+   1       4690      661     4694     4696
+   1       4693     4696     4709      696
+   1       4692     4694      665     4709
+   1       4690     4693     4694     4692
+   1       4690     4693     4696     4694
+   1       4693     4692     4709     4694
+   1       4693     4696     4694     4709
+   1       4686      659     4688     4689
+   1       4694     4688      665     4707
+   1       4695     4689     4707      666
+   1       4686     4694     4695     4689
+   1       4686     4694     4689     4688
+   1       4694     4695     4689     4707
+   1       4694     4688     4707     4689
+   1       4696      696     4713     4709
+   1       4694     4709     4707      665
+   1       4695     4713      666     4707
+   1       4696     4694     4713     4695
+   1       4696     4694     4709     4713
+   1       4694     4695     4707     4713
+   1       4694     4709     4713     4707
+   1       1748      108     1750     1749
+   1       4691     1749     4702      663
+   1       4692     1750      665     4702
+   1       1748     4691     1750     4692
+   1       1748     4691     1749     1750
+   1       4691     4692     4702     1750
+   1       4691     1749     1750     4702
+   1       4683      663     4697     1646
+   1       1644     1646     1645      100
+   1       4682     4697      662     1645
+   1       4683     1644     4697     4682
+   1       4683     1644     1646     4697
+   1       1644     4682     1645     4697
+   1       1644     1646     4697     1645
+   1       4688      665     1655     4699
+   1       4687     4699     1654      662
+   1       1653     1655      101     1654
+   1       4688     4687     1655     1653
+   1       4688     4687     4699     1655
+   1       4687     1653     1654     1655
+   1       4687     4699     1655     1654
+   1       4681      658     4684     4680
+   1       4685     4680     4688      659
+   1       4692     4684      665     4688
+   1       4681     4685     4684     4692
+   1       4681     4685     4680     4684
+   1       4685     4692     4688     4684
+   1       4685     4680     4684     4688
+   1       4681      658     4683     4684
+   1       4691     4683      663     4702
+   1       4692     4684     4702      665
+   1       4681     4691     4692     4684
+   1       4681     4691     4684     4683
+   1       4691     4692     4684     4702
+   1       4691     4683     4702     4684
+   1       4680      659     4687     4688
+   1       4684     4688     4699      665
+   1       4682     4687      662     4699
+   1       4680     4684     4687     4682
+   1       4680     4684     4688     4687
+   1       4684     4682     4699     4687
+   1       4684     4688     4687     4699
+   1       4683      663     4702     4697
+   1       4684     4702      665     4699
+   1       4682     4697     4699      662
+   1       4683     4684     4682     4697
+   1       4683     4684     4697     4702
+   1       4684     4682     4697     4699
+   1       4684     4702     4699     4697
+   1       1800      112     1799     1802
+   1       4713     1799      666     4714
+   1       4834     1802     4714      713
+   1       1800     4713     4834     1802
+   1       1800     4713     1802     1799
+   1       4713     4834     1802     4714
+   1       4713     1799     4714     1802
+   1       4707      666     1656     4712
+   1       1655     1656      101     1657
+   1       4708     4712     1657      667
+   1       4707     1655     4708     4712
+   1       4707     1655     4712     1656
+   1       1655     4708     4712     1657
+   1       1655     1656     1657     4712
+   1       4842      713     4716     1865
+   1       4715     4716      667     1863
+   1       1864     1865     1863      118
+   1       4842     4715     1864     1865
+   1       4842     4715     1865     4716
+   1       4715     1864     1865     1863
+   1       4715     4716     1863     1865
+   1       4709      665     4710     4711
+   1       4831     4710      698     4842
+   1       4834     4711     4842      713
+   1       4709     4831     4834     4711
+   1       4709     4831     4711     4710
+   1       4831     4834     4711     4842
+   1       4831     4710     4842     4711
+   1       4709      665     4711     4707
+   1       4713     4707     4714      666
+   1       4834     4711      713     4714
+   1       4709     4713     4711     4834
+   1       4709     4713     4707     4711
+   1       4713     4834     4714     4711
+   1       4713     4707     4711     4714
+   1       4710      698     4842     4715
+   1       4711     4842      713     4716
+   1       4708     4715     4716      667
+   1       4710     4711     4708     4715
+   1       4710     4711     4715     4842
+   1       4711     4708     4715     4716
+   1       4711     4842     4716     4715
+   1       4707      666     4712     4714
+   1       4711     4714     4716      713
+   1       4708     4712      667     4716
+   1       4707     4711     4712     4708
+   1       4707     4711     4714     4712
+   1       4711     4708     4716     4712
+   1       4711     4714     4712     4716
+   1       1646      100     1647     1645
+   1       4697     1645     4698      662
+   1       4701     1647      664     4698
+   1       1646     4697     1647     4701
+   1       1646     4697     1645     1647
+   1       4697     4701     4698     1647
+   1       4697     1645     1647     4698
+   1       4699      662     4700     1654
+   1       1655     1654     1657      101
+   1       4708     4700      667     1657
+   1       4699     1655     4700     4708
+   1       4699     1655     1654     4700
+   1       1655     4708     1657     4700
+   1       1655     1654     4700     1657
+   1       4706      664     1862     4705
+   1       4715     4705     1863      667
+   1       1864     1862      118     1863
+   1       4706     4715     1862     1864
+   1       4706     4715     4705     1862
+   1       4715     1864     1863     1862
+   1       4715     4705     1862     1863
+   1       4702      665     4704     4710
+   1       4703     4710     4706      698
+   1       4701     4704      664     4706
+   1       4702     4703     4704     4701
+   1       4702     4703     4710     4704
+   1       4703     4701     4706     4704
+   1       4703     4710     4704     4706
+   1       4702      665     4699     4704
+   1       4697     4699      662     4698
+   1       4701     4704     4698      664
+   1       4702     4697     4701     4704
+   1       4702     4697     4704     4699
+   1       4697     4701     4704     4698
+   1       4697     4699     4698     4704
+   1       4710      698     4715     4706
+   1       4704     4706     4705      664
+   1       4708     4715      667     4705
+   1       4710     4704     4715     4708
+   1       4710     4704     4706     4715
+   1       4704     4708     4705     4715
+   1       4704     4706     4715     4705
+   1       4699      662     4698     4700
+   1       4704     4698      664     4705
+   1       4708     4700     4705      667
+   1       4699     4704     4708     4700
+   1       4699     4704     4700     4698
+   1       4704     4708     4700     4705
+   1       4704     4698     4705     4700
+   1        892       23      895      893
+   1       3003      893     3012      289
+   1       3004      895      291     3012
+   1        892     3003      895     3004
+   1        892     3003      893      895
+   1       3003     3004     3012      895
+   1       3003      893      895     3012
+   1       3015      289     3016     1849
+   1       1855     1849     1857      117
+   1       4858     3016      722     1857
+   1       3015     1855     3016     4858
+   1       3015     1855     1849     3016
+   1       1855     4858     1857     3016
+   1       1855     1849     3016     1857
+   1       3025      291     1888     3026
+   1       4860     3026     1896      722
+   1       1894     1888      121     1896
+   1       3025     4860     1888     1894
+   1       3025     4860     3026     1888
+   1       4860     1894     1896     1888
+   1       4860     3026     1888     1896
+   1       3009      702     3024     4857
+   1       3010     4857     3025      703
+   1       3004     3024      291     3025
+   1       3009     3010     3024     3004
+   1       3009     3010     4857     3024
+   1       3010     3004     3025     3024
+   1       3010     4857     3024     3025
+   1       3009      702     3015     3024
+   1       3003     3015      289     3012
+   1       3004     3024     3012      291
+   1       3009     3003     3004     3024
+   1       3009     3003     3024     3015
+   1       3003     3004     3024     3012
+   1       3003     3015     3012     3024
+   1       4857      703     4860     3025
+   1       3024     3025     3026      291
+   1       4858     4860      722     3026
+   1       4857     3024     4860     4858
+   1       4857     3024     3025     4860
+   1       3024     4858     3026     4860
+   1       3024     3025     4860     3026
+   1       3015      289     3012     3016
+   1       3024     3012      291     3026
+   1       4858     3016     3026      722
+   1       3015     3024     4858     3016
+   1       3015     3024     3016     3012
+   1       3024     4858     3016     3026
+   1       3024     3012     3026     3016
+   1       1854      117     1856     1848
+   1       2908     1848     2909      274
+   1       4839     1856      721     2909
+   1       1854     2908     1856     4839
+   1       1854     2908     1848     1856
+   1       2908     4839     2909     1856
+   1       2908     1848     1856     2909
+   1       2895      274     2905      878
+   1        877      878      879       21
+   1       2896     2905      275      879
+   1       2895      877     2905     2896
+   1       2895      877      878     2905
+   1        877     2896      879     2905
+   1        877      878     2905      879
+   1       4843      721     1866     2913
+   1       2912     2913     1858      275
+   1       1864     1866      118     1858
+   1       4843     2912     1866     1864
+   1       4843     2912     2913     1866
+   1       2912     1864     1858     1866
+   1       2912     2913     1866     1858
+   1       2902      273     2904     2903
+   1       4836     2903     4843      698
+   1       4839     2904      721     4843
+   1       2902     4836     2904     4839
+   1       2902     4836     2903     2904
+   1       4836     4839     4843     2904
+   1       4836     2903     2904     4843
+   1       2902      273     2895     2904
+   1       2908     2895      274     2909
+   1       4839     2904     2909      721
+   1       2902     2908     4839     2904
+   1       2902     2908     2904     2895
+   1       2908     4839     2904     2909
+   1       2908     2895     2909     2904
+   1       2903      698     2912     4843
+   1       2904     4843     2913      721
+   1       2896     2912      275     2913
+   1       2903     2904     2912     2896
+   1       2903     2904     4843     2912
+   1       2904     2896     2913     2912
+   1       2904     4843     2912     2913
+   1       2895      274     2909     2905
+   1       2904     2909      721     2913
+   1       2896     2905     2913      275
+   1       2895     2904     2896     2905
+   1       2895     2904     2905     2909
+   1       2904     2896     2905     2913
+   1       2904     2909     2913     2905
+   1       1895      121     1889     1897
+   1       4898     1897     3156      723
+   1       3155     1889      313     3156
+   1       1895     4898     1889     3155
+   1       1895     4898     1897     1889
+   1       4898     3155     3156     1889
+   1       4898     1897     1889     3156
+   1       4897      723     3151     1867
+   1       1865     1867     1859      118
+   1       3150     3151      312     1859
+   1       4897     1865     3151     3150
+   1       4897     1865     1867     3151
+   1       1865     3150     1859     3151
+   1       1865     1867     3151     1859
+   1       3142      313      917     3147
+   1       3141     3147      916      312
+   1        915      917       26      916
+   1       3142     3141      917      915
+   1       3142     3141     3147      917
+   1       3141      915      916      917
+   1       3141     3147      917      916
+   1       4896      713     3154     3145
+   1       3146     3145     3142      311
+   1       3155     3154      313     3142
+   1       4896     3146     3154     3155
+   1       4896     3146     3145     3154
+   1       3146     3155     3142     3154
+   1       3146     3145     3154     3142
+   1       4896      713     4897     3154
+   1       4898     4897      723     3156
+   1       3155     3154     3156      313
+   1       4896     4898     3155     3154
+   1       4896     4898     3154     4897
+   1       4898     3155     3154     3156
+   1       4898     4897     3156     3154
+   1       3145      311     3141     3142
+   1       3154     3142     3147      313
+   1       3150     3141      312     3147
+   1       3145     3154     3141     3150
+   1       3145     3154     3142     3141
+   1       3154     3150     3147     3141
+   1       3154     3142     3141     3147
+   1       4897      723     3156     3151
+   1       3154     3156      313     3147
+   1       3150     3151     3147      312
+   1       4897     3154     3150     3151
+   1       4897     3154     3151     3156
+   1       3154     3150     3151     3147
+   1       3154     3156     3147     3151
+   1       1751      108     1755     1752
+   1       4825     1752     4832      696
+   1       4827     1755      699     4832
+   1       1751     4825     1755     4827
+   1       1751     4825     1752     1755
+   1       4825     4827     4832     1755
+   1       4825     1752     1755     4832
+   1       4833      696     4835     1800
+   1       1801     1800     1803      112
+   1       4854     4835      714     1803
+   1       4833     1801     4835     4854
+   1       4833     1801     1800     4835
+   1       1801     4854     1803     4835
+   1       1801     1800     4835     1803
+   1       4847      699     1893     4849
+   1       4859     4849     1895      714
+   1       1894     1893      121     1895
+   1       4847     4859     1893     1894
+   1       4847     4859     4849     1893
+   1       4859     1894     1895     1893
+   1       4859     4849     1893     1895
+   1       4828      700     4845     4853
+   1       4830     4853     4847      703
+   1       4827     4845      699     4847
+   1       4828     4830     4845     4827
+   1       4828     4830     4853     4845
+   1       4830     4827     4847     4845
+   1       4830     4853     4845     4847
+   1       4828      700     4833     4845
+   1       4825     4833      696     4832
+   1       4827     4845     4832      699
+   1       4828     4825     4827     4845
+   1       4828     4825     4845     4833
+   1       4825     4827     4845     4832
+   1       4825     4833     4832     4845
+   1       4853      703     4859     4847
+   1       4845     4847     4849      699
+   1       4854     4859      714     4849
+   1       4853     4845     4859     4854
+   1       4853     4845     4847     4859
+   1       4845     4854     4849     4859
+   1       4845     4847     4859     4849
+   1       4833      696     4832     4835
+   1       4845     4832      699     4849
+   1       4854     4835     4849      714
+   1       4833     4845     4854     4835
+   1       4833     4845     4835     4832
+   1       4845     4854     4835     4849
+   1       4845     4832     4849     4835
+   1       1751      108     1753     1755
+   1       4826     1753      697     4837
+   1       4827     1755     4837      699
+   1       1751     4826     4827     1755
+   1       1751     4826     1755     1753
+   1       4826     4827     1755     4837
+   1       4826     1753     4837     1755
+   1       4838      697     1854     4840
+   1       1855     1854      117     1857
+   1       4858     4840     1857      722
+   1       4838     1855     4858     4840
+   1       4838     1855     4840     1854
+   1       1855     4858     4840     1857
+   1       1855     1854     1857     4840
+   1       4847      699     4851     1893
+   1       4860     4851      722     1896
+   1       1894     1893     1896      121
+   1       4847     4860     1894     1893
+   1       4847     4860     1893     4851
+   1       4860     1894     1893     1896
+   1       4860     4851     1896     1893
+   1       4829      702     4857     4846
+   1       4830     4857      703     4847
+   1       4827     4846     4847      699
+   1       4829     4830     4827     4846
+   1       4829     4830     4846     4857
+   1       4830     4827     4846     4847
+   1       4830     4857     4847     4846
+   1       4829      702     4846     4838
+   1       4826     4838     4837      697
+   1       4827     4846      699     4837
+   1       4829     4826     4846     4827
+   1       4829     4826     4838     4846
+   1       4826     4827     4837     4846
+   1       4826     4838     4846     4837
+   1       4857      703     4847     4860
+   1       4846     4847      699     4851
+   1       4858     4860     4851      722
+   1       4857     4846     4858     4860
+   1       4857     4846     4860     4847
+   1       4846     4858     4860     4851
+   1       4846     4847     4851     4860
+   1       4838      697     4840     4837
+   1       4846     4837     4851      699
+   1       4858     4840      722     4851
+   1       4838     4846     4840     4858
+   1       4838     4846     4837     4840
+   1       4846     4858     4851     4840
+   1       4846     4837     4840     4851
+   1       1800      112     1802     1803
+   1       4835     1803     4896      714
+   1       4834     1802      713     4896
+   1       1800     4835     1802     4834
+   1       1800     4835     1803     1802
+   1       4835     4834     4896     1802
+   1       4835     1803     1802     4896
+   1       4849      714     4898     1895
+   1       1893     1895     1897      121
+   1       4852     4898      723     1897
+   1       4849     1893     4898     4852
+   1       4849     1893     1895     4898
+   1       1893     4852     1897     4898
+   1       1893     1895     4898     1897
+   1       4842      713     1865     4897
+   1       4844     4897     1867      723
+   1       1864     1865      118     1867
+   1       4842     4844     1865     1864
+   1       4842     4844     4897     1865
+   1       4844     1864     1867     1865
+   1       4844     4897     1865     1867
+   1       4832      699     4848     4841
+   1       4831     4841     4842      698
+   1       4834     4848      713     4842
+   1       4832     4831     4848     4834
+   1       4832     4831     4841     4848
+   1       4831     4834     4842     4848
+   1       4831     4841     4848     4842
+   1       4832      699     4849     4848
+   1       4835     4849      714     4896
+   1       4834     4848     4896      713
+   1       4832     4835     4834     4848
+   1       4832     4835     4848     4849
+   1       4835     4834     4848     4896
+   1       4835     4849     4896     4848
+   1       4841      698     4844     4842
+   1       4848     4842     4897      713
+   1       4852     4844      723     4897
+   1       4841     4848     4844     4852
+   1       4841     4848     4842     4844
+   1       4848     4852     4897     4844
+   1       4848     4842     4844     4897
+   1       4849      714     4896     4898
+   1       4848     4896      713     4897
+   1       4852     4898     4897      723
+   1       4849     4848     4852     4898
+   1       4849     4848     4898     4896
+   1       4848     4852     4898     4897
+   1       4848     4896     4897     4898
+   1       1854      117     1857     1856
+   1       4840     1857      722     4905
+   1       4839     1856     4905      721
+   1       1854     4840     4839     1856
+   1       1854     4840     1856     1857
+   1       4840     4839     1856     4905
+   1       4840     1857     4905     1856
+   1       4851      722     1896     4907
+   1       1893     1896      121     1897
+   1       4852     4907     1897      723
+   1       4851     1893     4852     4907
+   1       4851     1893     4907     1896
+   1       1893     4852     4907     1897
+   1       1893     1896     1897     4907
+   1       4843      721     4906     1866
+   1       4844     4906      723     1867
+   1       1864     1866     1867      118
+   1       4843     4844     1864     1866
+   1       4843     4844     1866     4906
+   1       4844     1864     1866     1867
+   1       4844     4906     1867     1866
+   1       4837      699     4841     4850
+   1       4836     4841      698     4843
+   1       4839     4850     4843      721
+   1       4837     4836     4839     4850
+   1       4837     4836     4850     4841
+   1       4836     4839     4850     4843
+   1       4836     4841     4843     4850
+   1       4837      699     4850     4851
+   1       4840     4851     4905      722
+   1       4839     4850      721     4905
+   1       4837     4840     4850     4839
+   1       4837     4840     4851     4850
+   1       4840     4839     4905     4850
+   1       4840     4851     4850     4905
+   1       4841      698     4843     4844
+   1       4850     4843      721     4906
+   1       4852     4844     4906      723
+   1       4841     4850     4852     4844
+   1       4841     4850     4844     4843
+   1       4850     4852     4844     4906
+   1       4850     4843     4906     4844
+   1       4851      722     4907     4905
+   1       4850     4905     4906      721
+   1       4852     4907      723     4906
+   1       4851     4850     4907     4852
+   1       4851     4850     4905     4907
+   1       4850     4852     4906     4907
+   1       4850     4905     4907     4906
+   1        734        2      736      739
+   1       1956      736      132     1968
+   1       1957      739     1968      135
+   1        734     1956     1957      739
+   1        734     1956      739      736
+   1       1956     1957      739     1968
+   1       1956      736     1968      739
+   1       1970      132      973     1972
+   1        975      973       34      977
+   1       3289     1972      977      352
+   1       1970      975     3289     1972
+   1       1970      975     1972      973
+   1        975     3289     1972      977
+   1        975      973      977     1972
+   1       1985      135     1987      998
+   1       3296     1987      352     1002
+   1       1000      998     1002       37
+   1       1985     3296     1000      998
+   1       1985     3296      998     1987
+   1       3296     1000      998     1002
+   1       3296     1987     1002      998
+   1       1959      340     3287     1984
+   1       1960     3287      341     1985
+   1       1957     1984     1985      135
+   1       1959     1960     1957     1984
+   1       1959     1960     1984     3287
+   1       1960     1957     1984     1985
+   1       1960     3287     1985     1984
+   1       1959      340     1984     1970
+   1       1956     1970     1968      132
+   1       1957     1984      135     1968
+   1       1959     1956     1984     1957
+   1       1959     1956     1970     1984
+   1       1956     1957     1968     1984
+   1       1956     1970     1984     1968
+   1       3287      341     1985     3296
+   1       1984     1985      135     1987
+   1       3289     3296     1987      352
+   1       3287     1984     3289     3296
+   1       3287     1984     3296     1985
+   1       1984     3289     3296     1987
+   1       1984     1985     1987     3296
+   1       1970      132     1972     1968
+   1       1984     1968     1987      135
+   1       3289     1972      352     1987
+   1       1970     1984     1972     3289
+   1       1970     1984     1968     1972
+   1       1984     3289     1987     1972
+   1       1984     1968     1972     1987
+   1        979       34      974      981
+   1       2382      974      203     2384
+   1       3363      981     2384      356
+   1        979     2382     3363      981
+   1        979     2382      981      974
+   1       2382     3363      981     2384
+   1       2382      974     2384      981
+   1       2378      203      807     2380
+   1        809      807       14      812
+   1       2395     2380      812      208
+   1       2378      809     2395     2380
+   1       2378      809     2380      807
+   1        809     2395     2380      812
+   1        809      807      812     2380
+   1       3374      356     2417     1492
+   1       2418     2417      208     1490
+   1       1494     1492     1490       88
+   1       3374     2418     1494     1492
+   1       3374     2418     1492     2417
+   1       2418     1494     1492     1490
+   1       2418     2417     1490     1492
+   1       2396      205     2399     2397
+   1       3365     2399      533     3374
+   1       3363     2397     3374      356
+   1       2396     3365     3363     2397
+   1       2396     3365     2397     2399
+   1       3365     3363     2397     3374
+   1       3365     2399     3374     2397
+   1       2396      205     2397     2378
+   1       2382     2378     2384      203
+   1       3363     2397      356     2384
+   1       2396     2382     2397     3363
+   1       2396     2382     2378     2397
+   1       2382     3363     2384     2397
+   1       2382     2378     2397     2384
+   1       2399      533     3374     2418
+   1       2397     3374      356     2417
+   1       2395     2418     2417      208
+   1       2399     2397     2395     2418
+   1       2399     2397     2418     3374
+   1       2397     2395     2418     2417
+   1       2397     3374     2417     2418
+   1       2378      203     2380     2384
+   1       2397     2384     2417      356
+   1       2395     2380      208     2417
+   1       2378     2397     2380     2395
+   1       2378     2397     2384     2380
+   1       2397     2395     2417     2380
+   1       2397     2384     2380     2417
+   1       1006       37     1008      999
+   1       3434     1008      371     2555
+   1       2553      999     2555      228
+   1       1006     3434     2553      999
+   1       1006     3434      999     1008
+   1       3434     2553      999     2555
+   1       3434     1008     2555      999
+   1       3444      371     1493     2615
+   1       1495     1493       88     1491
+   1       2616     2615     1491      234
+   1       3444     1495     2616     2615
+   1       3444     1495     2615     1493
+   1       1495     2616     2615     1491
+   1       1495     1493     1491     2615
+   1       2548      228     2550      832
+   1       2575     2550      234      838
+   1        834      832      838       17
+   1       2548     2575      834      832
+   1       2548     2575      832     2550
+   1       2575      834      832      838
+   1       2575     2550      838      832
+   1       3437      538     2581     2558
+   1       2576     2581      230     2548
+   1       2553     2558     2548      228
+   1       3437     2576     2553     2558
+   1       3437     2576     2558     2581
+   1       2576     2553     2558     2548
+   1       2576     2581     2548     2558
+   1       3437      538     2558     3444
+   1       3434     3444     2555      371
+   1       2553     2558      228     2555
+   1       3437     3434     2558     2553
+   1       3437     3434     3444     2558
+   1       3434     2553     2555     2558
+   1       3434     3444     2558     2555
+   1       2581      230     2548     2575
+   1       2558     2548      228     2550
+   1       2616     2575     2550      234
+   1       2581     2558     2616     2575
+   1       2581     2558     2575     2548
+   1       2558     2616     2575     2550
+   1       2558     2548     2550     2575
+   1       3444      371     2615     2555
+   1       2558     2555     2550      228
+   1       2616     2615      234     2550
+   1       3444     2558     2615     2616
+   1       3444     2558     2555     2615
+   1       2558     2616     2550     2615
+   1       2558     2555     2615     2550
+   1       1288       70     1292     1290
+   1       3306     1292      530     3430
+   1       3305     1290     3430      368
+   1       1288     3306     3305     1290
+   1       1288     3306     1290     1292
+   1       3306     3305     1290     3430
+   1       3306     1292     3430     1290
+   1       3311      530     1304     3435
+   1       1298     1304       71     1300
+   1       3309     3435     1300      369
+   1       3311     1298     3309     3435
+   1       3311     1298     3435     1304
+   1       1298     3309     3435     1300
+   1       1298     1304     1300     3435
+   1       3297      368     3428     1005
+   1       3298     3428      369     1006
+   1       1000     1005     1006       37
+   1       3297     3298     1000     1005
+   1       3297     3298     1005     3428
+   1       3298     1000     1005     1006
+   1       3298     3428     1006     1005
+   1       3303      344     3293     3308
+   1       3292     3293      341     3297
+   1       3305     3308     3297      368
+   1       3303     3292     3305     3308
+   1       3303     3292     3308     3293
+   1       3292     3305     3308     3297
+   1       3292     3293     3297     3308
+   1       3303      344     3308     3311
+   1       3306     3311     3430      530
+   1       3305     3308      368     3430
+   1       3303     3306     3308     3305
+   1       3303     3306     3311     3308
+   1       3306     3305     3430     3308
+   1       3306     3311     3308     3430
+   1       3293      341     3297     3298
+   1       3308     3297      368     3428
+   1       3309     3298     3428      369
+   1       3293     3308     3309     3298
+   1       3293     3308     3298     3297
+   1       3308     3309     3298     3428
+   1       3308     3297     3428     3298
+   1       3311      530     3435     3430
+   1       3308     3430     3428      368
+   1       3309     3435      369     3428
+   1       3311     3308     3435     3309
+   1       3311     3308     3430     3435
+   1       3308     3309     3428     3435
+   1       3308     3430     3435     3428
+   1       1288       70     1290     1289
+   1       3304     1289     3364      354
+   1       3305     1290      368     3364
+   1       1288     3304     1290     3305
+   1       1288     3304     1289     1290
+   1       3304     3305     3364     1290
+   1       3304     1289     1290     3364
+   1       3290      354     3349      979
+   1        975      979      977       34
+   1       3289     3349      352      977
+   1       3290      975     3349     3289
+   1       3290      975      979     3349
+   1        975     3289      977     3349
+   1        975      979     3349      977
+   1       3297      368     1005     3353
+   1       3296     3353     1002      352
+   1       1000     1005       37     1002
+   1       3297     3296     1005     1000
+   1       3297     3296     3353     1005
+   1       3296     1000     1002     1005
+   1       3296     3353     1005     1002
+   1       3288      340     3291     3287
+   1       3292     3287     3297      341
+   1       3305     3291      368     3297
+   1       3288     3292     3291     3305
+   1       3288     3292     3287     3291
+   1       3292     3305     3297     3291
+   1       3292     3287     3291     3297
+   1       3288      340     3290     3291
+   1       3304     3290      354     3364
+   1       3305     3291     3364      368
+   1       3288     3304     3305     3291
+   1       3288     3304     3291     3290
+   1       3304     3305     3291     3364
+   1       3304     3290     3364     3291
+   1       3287      341     3296     3297
+   1       3291     3297     3353      368
+   1       3289     3296      352     3353
+   1       3287     3291     3296     3289
+   1       3287     3291     3297     3296
+   1       3291     3289     3353     3296
+   1       3291     3297     3296     3353
+   1       3290      354     3364     3349
+   1       3291     3364      368     3353
+   1       3289     3349     3353      352
+   1       3290     3291     3289     3349
+   1       3290     3291     3349     3364
+   1       3291     3289     3349     3353
+   1       3291     3364     3353     3349
+   1       1304       71     1300     1309
+   1       3435     1300      369     3437
+   1       4153     1309     3437      538
+   1       1304     3435     4153     1309
+   1       1304     3435     1309     1300
+   1       3435     4153     1309     3437
+   1       3435     1300     3437     1309
+   1       3428      369     1006     3434
+   1       1005     1006       37     1008
+   1       3429     3434     1008      371
+   1       3428     1005     3429     3434
+   1       3428     1005     3434     1006
+   1       1005     3429     3434     1008
+   1       1005     1006     1008     3434
+   1       4164      538     3444     1495
+   1       3443     3444      371     1493
+   1       1494     1495     1493       88
+   1       4164     3443     1494     1495
+   1       4164     3443     1495     3444
+   1       3443     1494     1495     1493
+   1       3443     3444     1493     1495
+   1       3430      368     3431     3432
+   1       4151     3431      533     4164
+   1       4153     3432     4164      538
+   1       3430     4151     4153     3432
+   1       3430     4151     3432     3431
+   1       4151     4153     3432     4164
+   1       4151     3431     4164     3432
+   1       3430      368     3432     3428
+   1       3435     3428     3437      369
+   1       4153     3432      538     3437
+   1       3430     3435     3432     4153
+   1       3430     3435     3428     3432
+   1       3435     4153     3437     3432
+   1       3435     3428     3432     3437
+   1       3431      533     4164     3443
+   1       3432     4164      538     3444
+   1       3429     3443     3444      371
+   1       3431     3432     3429     3443
+   1       3431     3432     3443     4164
+   1       3432     3429     3443     3444
+   1       3432     4164     3444     3443
+   1       3428      369     3434     3437
+   1       3432     3437     3444      538
+   1       3429     3434      371     3444
+   1       3428     3432     3434     3429
+   1       3428     3432     3437     3434
+   1       3432     3429     3444     3434
+   1       3432     3437     3434     3444
+   1        979       34      981      977
+   1       3349      977     3350      352
+   1       3363      981      356     3350
+   1        979     3349      981     3363
+   1        979     3349      977      981
+   1       3349     3363     3350      981
+   1       3349      977      981     3350
+   1       3353      352     3354     1002
+   1       1005     1002     1008       37
+   1       3429     3354      371     1008
+   1       3353     1005     3354     3429
+   1       3353     1005     1002     3354
+   1       1005     3429     1008     3354
+   1       1005     1002     3354     1008
+   1       3374      356     1492     3372
+   1       3443     3372     1493      371
+   1       1494     1492       88     1493
+   1       3374     3443     1492     1494
+   1       3374     3443     3372     1492
+   1       3443     1494     1493     1492
+   1       3443     3372     1492     1493
+   1       3364      368     3371     3431
+   1       3365     3431     3374      533
+   1       3363     3371      356     3374
+   1       3364     3365     3371     3363
+   1       3364     3365     3431     3371
+   1       3365     3363     3374     3371
+   1       3365     3431     3371     3374
+   1       3364      368     3353     3371
+   1       3349     3353      352     3350
+   1       3363     3371     3350      356
+   1       3364     3349     3363     3371
+   1       3364     3349     3371     3353
+   1       3349     3363     3371     3350
+   1       3349     3353     3350     3371
+   1       3431      533     3443     3374
+   1       3371     3374     3372      356
+   1       3429     3443      371     3372
+   1       3431     3371     3443     3429
+   1       3431     3371     3374     3443
+   1       3371     3429     3372     3443
+   1       3371     3374     3443     3372
+   1       3353      352     3350     3354
+   1       3371     3350      356     3372
+   1       3429     3354     3372      371
+   1       3353     3371     3429     3354
+   1       3353     3371     3354     3350
+   1       3371     3429     3354     3372
+   1       3371     3350     3372     3354
+   1        810       14      808      815
+   1       2386      808      204     2388
+   1       2402      815     2388      211
+   1        810     2386     2402      815
+   1        810     2386      815      808
+   1       2386     2402      815     2388
+   1       2386      808     2388      815
+   1       2390      204     1062     2392
+   1       1067     1062       44     1069
+   1       3602     2392     1069      408
+   1       2390     1067     3602     2392
+   1       2390     1067     2392     1062
+   1       1067     3602     2392     1069
+   1       1067     1062     1069     2392
+   1       2442      211     2439     1528
+   1       3611     2439      408     1531
+   1       1534     1528     1531       91
+   1       2442     3611     1534     1528
+   1       2442     3611     1528     2439
+   1       3611     1534     1528     1531
+   1       3611     2439     1531     1528
+   1       2403      406     3603     2438
+   1       2406     3603      556     2442
+   1       2402     2438     2442      211
+   1       2403     2406     2402     2438
+   1       2403     2406     2438     3603
+   1       2406     2402     2438     2442
+   1       2406     3603     2442     2438
+   1       2403      406     2438     2390
+   1       2386     2390     2388      204
+   1       2402     2438      211     2388
+   1       2403     2386     2438     2402
+   1       2403     2386     2390     2438
+   1       2386     2402     2388     2438
+   1       2386     2390     2438     2388
+   1       3603      556     2442     3611
+   1       2438     2442      211     2439
+   1       3602     3611     2439      408
+   1       3603     2438     3602     3611
+   1       3603     2438     3611     2442
+   1       2438     3602     3611     2439
+   1       2438     2442     2439     3611
+   1       2390      204     2392     2388
+   1       2438     2388     2439      211
+   1       3602     2392      408     2439
+   1       2390     2438     2392     3602
+   1       2390     2438     2388     2392
+   1       2438     3602     2439     2392
+   1       2438     2388     2392     2439
+   1       1063       44     1061     1065
+   1       2022     1061      142     2024
+   1       3559     1065     2024      404
+   1       1063     2022     3559     1065
+   1       1063     2022     1065     1061
+   1       2022     3559     1065     2024
+   1       2022     1061     2024     1065
+   1       2014      142      746     2020
+   1        745      746        4      748
+   1       2015     2020      748      144
+   1       2014      745     2015     2020
+   1       2014      745     2020      746
+   1        745     2015     2020      748
+   1        745      746      748     2020
+   1       3564      404     2032     1081
+   1       2031     2032      144     1078
+   1       1080     1081     1078       46
+   1       3564     2031     1080     1081
+   1       3564     2031     1081     2032
+   1       2031     1080     1081     1078
+   1       2031     2032     1078     1081
+   1       2016      141     2017     2018
+   1       3556     2017      399     3564
+   1       3559     2018     3564      404
+   1       2016     3556     3559     2018
+   1       2016     3556     2018     2017
+   1       3556     3559     2018     3564
+   1       3556     2017     3564     2018
+   1       2016      141     2018     2014
+   1       2022     2014     2024      142
+   1       3559     2018      404     2024
+   1       2016     2022     2018     3559
+   1       2016     2022     2014     2018
+   1       2022     3559     2024     2018
+   1       2022     2014     2018     2024
+   1       2017      399     3564     2031
+   1       2018     3564      404     2032
+   1       2015     2031     2032      144
+   1       2017     2018     2015     2031
+   1       2017     2018     2031     3564
+   1       2018     2015     2031     2032
+   1       2018     3564     2032     2031
+   1       2014      142     2020     2024
+   1       2018     2024     2032      404
+   1       2015     2020      144     2032
+   1       2014     2018     2020     2015
+   1       2014     2018     2024     2020
+   1       2018     2015     2032     2020
+   1       2018     2024     2020     2032
+   1       1536       91     1532     1529
+   1       3643     1532      416     2942
+   1       2944     1529     2942      280
+   1       1536     3643     2944     1529
+   1       1536     3643     1529     1532
+   1       3643     2944     1529     2942
+   1       3643     1532     2942     1529
+   1       3639      416     1084     2918
+   1       1083     1084       46     1079
+   1       2917     2918     1079      276
+   1       3639     1083     2917     2918
+   1       3639     1083     2918     1084
+   1       1083     2917     2918     1079
+   1       1083     1084     1079     2918
+   1       2927      280     2915      884
+   1       2914     2915      276      880
+   1        882      884      880       22
+   1       2927     2914      882      884
+   1       2927     2914      884     2915
+   1       2914      882      884      880
+   1       2914     2915      880      884
+   1       3640      415     2929     2941
+   1       2931     2929      278     2927
+   1       2944     2941     2927      280
+   1       3640     2931     2944     2941
+   1       3640     2931     2941     2929
+   1       2931     2944     2941     2927
+   1       2931     2929     2927     2941
+   1       3640      415     2941     3639
+   1       3643     3639     2942      416
+   1       2944     2941      280     2942
+   1       3640     3643     2941     2944
+   1       3640     3643     3639     2941
+   1       3643     2944     2942     2941
+   1       3643     3639     2941     2942
+   1       2929      278     2927     2914
+   1       2941     2927      280     2915
+   1       2917     2914     2915      276
+   1       2929     2941     2917     2914
+   1       2929     2941     2914     2927
+   1       2941     2917     2914     2915
+   1       2941     2927     2915     2914
+   1       3639      416     2918     2942
+   1       2941     2942     2915      280
+   1       2917     2918      276     2915
+   1       3639     2941     2918     2917
+   1       3639     2941     2942     2918
+   1       2941     2917     2915     2918
+   1       2941     2942     2918     2915
+   1       1058       43     1059     1060
+   1       3567     1059      401     3572
+   1       3568     1060     3572      402
+   1       1058     3567     3568     1060
+   1       1058     3567     1060     1059
+   1       3567     3568     1060     3572
+   1       3567     1059     3572     1060
+   1       3574      401     1376     3575
+   1       1379     1376       78     1382
+   1       4246     3575     1382      564
+   1       3574     1379     4246     3575
+   1       3574     1379     3575     1376
+   1       1379     4246     3575     1382
+   1       1379     1376     1382     3575
+   1       3582      402     3583     1530
+   1       4252     3583      564     1536
+   1       1534     1530     1536       91
+   1       3582     4252     1534     1530
+   1       3582     4252     1530     3583
+   1       4252     1534     1530     1536
+   1       4252     3583     1536     1530
+   1       3570      554     4243     3581
+   1       3571     4243      556     3582
+   1       3568     3581     3582      402
+   1       3570     3571     3568     3581
+   1       3570     3571     3581     4243
+   1       3571     3568     3581     3582
+   1       3571     4243     3582     3581
+   1       3570      554     3581     3574
+   1       3567     3574     3572      401
+   1       3568     3581      402     3572
+   1       3570     3567     3581     3568
+   1       3570     3567     3574     3581
+   1       3567     3568     3572     3581
+   1       3567     3574     3581     3572
+   1       4243      556     3582     4252
+   1       3581     3582      402     3583
+   1       4246     4252     3583      564
+   1       4243     3581     4246     4252
+   1       4243     3581     4252     3582
+   1       3581     4246     4252     3583
+   1       3581     3582     3583     4252
+   1       3574      401     3575     3572
+   1       3581     3572     3583      402
+   1       4246     3575      564     3583
+   1       3574     3581     3575     4246
+   1       3574     3581     3572     3575
+   1       3581     4246     3583     3575
+   1       3581     3572     3575     3583
+   1       1058       43     1060     1056
+   1       3557     1056     3558      398
+   1       3568     1060      402     3558
+   1       1058     3557     1060     3568
+   1       1058     3557     1056     1060
+   1       3557     3568     3558     1060
+   1       3557     1056     1060     3558
+   1       3560      398     3561     1063
+   1       1067     1063     1069       44
+   1       3602     3561      408     1069
+   1       3560     1067     3561     3602
+   1       3560     1067     1063     3561
+   1       1067     3602     1069     3561
+   1       1067     1063     3561     1069
+   1       3582      402     1530     3578
+   1       3611     3578     1531      408
+   1       1534     1530       91     1531
+   1       3582     3611     1530     1534
+   1       3582     3611     3578     1530
+   1       3611     1534     1531     1530
+   1       3611     3578     1530     1531
+   1       3569      406     3577     3603
+   1       3571     3603     3582      556
+   1       3568     3577      402     3582
+   1       3569     3571     3577     3568
+   1       3569     3571     3603     3577
+   1       3571     3568     3582     3577
+   1       3571     3603     3577     3582
+   1       3569      406     3560     3577
+   1       3557     3560      398     3558
+   1       3568     3577     3558      402
+   1       3569     3557     3568     3577
+   1       3569     3557     3577     3560
+   1       3557     3568     3577     3558
+   1       3557     3560     3558     3577
+   1       3603      556     3611     3582
+   1       3577     3582     3578      402
+   1       3602     3611      408     3578
+   1       3603     3577     3611     3602
+   1       3603     3577     3582     3611
+   1       3577     3602     3578     3611
+   1       3577     3582     3611     3578
+   1       3560      398     3558     3561
+   1       3577     3558      402     3578
+   1       3602     3561     3578      408
+   1       3560     3577     3602     3561
+   1       3560     3577     3561     3558
+   1       3577     3602     3561     3578
+   1       3577     3558     3578     3561
+   1       1376       78     1382     1377
+   1       3575     1382      564     3640
+   1       3573     1377     3640      415
+   1       1376     3575     3573     1377
+   1       1376     3575     1377     1382
+   1       3575     3573     1377     3640
+   1       3575     1382     3640     1377
+   1       3583      564     1536     3643
+   1       1530     1536       91     1532
+   1       3580     3643     1532      416
+   1       3583     1530     3580     3643
+   1       3583     1530     3643     1536
+   1       1530     3580     3643     1532
+   1       1530     1536     1532     3643
+   1       3565      415     3639     1083
+   1       3566     3639      416     1084
+   1       1080     1083     1084       46
+   1       3565     3566     1080     1083
+   1       3565     3566     1083     3639
+   1       3566     1080     1083     1084
+   1       3566     3639     1084     1083
+   1       3572      402     3563     3579
+   1       3562     3563      399     3565
+   1       3573     3579     3565      415
+   1       3572     3562     3573     3579
+   1       3572     3562     3579     3563
+   1       3562     3573     3579     3565
+   1       3562     3563     3565     3579
+   1       3572      402     3579     3583
+   1       3575     3583     3640      564
+   1       3573     3579      415     3640
+   1       3572     3575     3579     3573
+   1       3572     3575     3583     3579
+   1       3575     3573     3640     3579
+   1       3575     3583     3579     3640
+   1       3563      399     3565     3566
+   1       3579     3565      415     3639
+   1       3580     3566     3639      416
+   1       3563     3579     3580     3566
+   1       3563     3579     3566     3565
+   1       3579     3580     3566     3639
+   1       3579     3565     3639     3566
+   1       3583      564     3643     3640
+   1       3579     3640     3639      415
+   1       3580     3643      416     3639
+   1       3583     3579     3643     3580
+   1       3583     3579     3640     3643
+   1       3579     3580     3639     3643
+   1       3579     3640     3643     3639
+   1       1063       44     1065     1069
+   1       3561     1069     3591      408
+   1       3559     1065      404     3591
+   1       1063     3561     1065     3559
+   1       1063     3561     1069     1065
+   1       3561     3559     3591     1065
+   1       3561     1069     1065     3591
+   1       3578      408     3609     1531
+   1       1530     1531     1532       91
+   1       3580     3609      416     1532
+   1       3578     1530     3609     3580
+   1       3578     1530     1531     3609
+   1       1530     3580     1532     3609
+   1       1530     1531     3609     1532
+   1       3564      404     1081     3593
+   1       3566     3593     1084      416
+   1       1080     1081       46     1084
+   1       3564     3566     1081     1080
+   1       3564     3566     3593     1081
+   1       3566     1080     1084     1081
+   1       3566     3593     1081     1084
+   1       3558      402     3576     3563
+   1       3556     3563     3564      399
+   1       3559     3576      404     3564
+   1       3558     3556     3576     3559
+   1       3558     3556     3563     3576
+   1       3556     3559     3564     3576
+   1       3556     3563     3576     3564
+   1       3558      402     3578     3576
+   1       3561     3578      408     3591
+   1       3559     3576     3591      404
+   1       3558     3561     3559     3576
+   1       3558     3561     3576     3578
+   1       3561     3559     3576     3591
+   1       3561     3578     3591     3576
+   1       3563      399     3566     3564
+   1       3576     3564     3593      404
+   1       3580     3566      416     3593
+   1       3563     3576     3566     3580
+   1       3563     3576     3564     3566
+   1       3576     3580     3593     3566
+   1       3576     3564     3566     3593
+   1       3578      408     3591     3609
+   1       3576     3591      404     3593
+   1       3580     3609     3593      416
+   1       3578     3576     3580     3609
+   1       3578     3576     3609     3591
+   1       3576     3580     3609     3593
+   1       3576     3591     3593     3609
+   1        836       17      842      833
+   1       2596      842      238     2562
+   1       2560      833     2562      229
+   1        836     2596     2560      833
+   1        836     2596      833      842
+   1       2596     2560      833     2562
+   1       2596      842     2562      833
+   1       2652      238     1686     2650
+   1       1692     1686      104     1688
+   1       3860     2650     1688      463
+   1       2652     1692     3860     2650
+   1       2652     1692     2650     1686
+   1       1692     3860     2650     1688
+   1       1692     1686     1688     2650
+   1       2565      229     2567     1154
+   1       3842     2567      463     1163
+   1       1160     1154     1163       56
+   1       2565     3842     1160     1154
+   1       2565     3842     1154     2567
+   1       3842     1160     1154     1163
+   1       3842     2567     1163     1154
+   1       2602      575     3845     2570
+   1       2597     3845      460     2565
+   1       2560     2570     2565      229
+   1       2602     2597     2560     2570
+   1       2602     2597     2570     3845
+   1       2597     2560     2570     2565
+   1       2597     3845     2565     2570
+   1       2602      575     2570     2652
+   1       2596     2652     2562      238
+   1       2560     2570      229     2562
+   1       2602     2596     2570     2560
+   1       2602     2596     2652     2570
+   1       2596     2560     2562     2570
+   1       2596     2652     2570     2562
+   1       3845      460     2565     3842
+   1       2570     2565      229     2567
+   1       3860     3842     2567      463
+   1       3845     2570     3860     3842
+   1       3845     2570     3842     2565
+   1       2570     3860     3842     2567
+   1       2570     2565     2567     3842
+   1       2652      238     2650     2562
+   1       2570     2562     2567      229
+   1       3860     2650      463     2567
+   1       2652     2570     2650     3860
+   1       2652     2570     2562     2650
+   1       2570     3860     2567     2650
+   1       2570     2562     2650     2567
+   1       1693      104     1687     1689
+   1       2953     1687      281     2951
+   1       3909     1689     2951      474
+   1       1693     2953     3909     1689
+   1       1693     2953     1689     1687
+   1       2953     3909     1689     2951
+   1       2953     1687     2951     1689
+   1       2933      281      885     2921
+   1        883      885       22      881
+   1       2920     2921      881      277
+   1       2933      883     2920     2921
+   1       2933      883     2921      885
+   1        883     2920     2921      881
+   1        883      885      881     2921
+   1       3906      474     2924     1182
+   1       2923     2924      277     1177
+   1       1181     1182     1177       58
+   1       3906     2923     1181     1182
+   1       3906     2923     1182     2924
+   1       2923     1181     1182     1177
+   1       2923     2924     1177     1182
+   1       2938      279     2934     2935
+   1       3907     2934      473     3906
+   1       3909     2935     3906      474
+   1       2938     3907     3909     2935
+   1       2938     3907     2935     2934
+   1       3907     3909     2935     3906
+   1       3907     2934     3906     2935
+   1       2938      279     2935     2933
+   1       2953     2933     2951      281
+   1       3909     2935      474     2951
+   1       2938     2953     2935     3909
+   1       2938     2953     2933     2935
+   1       2953     3909     2951     2935
+   1       2953     2933     2935     2951
+   1       2934      473     3906     2923
+   1       2935     3906      474     2924
+   1       2920     2923     2924      277
+   1       2934     2935     2920     2923
+   1       2934     2935     2923     3906
+   1       2935     2920     2923     2924
+   1       2935     3906     2924     2923
+   1       2933      281     2921     2951
+   1       2935     2951     2924      474
+   1       2920     2921      277     2924
+   1       2933     2935     2921     2920
+   1       2933     2935     2951     2921
+   1       2935     2920     2924     2921
+   1       2935     2951     2921     2924
+   1       1155       56     1157     1153
+   1       3775     1157      457     2079
+   1       2076     1153     2079      154
+   1       1155     3775     2076     1153
+   1       1155     3775     1153     1157
+   1       3775     2076     1153     2079
+   1       3775     1157     2079     1153
+   1       3785      457     1179     2090
+   1       1178     1179       58     1176
+   1       2089     2090     1176      156
+   1       3785     1178     2089     2090
+   1       3785     1178     2090     1179
+   1       1178     2089     2090     1176
+   1       1178     1179     1176     2090
+   1       2065      154     2073      758
+   1       2067     2073      156      760
+   1        757      758      760        7
+   1       2065     2067      757      758
+   1       2065     2067      758     2073
+   1       2067      757      758      760
+   1       2067     2073      760      758
+   1       3770      451     2070     2077
+   1       2068     2070      153     2065
+   1       2076     2077     2065      154
+   1       3770     2068     2076     2077
+   1       3770     2068     2077     2070
+   1       2068     2076     2077     2065
+   1       2068     2070     2065     2077
+   1       3770      451     2077     3785
+   1       3775     3785     2079      457
+   1       2076     2077      154     2079
+   1       3770     3775     2077     2076
+   1       3770     3775     3785     2077
+   1       3775     2076     2079     2077
+   1       3775     3785     2077     2079
+   1       2070      153     2065     2067
+   1       2077     2065      154     2073
+   1       2089     2067     2073      156
+   1       2070     2077     2089     2067
+   1       2070     2077     2067     2065
+   1       2077     2089     2067     2073
+   1       2077     2065     2073     2067
+   1       3785      457     2090     2079
+   1       2077     2079     2073      154
+   1       2089     2090      156     2073
+   1       3785     2077     2090     2089
+   1       3785     2077     2079     2090
+   1       2077     2089     2073     2090
+   1       2077     2079     2090     2073
+   1       1430       82     1424     1425
+   1       3802     1424      454     3800
+   1       3849     1425     3800      461
+   1       1430     3802     3849     1425
+   1       1430     3802     1425     1424
+   1       3802     3849     1425     3800
+   1       3802     1424     3800     1425
+   1       3789      454     1151     3772
+   1       1149     1151       55     1146
+   1       3771     3772     1146      449
+   1       3789     1149     3771     3772
+   1       3789     1149     3772     1151
+   1       1149     3771     3772     1146
+   1       1149     1151     1146     3772
+   1       3840      461     3777     1161
+   1       3776     3777      449     1155
+   1       1160     1161     1155       56
+   1       3840     3776     1160     1161
+   1       3840     3776     1161     3777
+   1       3776     1160     1161     1155
+   1       3776     3777     1155     1161
+   1       3794      452     3791     3792
+   1       3843     3791      460     3840
+   1       3849     3792     3840      461
+   1       3794     3843     3849     3792
+   1       3794     3843     3792     3791
+   1       3843     3849     3792     3840
+   1       3843     3791     3840     3792
+   1       3794      452     3792     3789
+   1       3802     3789     3800      454
+   1       3849     3792      461     3800
+   1       3794     3802     3792     3849
+   1       3794     3802     3789     3792
+   1       3802     3849     3800     3792
+   1       3802     3789     3792     3800
+   1       3791      460     3840     3776
+   1       3792     3840      461     3777
+   1       3771     3776     3777      449
+   1       3791     3792     3771     3776
+   1       3791     3792     3776     3840
+   1       3792     3771     3776     3777
+   1       3792     3840     3777     3776
+   1       3789      454     3772     3800
+   1       3792     3800     3777      461
+   1       3771     3772      449     3777
+   1       3789     3792     3772     3771
+   1       3789     3792     3800     3772
+   1       3792     3771     3777     3772
+   1       3792     3800     3772     3777
+   1       1430       82     1425     1431
+   1       4322     1431     3851      578
+   1       3849     1425      461     3851
+   1       1430     4322     1425     3849
+   1       1430     4322     1431     1425
+   1       4322     3849     3851     1425
+   1       4322     1431     1425     3851
+   1       4327      578     3861     1693
+   1       1692     1693     1688      104
+   1       3860     3861      463     1688
+   1       4327     1692     3861     3860
+   1       4327     1692     1693     3861
+   1       1692     3860     1688     3861
+   1       1692     1693     3861     1688
+   1       3840      461     1161     3846
+   1       3842     3846     1163      463
+   1       1160     1161       56     1163
+   1       3840     3842     1161     1160
+   1       3840     3842     3846     1161
+   1       3842     1160     1163     1161
+   1       3842     3846     1161     1163
+   1       4321      575     3850     3845
+   1       3843     3845     3840      460
+   1       3849     3850      461     3840
+   1       4321     3843     3850     3849
+   1       4321     3843     3845     3850
+   1       3843     3849     3840     3850
+   1       3843     3845     3850     3840
+   1       4321      575     4327     3850
+   1       4322     4327      578     3851
+   1       3849     3850     3851      461
+   1       4321     4322     3849     3850
+   1       4321     4322     3850     4327
+   1       4322     3849     3850     3851
+   1       4322     4327     3851     3850
+   1       3845      460     3842     3840
+   1       3850     3840     3846      461
+   1       3860     3842      463     3846
+   1       3845     3850     3842     3860
+   1       3845     3850     3840     3842
+   1       3850     3860     3846     3842
+   1       3850     3840     3842     3846
+   1       4327      578     3851     3861
+   1       3850     3851      461     3846
+   1       3860     3861     3846      463
+   1       4327     3850     3860     3861
+   1       4327     3850     3861     3851
+   1       3850     3860     3861     3846
+   1       3850     3851     3846     3861
+   1       1151       55     1146     1148
+   1       3772     1146      449     3770
+   1       3784     1148     3770      451
+   1       1151     3772     3784     1148
+   1       1151     3772     1148     1146
+   1       3772     3784     1148     3770
+   1       3772     1146     3770     1148
+   1       3777      449     1155     3775
+   1       1161     1155       56     1157
+   1       3818     3775     1157      457
+   1       3777     1161     3818     3775
+   1       3777     1161     3775     1155
+   1       1161     3818     3775     1157
+   1       1161     1155     1157     3775
+   1       3787      451     3785     1178
+   1       3822     3785      457     1179
+   1       1181     1178     1179       58
+   1       3787     3822     1181     1178
+   1       3787     3822     1178     3785
+   1       3822     1181     1178     1179
+   1       3822     3785     1179     1178
+   1       3800      461     3847     3786
+   1       3801     3847      473     3787
+   1       3784     3786     3787      451
+   1       3800     3801     3784     3786
+   1       3800     3801     3786     3847
+   1       3801     3784     3786     3787
+   1       3801     3847     3787     3786
+   1       3800      461     3786     3777
+   1       3772     3777     3770      449
+   1       3784     3786      451     3770
+   1       3800     3772     3786     3784
+   1       3800     3772     3777     3786
+   1       3772     3784     3770     3786
+   1       3772     3777     3786     3770
+   1       3847      473     3787     3822
+   1       3786     3787      451     3785
+   1       3818     3822     3785      457
+   1       3847     3786     3818     3822
+   1       3847     3786     3822     3787
+   1       3786     3818     3822     3785
+   1       3786     3787     3785     3822
+   1       3777      449     3775     3770
+   1       3786     3770     3785      451
+   1       3818     3775      457     3785
+   1       3777     3786     3775     3818
+   1       3777     3786     3770     3775
+   1       3786     3818     3785     3775
+   1       3786     3770     3775     3785
+   1       1693      104     1689     1688
+   1       3861     1688     3859      463
+   1       3909     1689      474     3859
+   1       1693     3861     1689     3909
+   1       1693     3861     1688     1689
+   1       3861     3909     3859     1689
+   1       3861     1688     1689     3859
+   1       3846      463     3819     1163
+   1       1161     1163     1157       56
+   1       3818     3819      457     1157
+   1       3846     1161     3819     3818
+   1       3846     1161     1163     3819
+   1       1161     3818     1157     3819
+   1       1161     1163     3819     1157
+   1       3906      474     1182     3823
+   1       3822     3823     1179      457
+   1       1181     1182       58     1179
+   1       3906     3822     1182     1181
+   1       3906     3822     3823     1182
+   1       3822     1181     1179     1182
+   1       3822     3823     1182     1179
+   1       3851      461     3848     3847
+   1       3907     3847     3906      473
+   1       3909     3848      474     3906
+   1       3851     3907     3848     3909
+   1       3851     3907     3847     3848
+   1       3907     3909     3906     3848
+   1       3907     3847     3848     3906
+   1       3851      461     3846     3848
+   1       3861     3846      463     3859
+   1       3909     3848     3859      474
+   1       3851     3861     3909     3848
+   1       3851     3861     3848     3846
+   1       3861     3909     3848     3859
+   1       3861     3846     3859     3848
+   1       3847      473     3822     3906
+   1       3848     3906     3823      474
+   1       3818     3822      457     3823
+   1       3847     3848     3822     3818
+   1       3847     3848     3906     3822
+   1       3848     3818     3823     3822
+   1       3848     3906     3822     3823
+   1       3846      463     3859     3819
+   1       3848     3859      474     3823
+   1       3818     3819     3823      457
+   1       3846     3848     3818     3819
+   1       3846     3848     3819     3859
+   1       3848     3818     3819     3823
+   1       3848     3859     3823     3819
+   1        784       11      785      787
+   1       2218      785      181     2225
+   1       2220      787     2225      183
+   1        784     2218     2220      787
+   1        784     2218      787      785
+   1       2218     2220      787     2225
+   1       2218      785     2225      787
+   1       2228      181     1340     2229
+   1       1344     1340       75     1346
+   1       4093     2229     1346      549
+   1       2228     1344     4093     2229
+   1       2228     1344     2229     1340
+   1       1344     4093     2229     1346
+   1       1344     1340     1346     2229
+   1       2240      183     2241     1360
+   1       4101     2241      549     1366
+   1       1362     1360     1366       77
+   1       2240     4101     1362     1360
+   1       2240     4101     1360     2241
+   1       4101     1362     1360     1366
+   1       4101     2241     1366     1360
+   1       2222      516     4090     2238
+   1       2224     4090      518     2240
+   1       2220     2238     2240      183
+   1       2222     2224     2220     2238
+   1       2222     2224     2238     4090
+   1       2224     2220     2238     2240
+   1       2224     4090     2240     2238
+   1       2222      516     2238     2228
+   1       2218     2228     2225      181
+   1       2220     2238      183     2225
+   1       2222     2218     2238     2220
+   1       2222     2218     2228     2238
+   1       2218     2220     2225     2238
+   1       2218     2228     2238     2225
+   1       4090      518     2240     4101
+   1       2238     2240      183     2241
+   1       4093     4101     2241      549
+   1       4090     2238     4093     4101
+   1       4090     2238     4101     2240
+   1       2238     4093     4101     2241
+   1       2238     2240     2241     4101
+   1       2228      181     2229     2225
+   1       2238     2225     2241      183
+   1       4093     2229      549     2241
+   1       2228     2238     2229     4093
+   1       2228     2238     2225     2229
+   1       2238     4093     2241     2229
+   1       2238     2225     2229     2241
+   1       1345       75     1341     1348
+   1       2284     1341      189     2285
+   1       4120     1348     2285      551
+   1       1345     2284     4120     1348
+   1       1345     2284     1348     1341
+   1       2284     4120     1348     2285
+   1       2284     1341     2285     1348
+   1       2265      189      793     2281
+   1        791      793       12      795
+   1       2267     2281      795      191
+   1       2265      791     2267     2281
+   1       2265      791     2281      793
+   1        791     2267     2281      795
+   1        791      793      795     2281
+   1       4134      551     2301     1404
+   1       2300     2301      191     1398
+   1       1402     1404     1398       80
+   1       4134     2300     1402     1404
+   1       4134     2300     1404     2301
+   1       2300     1402     1404     1398
+   1       2300     2301     1398     1404
+   1       2271      187     2273     2274
+   1       4118     2273      525     4134
+   1       4120     2274     4134      551
+   1       2271     4118     4120     2274
+   1       2271     4118     2274     2273
+   1       4118     4120     2274     4134
+   1       4118     2273     4134     2274
+   1       2271      187     2274     2265
+   1       2284     2265     2285      189
+   1       4120     2274      551     2285
+   1       2271     2284     2274     4120
+   1       2271     2284     2265     2274
+   1       2284     4120     2285     2274
+   1       2284     2265     2274     2285
+   1       2273      525     4134     2300
+   1       2274     4134      551     2301
+   1       2267     2300     2301      191
+   1       2273     2274     2267     2300
+   1       2273     2274     2300     4134
+   1       2274     2267     2300     2301
+   1       2274     4134     2301     2300
+   1       2265      189     2281     2285
+   1       2274     2285     2301      551
+   1       2267     2281      191     2301
+   1       2265     2274     2281     2267
+   1       2265     2274     2285     2281
+   1       2274     2267     2301     2281
+   1       2274     2285     2281     2301
+   1       1365       77     1369     1361
+   1       4169     1369      558     2589
+   1       2586     1361     2589      231
+   1       1365     4169     2586     1361
+   1       1365     4169     1361     1369
+   1       4169     2586     1361     2589
+   1       4169     1369     2589     1361
+   1       4177      558     1405     2599
+   1       1403     1405       80     1399
+   1       2598     2599     1399      232
+   1       4177     1403     2598     2599
+   1       4177     1403     2599     1405
+   1       1403     2598     2599     1399
+   1       1403     1405     1399     2599
+   1       2572      231     2583      835
+   1       2573     2583      232      836
+   1        834      835      836       17
+   1       2572     2573      834      835
+   1       2572     2573      835     2583
+   1       2573      834      835      836
+   1       2573     2583      836      835
+   1       4167      536     2579     2587
+   1       2578     2579      230     2572
+   1       2586     2587     2572      231
+   1       4167     2578     2586     2587
+   1       4167     2578     2587     2579
+   1       2578     2586     2587     2572
+   1       2578     2579     2572     2587
+   1       4167      536     2587     4177
+   1       4169     4177     2589      558
+   1       2586     2587      231     2589
+   1       4167     4169     2587     2586
+   1       4167     4169     4177     2587
+   1       4169     2586     2589     2587
+   1       4169     4177     2587     2589
+   1       2579      230     2572     2573
+   1       2587     2572      231     2583
+   1       2598     2573     2583      232
+   1       2579     2587     2598     2573
+   1       2579     2587     2573     2572
+   1       2587     2598     2573     2583
+   1       2587     2572     2583     2573
+   1       4177      558     2599     2589
+   1       2587     2589     2583      231
+   1       2598     2599      232     2583
+   1       4177     2587     2599     2598
+   1       4177     2587     2589     2599
+   1       2587     2598     2583     2599
+   1       2587     2589     2599     2583
+   1       1268       68     1270     1273
+   1       4075     1270      520     4108
+   1       4077     1273     4108      523
+   1       1268     4075     4077     1273
+   1       1268     4075     1273     1270
+   1       4075     4077     1273     4108
+   1       4075     1270     4108     1273
+   1       4085      520     1302     4112
+   1       1301     1302       71     1305
+   1       4089     4112     1305      534
+   1       4085     1301     4089     4112
+   1       4085     1301     4112     1302
+   1       1301     4089     4112     1305
+   1       1301     1302     1305     4112
+   1       4098      523     4122     1363
+   1       4100     4122      534     1365
+   1       1362     1363     1365       77
+   1       4098     4100     1362     1363
+   1       4098     4100     1363     4122
+   1       4100     1362     1363     1365
+   1       4100     4122     1365     1363
+   1       4072      515     4084     4086
+   1       4074     4084      518     4098
+   1       4077     4086     4098      523
+   1       4072     4074     4077     4086
+   1       4072     4074     4086     4084
+   1       4074     4077     4086     4098
+   1       4074     4084     4098     4086
+   1       4072      515     4086     4085
+   1       4075     4085     4108      520
+   1       4077     4086      523     4108
+   1       4072     4075     4086     4077
+   1       4072     4075     4085     4086
+   1       4075     4077     4108     4086
+   1       4075     4085     4086     4108
+   1       4084      518     4098     4100
+   1       4086     4098      523     4122
+   1       4089     4100     4122      534
+   1       4084     4086     4089     4100
+   1       4084     4086     4100     4098
+   1       4086     4089     4100     4122
+   1       4086     4098     4122     4100
+   1       4085      520     4112     4108
+   1       4086     4108     4122      523
+   1       4089     4112      534     4122
+   1       4085     4086     4112     4089
+   1       4085     4086     4108     4112
+   1       4086     4089     4122     4112
+   1       4086     4108     4112     4122
+   1       1268       68     1273     1272
+   1       4076     1272     4117      522
+   1       4077     1273      523     4117
+   1       1268     4076     1273     4077
+   1       1268     4076     1272     1273
+   1       4076     4077     4117     1273
+   1       4076     1272     1273     4117
+   1       4091      522     4119     1345
+   1       1344     1345     1346       75
+   1       4093     4119      549     1346
+   1       4091     1344     4119     4093
+   1       4091     1344     1345     4119
+   1       1344     4093     1346     4119
+   1       1344     1345     4119     1346
+   1       4098      523     1363     4124
+   1       4101     4124     1366      549
+   1       1362     1363       77     1366
+   1       4098     4101     1363     1362
+   1       4098     4101     4124     1363
+   1       4101     1362     1366     1363
+   1       4101     4124     1363     1366
+   1       4073      516     4092     4090
+   1       4074     4090     4098      518
+   1       4077     4092      523     4098
+   1       4073     4074     4092     4077
+   1       4073     4074     4090     4092
+   1       4074     4077     4098     4092
+   1       4074     4090     4092     4098
+   1       4073      516     4091     4092
+   1       4076     4091      522     4117
+   1       4077     4092     4117      523
+   1       4073     4076     4077     4092
+   1       4073     4076     4092     4091
+   1       4076     4077     4092     4117
+   1       4076     4091     4117     4092
+   1       4090      518     4101     4098
+   1       4092     4098     4124      523
+   1       4093     4101      549     4124
+   1       4090     4092     4101     4093
+   1       4090     4092     4098     4101
+   1       4092     4093     4124     4101
+   1       4092     4098     4101     4124
+   1       4091      522     4117     4119
+   1       4092     4117      523     4124
+   1       4093     4119     4124      549
+   1       4091     4092     4093     4119
+   1       4091     4092     4119     4117
+   1       4092     4093     4119     4124
+   1       4092     4117     4124     4119
+   1       1302       71     1305     1307
+   1       4112     1305      534     4167
+   1       4114     1307     4167      536
+   1       1302     4112     4114     1307
+   1       1302     4112     1307     1305
+   1       4112     4114     1307     4167
+   1       4112     1305     4167     1307
+   1       4122      534     1365     4169
+   1       1363     1365       77     1369
+   1       4126     4169     1369      558
+   1       4122     1363     4126     4169
+   1       4122     1363     4169     1365
+   1       1363     4126     4169     1369
+   1       1363     1365     1369     4169
+   1       4133      536     4177     1403
+   1       4135     4177      558     1405
+   1       1402     1403     1405       80
+   1       4133     4135     1402     1403
+   1       4133     4135     1403     4177
+   1       4135     1402     1403     1405
+   1       4135     4177     1405     1403
+   1       4108      523     4121     4123
+   1       4110     4121      525     4133
+   1       4114     4123     4133      536
+   1       4108     4110     4114     4123
+   1       4108     4110     4123     4121
+   1       4110     4114     4123     4133
+   1       4110     4121     4133     4123
+   1       4108      523     4123     4122
+   1       4112     4122     4167      534
+   1       4114     4123      536     4167
+   1       4108     4112     4123     4114
+   1       4108     4112     4122     4123
+   1       4112     4114     4167     4123
+   1       4112     4122     4123     4167
+   1       4121      525     4133     4135
+   1       4123     4133      536     4177
+   1       4126     4135     4177      558
+   1       4121     4123     4126     4135
+   1       4121     4123     4135     4133
+   1       4123     4126     4135     4177
+   1       4123     4133     4177     4135
+   1       4122      534     4169     4167
+   1       4123     4167     4177      536
+   1       4126     4169      558     4177
+   1       4122     4123     4169     4126
+   1       4122     4123     4167     4169
+   1       4123     4126     4177     4169
+   1       4123     4167     4169     4177
+   1       1345       75     1348     1346
+   1       4119     1346     4221      549
+   1       4120     1348      551     4221
+   1       1345     4119     1348     4120
+   1       1345     4119     1346     1348
+   1       4119     4120     4221     1348
+   1       4119     1346     1348     4221
+   1       4124      549     4224     1366
+   1       1363     1366     1369       77
+   1       4126     4224      558     1369
+   1       4124     1363     4224     4126
+   1       4124     1363     1366     4224
+   1       1363     4126     1369     4224
+   1       1363     1366     4224     1369
+   1       4134      551     1404     4231
+   1       4135     4231     1405      558
+   1       1402     1404       80     1405
+   1       4134     4135     1404     1402
+   1       4134     4135     4231     1404
+   1       4135     1402     1405     1404
+   1       4135     4231     1404     1405
+   1       4117      523     4125     4121
+   1       4118     4121     4134      525
+   1       4120     4125      551     4134
+   1       4117     4118     4125     4120
+   1       4117     4118     4121     4125
+   1       4118     4120     4134     4125
+   1       4118     4121     4125     4134
+   1       4117      523     4124     4125
+   1       4119     4124      549     4221
+   1       4120     4125     4221      551
+   1       4117     4119     4120     4125
+   1       4117     4119     4125     4124
+   1       4119     4120     4125     4221
+   1       4119     4124     4221     4125
+   1       4121      525     4135     4134
+   1       4125     4134     4231      551
+   1       4126     4135      558     4231
+   1       4121     4125     4135     4126
+   1       4121     4125     4134     4135
+   1       4125     4126     4231     4135
+   1       4125     4134     4135     4231
+   1       4124      549     4221     4224
+   1       4125     4221      551     4231
+   1       4126     4224     4231      558
+   1       4124     4125     4126     4224
+   1       4124     4125     4224     4221
+   1       4125     4126     4224     4231
+   1       4125     4221     4231     4224
+   1        784       11      787      786
+   1       2219      786     2231      182
+   1       2220      787      183     2231
+   1        784     2219      787     2220
+   1        784     2219      786      787
+   1       2219     2220     2231      787
+   1       2219      786      787     2231
+   1       2234      182     2235     1350
+   1       1354     1350     1356       76
+   1       4097     2235      553     1356
+   1       2234     1354     2235     4097
+   1       2234     1354     1350     2235
+   1       1354     4097     1356     2235
+   1       1354     1350     2235     1356
+   1       2240      183     1360     2243
+   1       4102     2243     1367      553
+   1       1362     1360       77     1367
+   1       2240     4102     1360     1362
+   1       2240     4102     2243     1360
+   1       4102     1362     1367     1360
+   1       4102     2243     1360     1367
+   1       2223      517     2239     4094
+   1       2224     4094     2240      518
+   1       2220     2239      183     2240
+   1       2223     2224     2239     2220
+   1       2223     2224     4094     2239
+   1       2224     2220     2240     2239
+   1       2224     4094     2239     2240
+   1       2223      517     2234     2239
+   1       2219     2234      182     2231
+   1       2220     2239     2231      183
+   1       2223     2219     2220     2239
+   1       2223     2219     2239     2234
+   1       2219     2220     2239     2231
+   1       2219     2234     2231     2239
+   1       4094      518     4102     2240
+   1       2239     2240     2243      183
+   1       4097     4102      553     2243
+   1       4094     2239     4102     4097
+   1       4094     2239     2240     4102
+   1       2239     4097     2243     4102
+   1       2239     2240     4102     2243
+   1       2234      182     2231     2235
+   1       2239     2231      183     2243
+   1       4097     2235     2243      553
+   1       2234     2239     4097     2235
+   1       2234     2239     2235     2231
+   1       2239     4097     2235     2243
+   1       2239     2231     2243     2235
+   1       1355       76     1358     1351
+   1       2404     1351     2405      206
+   1       4157     1358      555     2405
+   1       1355     2404     1358     4157
+   1       1355     2404     1351     1358
+   1       2404     4157     2405     1358
+   1       2404     1351     1358     2405
+   1       2394      206     2401      810
+   1        809      810      812       14
+   1       2395     2401      208      812
+   1       2394      809     2401     2395
+   1       2394      809      810     2401
+   1        809     2395      812     2401
+   1        809      810     2401      812
+   1       4165      555     1496     2419
+   1       2418     2419     1490      208
+   1       1494     1496       88     1490
+   1       4165     2418     1496     1494
+   1       4165     2418     2419     1496
+   1       2418     1494     1490     1496
+   1       2418     2419     1496     1490
+   1       2398      205     2400     2399
+   1       4155     2399     4165      533
+   1       4157     2400      555     4165
+   1       2398     4155     2400     4157
+   1       2398     4155     2399     2400
+   1       4155     4157     4165     2400
+   1       4155     2399     2400     4165
+   1       2398      205     2394     2400
+   1       2404     2394      206     2405
+   1       4157     2400     2405      555
+   1       2398     2404     4157     2400
+   1       2398     2404     2400     2394
+   1       2404     4157     2400     2405
+   1       2404     2394     2405     2400
+   1       2399      533     2418     4165
+   1       2400     4165     2419      555
+   1       2395     2418      208     2419
+   1       2399     2400     2418     2395
+   1       2399     2400     4165     2418
+   1       2400     2395     2419     2418
+   1       2400     4165     2418     2419
+   1       2394      206     2405     2401
+   1       2400     2405      555     2419
+   1       2395     2401     2419      208
+   1       2394     2400     2395     2401
+   1       2394     2400     2401     2405
+   1       2400     2395     2401     2419
+   1       2400     2405     2419     2401
+   1       1365       77     1361     1371
+   1       4170     1371     2590      560
+   1       2586     1361      231     2590
+   1       1365     4170     1361     2586
+   1       1365     4170     1371     1361
+   1       4170     2586     2590     1361
+   1       4170     1371     1361     2590
+   1       4182      560     2617     1497
+   1       1495     1497     1491       88
+   1       2616     2617      234     1491
+   1       4182     1495     2617     2616
+   1       4182     1495     1497     2617
+   1       1495     2616     1491     2617
+   1       1495     1497     2617     1491
+   1       2572      231      835     2584
+   1       2575     2584      838      234
+   1        834      835       17      838
+   1       2572     2575      835      834
+   1       2572     2575     2584      835
+   1       2575      834      838      835
+   1       2575     2584      835      838
+   1       4168      538     2588     2581
+   1       2578     2581     2572      230
+   1       2586     2588      231     2572
+   1       4168     2578     2588     2586
+   1       4168     2578     2581     2588
+   1       2578     2586     2572     2588
+   1       2578     2581     2588     2572
+   1       4168      538     4182     2588
+   1       4170     4182      560     2590
+   1       2586     2588     2590      231
+   1       4168     4170     2586     2588
+   1       4168     4170     2588     4182
+   1       4170     2586     2588     2590
+   1       4170     4182     2590     2588
+   1       2581      230     2575     2572
+   1       2588     2572     2584      231
+   1       2616     2575      234     2584
+   1       2581     2588     2575     2616
+   1       2581     2588     2572     2575
+   1       2588     2616     2584     2575
+   1       2588     2572     2575     2584
+   1       4182      560     2590     2617
+   1       2588     2590      231     2584
+   1       2616     2617     2584      234
+   1       4182     2588     2616     2617
+   1       4182     2588     2617     2590
+   1       2588     2616     2617     2584
+   1       2588     2590     2584     2617
+   1       1291       70     1294     1292
+   1       4081     1292     4150      530
+   1       4083     1294      532     4150
+   1       1291     4081     1294     4083
+   1       1291     4081     1292     1294
+   1       4081     4083     4150     1294
+   1       4081     1292     1294     4150
+   1       4087      530     4152     1304
+   1       1301     1304     1305       71
+   1       4089     4152      534     1305
+   1       4087     1301     4152     4089
+   1       4087     1301     1304     4152
+   1       1301     4089     1305     4152
+   1       1301     1304     4152     1305
+   1       4099      532     1364     4159
+   1       4100     4159     1365      534
+   1       1362     1364       77     1365
+   1       4099     4100     1364     1362
+   1       4099     4100     4159     1364
+   1       4100     1362     1365     1364
+   1       4100     4159     1364     1365
+   1       4078      515     4088     4084
+   1       4080     4084     4099      518
+   1       4083     4088      532     4099
+   1       4078     4080     4088     4083
+   1       4078     4080     4084     4088
+   1       4080     4083     4099     4088
+   1       4080     4084     4088     4099
+   1       4078      515     4087     4088
+   1       4081     4087      530     4150
+   1       4083     4088     4150      532
+   1       4078     4081     4083     4088
+   1       4078     4081     4088     4087
+   1       4081     4083     4088     4150
+   1       4081     4087     4150     4088
+   1       4084      518     4100     4099
+   1       4088     4099     4159      532
+   1       4089     4100      534     4159
+   1       4084     4088     4100     4089
+   1       4084     4088     4099     4100
+   1       4088     4089     4159     4100
+   1       4088     4099     4100     4159
+   1       4087      530     4150     4152
+   1       4088     4150      532     4159
+   1       4089     4152     4159      534
+   1       4087     4088     4089     4152
+   1       4087     4088     4152     4150
+   1       4088     4089     4152     4159
+   1       4088     4150     4159     4152
+   1       1291       70     1293     1294
+   1       4082     1293      531     4154
+   1       4083     1294     4154      532
+   1       1291     4082     4083     1294
+   1       1291     4082     1294     1293
+   1       4082     4083     1294     4154
+   1       4082     1293     4154     1294
+   1       4095      531     1355     4156
+   1       1354     1355       76     1356
+   1       4097     4156     1356      553
+   1       4095     1354     4097     4156
+   1       4095     1354     4156     1355
+   1       1354     4097     4156     1356
+   1       1354     1355     1356     4156
+   1       4099      532     4161     1364
+   1       4102     4161      553     1367
+   1       1362     1364     1367       77
+   1       4099     4102     1362     1364
+   1       4099     4102     1364     4161
+   1       4102     1362     1364     1367
+   1       4102     4161     1367     1364
+   1       4079      517     4094     4096
+   1       4080     4094      518     4099
+   1       4083     4096     4099      532
+   1       4079     4080     4083     4096
+   1       4079     4080     4096     4094
+   1       4080     4083     4096     4099
+   1       4080     4094     4099     4096
+   1       4079      517     4096     4095
+   1       4082     4095     4154      531
+   1       4083     4096      532     4154
+   1       4079     4082     4096     4083
+   1       4079     4082     4095     4096
+   1       4082     4083     4154     4096
+   1       4082     4095     4096     4154
+   1       4094      518     4099     4102
+   1       4096     4099      532     4161
+   1       4097     4102     4161      553
+   1       4094     4096     4097     4102
+   1       4094     4096     4102     4099
+   1       4096     4097     4102     4161
+   1       4096     4099     4161     4102
+   1       4095      531     4156     4154
+   1       4096     4154     4161      532
+   1       4097     4156      553     4161
+   1       4095     4096     4156     4097
+   1       4095     4096     4154     4156
+   1       4096     4097     4161     4156
+   1       4096     4154     4156     4161
+   1       1304       71     1309     1305
+   1       4152     1305     4168      534
+   1       4153     1309      538     4168
+   1       1304     4152     1309     4153
+   1       1304     4152     1305     1309
+   1       4152     4153     4168     1309
+   1       4152     1305     1309     4168
+   1       4159      534     4170     1365
+   1       1364     1365     1371       77
+   1       4163     4170      560     1371
+   1       4159     1364     4170     4163
+   1       4159     1364     1365     4170
+   1       1364     4163     1371     4170
+   1       1364     1365     4170     1371
+   1       4164      538     1495     4182
+   1       4166     4182     1497      560
+   1       1494     1495       88     1497
+   1       4164     4166     1495     1494
+   1       4164     4166     4182     1495
+   1       4166     1494     1497     1495
+   1       4166     4182     1495     1497
+   1       4150      532     4160     4158
+   1       4151     4158     4164      533
+   1       4153     4160      538     4164
+   1       4150     4151     4160     4153
+   1       4150     4151     4158     4160
+   1       4151     4153     4164     4160
+   1       4151     4158     4160     4164
+   1       4150      532     4159     4160
+   1       4152     4159      534     4168
+   1       4153     4160     4168      538
+   1       4150     4152     4153     4160
+   1       4150     4152     4160     4159
+   1       4152     4153     4160     4168
+   1       4152     4159     4168     4160
+   1       4158      533     4166     4164
+   1       4160     4164     4182      538
+   1       4163     4166      560     4182
+   1       4158     4160     4166     4163
+   1       4158     4160     4164     4166
+   1       4160     4163     4182     4166
+   1       4160     4164     4166     4182
+   1       4159      534     4168     4170
+   1       4160     4168      538     4182
+   1       4163     4170     4182      560
+   1       4159     4160     4163     4170
+   1       4159     4160     4170     4168
+   1       4160     4163     4170     4182
+   1       4160     4168     4182     4170
+   1       1355       76     1356     1358
+   1       4156     1356      553     4238
+   1       4157     1358     4238      555
+   1       1355     4156     4157     1358
+   1       1355     4156     1358     1356
+   1       4156     4157     1358     4238
+   1       4156     1356     4238     1358
+   1       4161      553     1367     4241
+   1       1364     1367       77     1371
+   1       4163     4241     1371      560
+   1       4161     1364     4163     4241
+   1       4161     1364     4241     1367
+   1       1364     4163     4241     1371
+   1       1364     1367     1371     4241
+   1       4165      555     4248     1496
+   1       4166     4248      560     1497
+   1       1494     1496     1497       88
+   1       4165     4166     1494     1496
+   1       4165     4166     1496     4248
+   1       4166     1494     1496     1497
+   1       4166     4248     1497     1496
+   1       4154      532     4158     4162
+   1       4155     4158      533     4165
+   1       4157     4162     4165      555
+   1       4154     4155     4157     4162
+   1       4154     4155     4162     4158
+   1       4155     4157     4162     4165
+   1       4155     4158     4165     4162
+   1       4154      532     4162     4161
+   1       4156     4161     4238      553
+   1       4157     4162      555     4238
+   1       4154     4156     4162     4157
+   1       4154     4156     4161     4162
+   1       4156     4157     4238     4162
+   1       4156     4161     4162     4238
+   1       4158      533     4165     4166
+   1       4162     4165      555     4248
+   1       4163     4166     4248      560
+   1       4158     4162     4163     4166
+   1       4158     4162     4166     4165
+   1       4162     4163     4166     4248
+   1       4162     4165     4248     4166
+   1       4161      553     4241     4238
+   1       4162     4238     4248      555
+   1       4163     4241      560     4248
+   1       4161     4162     4241     4163
+   1       4161     4162     4238     4241
+   1       4162     4163     4248     4241
+   1       4162     4238     4241     4248
+   1        793       12      795      797
+   1       2281      795      191     2298
+   1       2282      797     2298      193
+   1        793     2281     2282      797
+   1        793     2281      797      795
+   1       2281     2282      797     2298
+   1       2281      795     2298      797
+   1       2301      191     1398     2304
+   1       1404     1398       80     1408
+   1       4233     2304     1408      572
+   1       2301     1404     4233     2304
+   1       2301     1404     2304     1398
+   1       1404     4233     2304     1408
+   1       1404     1398     1408     2304
+   1       2312      193     2313     1422
+   1       4236     2313      572     1430
+   1       1427     1422     1430       82
+   1       2312     4236     1427     1422
+   1       2312     4236     1422     2313
+   1       4236     1427     1422     1430
+   1       4236     2313     1430     1422
+   1       2285      551     4230     2311
+   1       2286     4230      552     2312
+   1       2282     2311     2312      193
+   1       2285     2286     2282     2311
+   1       2285     2286     2311     4230
+   1       2286     2282     2311     2312
+   1       2286     4230     2312     2311
+   1       2285      551     2311     2301
+   1       2281     2301     2298      191
+   1       2282     2311      193     2298
+   1       2285     2281     2311     2282
+   1       2285     2281     2301     2311
+   1       2281     2282     2298     2311
+   1       2281     2301     2311     2298
+   1       4230      552     2312     4236
+   1       2311     2312      193     2313
+   1       4233     4236     2313      572
+   1       4230     2311     4233     4236
+   1       4230     2311     4236     2312
+   1       2311     4233     4236     2313
+   1       2311     2312     2313     4236
+   1       2301      191     2304     2298
+   1       2311     2298     2313      193
+   1       4233     2304      572     2313
+   1       2301     2311     2304     4233
+   1       2301     2311     2298     2304
+   1       2311     4233     2313     2304
+   1       2311     2298     2304     2313
+   1       1405       80     1399     1411
+   1       2599     1399      232     2602
+   1       4263     1411     2602      575
+   1       1405     2599     4263     1411
+   1       1405     2599     1411     1399
+   1       2599     4263     1411     2602
+   1       2599     1399     2602     1411
+   1       2583      232      836     2596
+   1        835      836       17      842
+   1       2585     2596      842      238
+   1       2583      835     2585     2596
+   1       2583      835     2596      836
+   1        835     2585     2596      842
+   1        835      836      842     2596
+   1       4281      575     2652     1692
+   1       2651     2652      238     1686
+   1       1690     1692     1686      104
+   1       4281     2651     1690     1692
+   1       4281     2651     1692     2652
+   1       2651     1690     1692     1686
+   1       2651     2652     1686     1692
+   1       2589      231     2591     2592
+   1       4261     2591      562     4281
+   1       4263     2592     4281      575
+   1       2589     4261     4263     2592
+   1       2589     4261     2592     2591
+   1       4261     4263     2592     4281
+   1       4261     2591     4281     2592
+   1       2589      231     2592     2583
+   1       2599     2583     2602      232
+   1       4263     2592      575     2602
+   1       2589     2599     2592     4263
+   1       2589     2599     2583     2592
+   1       2599     4263     2602     2592
+   1       2599     2583     2592     2602
+   1       2591      562     4281     2651
+   1       2592     4281      575     2652
+   1       2585     2651     2652      238
+   1       2591     2592     2585     2651
+   1       2591     2592     2651     4281
+   1       2592     2585     2651     2652
+   1       2592     4281     2652     2651
+   1       2583      232     2596     2602
+   1       2592     2602     2652      575
+   1       2585     2596      238     2652
+   1       2583     2592     2596     2585
+   1       2583     2592     2602     2596
+   1       2592     2585     2652     2596
+   1       2592     2602     2596     2652
+   1       1429       82     1431     1423
+   1       4286     1431      578     2938
+   1       2936     1423     2938      279
+   1       1429     4286     2936     1423
+   1       1429     4286     1423     1431
+   1       4286     2936     1423     2938
+   1       4286     1431     2938     1423
+   1       4289      578     1693     2953
+   1       1691     1693      104     1687
+   1       2952     2953     1687      281
+   1       4289     1691     2952     2953
+   1       4289     1691     2953     1693
+   1       1691     2952     2953     1687
+   1       1691     1693     1687     2953
+   1       2926      279     2933      883
+   1       2928     2933      281      885
+   1        882      883      885       22
+   1       2926     2928      882      883
+   1       2926     2928      883     2933
+   1       2928      882      883      885
+   1       2928     2933      885      883
+   1       4285      565     2932     2937
+   1       2930     2932      278     2926
+   1       2936     2937     2926      279
+   1       4285     2930     2936     2937
+   1       4285     2930     2937     2932
+   1       2930     2936     2937     2926
+   1       2930     2932     2926     2937
+   1       4285      565     2937     4289
+   1       4286     4289     2938      578
+   1       2936     2937      279     2938
+   1       4285     4286     2937     2936
+   1       4285     4286     4289     2937
+   1       4286     2936     2938     2937
+   1       4286     4289     2937     2938
+   1       2932      278     2926     2928
+   1       2937     2926      279     2933
+   1       2952     2928     2933      281
+   1       2932     2937     2952     2928
+   1       2932     2937     2928     2926
+   1       2937     2952     2928     2933
+   1       2937     2926     2933     2928
+   1       4289      578     2953     2938
+   1       2937     2938     2933      279
+   1       2952     2953      281     2933
+   1       4289     2937     2953     2952
+   1       4289     2937     2938     2953
+   1       2937     2952     2933     2953
+   1       2937     2938     2953     2933
+   1       1366       77     1368     1370
+   1       4223     1368      557     4254
+   1       4225     1370     4254      559
+   1       1366     4223     4225     1370
+   1       1366     4223     1370     1368
+   1       4223     4225     1370     4254
+   1       4223     1368     4254     1370
+   1       4227      557     1380     4257
+   1       1378     1380       78     1381
+   1       4229     4257     1381      563
+   1       4227     1378     4229     4257
+   1       4227     1378     4257     1380
+   1       1378     4229     4257     1381
+   1       1378     1380     1381     4257
+   1       4234      559     4265     1428
+   1       4235     4265      563     1429
+   1       1427     1428     1429       82
+   1       4234     4235     1427     1428
+   1       4234     4235     1428     4265
+   1       4235     1427     1428     1429
+   1       4235     4265     1429     1428
+   1       4220      550     4226     4228
+   1       4222     4226      552     4234
+   1       4225     4228     4234      559
+   1       4220     4222     4225     4228
+   1       4220     4222     4228     4226
+   1       4222     4225     4228     4234
+   1       4222     4226     4234     4228
+   1       4220      550     4228     4227
+   1       4223     4227     4254      557
+   1       4225     4228      559     4254
+   1       4220     4223     4228     4225
+   1       4220     4223     4227     4228
+   1       4223     4225     4254     4228
+   1       4223     4227     4228     4254
+   1       4226      552     4234     4235
+   1       4228     4234      559     4265
+   1       4229     4235     4265      563
+   1       4226     4228     4229     4235
+   1       4226     4228     4235     4234
+   1       4228     4229     4235     4265
+   1       4228     4234     4265     4235
+   1       4227      557     4257     4254
+   1       4228     4254     4265      559
+   1       4229     4257      563     4265
+   1       4227     4228     4257     4229
+   1       4227     4228     4254     4257
+   1       4228     4229     4265     4257
+   1       4228     4254     4257     4265
+   1       1366       77     1370     1369
+   1       4224     1369     4260      558
+   1       4225     1370      559     4260
+   1       1366     4224     1370     4225
+   1       1366     4224     1369     1370
+   1       4224     4225     4260     1370
+   1       4224     1369     1370     4260
+   1       4231      558     4262     1405
+   1       1404     1405     1408       80
+   1       4233     4262      572     1408
+   1       4231     1404     4262     4233
+   1       4231     1404     1405     4262
+   1       1404     4233     1408     4262
+   1       1404     1405     4262     1408
+   1       4234      559     1428     4267
+   1       4236     4267     1430      572
+   1       1427     1428       82     1430
+   1       4234     4236     1428     1427
+   1       4234     4236     4267     1428
+   1       4236     1427     1430     1428
+   1       4236     4267     1428     1430
+   1       4221      551     4232     4230
+   1       4222     4230     4234      552
+   1       4225     4232      559     4234
+   1       4221     4222     4232     4225
+   1       4221     4222     4230     4232
+   1       4222     4225     4234     4232
+   1       4222     4230     4232     4234
+   1       4221      551     4231     4232
+   1       4224     4231      558     4260
+   1       4225     4232     4260      559
+   1       4221     4224     4225     4232
+   1       4221     4224     4232     4231
+   1       4224     4225     4232     4260
+   1       4224     4231     4260     4232
+   1       4230      552     4236     4234
+   1       4232     4234     4267      559
+   1       4233     4236      572     4267
+   1       4230     4232     4236     4233
+   1       4230     4232     4234     4236
+   1       4232     4233     4267     4236
+   1       4232     4234     4236     4267
+   1       4231      558     4260     4262
+   1       4232     4260      559     4267
+   1       4233     4262     4267      572
+   1       4231     4232     4233     4262
+   1       4231     4232     4262     4260
+   1       4232     4233     4262     4267
+   1       4232     4260     4267     4262
+   1       1380       78     1381     1383
+   1       4257     1381      563     4285
+   1       4259     1383     4285      565
+   1       1380     4257     4259     1383
+   1       1380     4257     1383     1381
+   1       4257     4259     1383     4285
+   1       4257     1381     4285     1383
+   1       4265      563     1429     4286
+   1       1428     1429       82     1431
+   1       4269     4286     1431      578
+   1       4265     1428     4269     4286
+   1       4265     1428     4286     1429
+   1       1428     4269     4286     1431
+   1       1428     1429     1431     4286
+   1       4280      565     4289     1691
+   1       4282     4289      578     1693
+   1       1690     1691     1693      104
+   1       4280     4282     1690     1691
+   1       4280     4282     1691     4289
+   1       4282     1690     1691     1693
+   1       4282     4289     1693     1691
+   1       4254      559     4264     4266
+   1       4256     4264      562     4280
+   1       4259     4266     4280      565
+   1       4254     4256     4259     4266
+   1       4254     4256     4266     4264
+   1       4256     4259     4266     4280
+   1       4256     4264     4280     4266
+   1       4254      559     4266     4265
+   1       4257     4265     4285      563
+   1       4259     4266      565     4285
+   1       4254     4257     4266     4259
+   1       4254     4257     4265     4266
+   1       4257     4259     4285     4266
+   1       4257     4265     4266     4285
+   1       4264      562     4280     4282
+   1       4266     4280      565     4289
+   1       4269     4282     4289      578
+   1       4264     4266     4269     4282
+   1       4264     4266     4282     4280
+   1       4266     4269     4282     4289
+   1       4266     4280     4289     4282
+   1       4265      563     4286     4285
+   1       4266     4285     4289      565
+   1       4269     4286      578     4289
+   1       4265     4266     4286     4269
+   1       4265     4266     4285     4286
+   1       4266     4269     4289     4286
+   1       4266     4285     4286     4289
+   1       1405       80     1411     1408
+   1       4262     1408     4321      572
+   1       4263     1411      575     4321
+   1       1405     4262     1411     4263
+   1       1405     4262     1408     1411
+   1       4262     4263     4321     1411
+   1       4262     1408     1411     4321
+   1       4267      572     4322     1430
+   1       1428     1430     1431       82
+   1       4269     4322      578     1431
+   1       4267     1428     4322     4269
+   1       4267     1428     1430     4322
+   1       1428     4269     1431     4322
+   1       1428     1430     4322     1431
+   1       4281      575     1692     4327
+   1       4282     4327     1693      578
+   1       1690     1692      104     1693
+   1       4281     4282     1692     1690
+   1       4281     4282     4327     1692
+   1       4282     1690     1693     1692
+   1       4282     4327     1692     1693
+   1       4260      559     4268     4264
+   1       4261     4264     4281      562
+   1       4263     4268      575     4281
+   1       4260     4261     4268     4263
+   1       4260     4261     4264     4268
+   1       4261     4263     4281     4268
+   1       4261     4264     4268     4281
+   1       4260      559     4267     4268
+   1       4262     4267      572     4321
+   1       4263     4268     4321      575
+   1       4260     4262     4263     4268
+   1       4260     4262     4268     4267
+   1       4262     4263     4268     4321
+   1       4262     4267     4321     4268
+   1       4264      562     4282     4281
+   1       4268     4281     4327      575
+   1       4269     4282      578     4327
+   1       4264     4268     4282     4269
+   1       4264     4268     4281     4282
+   1       4268     4269     4327     4282
+   1       4268     4281     4282     4327
+   1       4267      572     4321     4322
+   1       4268     4321      575     4327
+   1       4269     4322     4327      578
+   1       4267     4268     4269     4322
+   1       4267     4268     4322     4321
+   1       4268     4269     4322     4327
+   1       4268     4321     4327     4322
+   1        810       14      815      812
+   1       2401      812     2415      208
+   1       2402      815      211     2415
+   1        810     2401      815     2402
+   1        810     2401      812      815
+   1       2401     2402     2415      815
+   1       2401      812      815     2415
+   1       2419      208     2421     1490
+   1       1496     1490     1499       88
+   1       4250     2421      602     1499
+   1       2419     1496     2421     4250
+   1       2419     1496     1490     2421
+   1       1496     4250     1499     2421
+   1       1496     1490     2421     1499
+   1       2442      211     1528     2443
+   1       4253     2443     1537      602
+   1       1534     1528       91     1537
+   1       2442     4253     1528     1534
+   1       2442     4253     2443     1528
+   1       4253     1534     1537     1528
+   1       4253     2443     1528     1537
+   1       2405      555     2441     4247
+   1       2406     4247     2442      556
+   1       2402     2441      211     2442
+   1       2405     2406     2441     2402
+   1       2405     2406     4247     2441
+   1       2406     2402     2442     2441
+   1       2406     4247     2441     2442
+   1       2405      555     2419     2441
+   1       2401     2419      208     2415
+   1       2402     2441     2415      211
+   1       2405     2401     2402     2441
+   1       2405     2401     2441     2419
+   1       2401     2402     2441     2415
+   1       2401     2419     2415     2441
+   1       4247      556     4253     2442
+   1       2441     2442     2443      211
+   1       4250     4253      602     2443
+   1       4247     2441     4253     4250
+   1       4247     2441     2442     4253
+   1       2441     4250     2443     4253
+   1       2441     2442     4253     2443
+   1       2419      208     2415     2421
+   1       2441     2415      211     2443
+   1       4250     2421     2443      602
+   1       2419     2441     4250     2421
+   1       2419     2441     2421     2415
+   1       2441     4250     2421     2443
+   1       2441     2415     2443     2421
+   1       1497       88     1502     1491
+   1       2617     1491     2619      234
+   1       4273     1502      605     2619
+   1       1497     2617     1502     4273
+   1       1497     2617     1491     1502
+   1       2617     4273     2619     1502
+   1       2617     1491     1502     2619
+   1       2584      234     2613      838
+   1        835      838      842       17
+   1       2585     2613      238      842
+   1       2584      835     2613     2585
+   1       2584      835      838     2613
+   1        835     2585      842     2613
+   1        835      838     2613      842
+   1       4283      605     1694     2653
+   1       2651     2653     1686      238
+   1       1690     1694      104     1686
+   1       4283     2651     1694     1690
+   1       4283     2651     2653     1694
+   1       2651     1690     1686     1694
+   1       2651     2653     1694     1686
+   1       2590      231     2593     2591
+   1       4271     2591     4283      562
+   1       4273     2593      605     4283
+   1       2590     4271     2593     4273
+   1       2590     4271     2591     2593
+   1       4271     4273     4283     2593
+   1       4271     2591     2593     4283
+   1       2590      231     2584     2593
+   1       2617     2584      234     2619
+   1       4273     2593     2619      605
+   1       2590     2617     4273     2593
+   1       2590     2617     2593     2584
+   1       2617     4273     2593     2619
+   1       2617     2584     2619     2593
+   1       2591      562     2651     4283
+   1       2593     4283     2653      605
+   1       2585     2651      238     2653
+   1       2591     2593     2651     2585
+   1       2591     2593     4283     2651
+   1       2593     2585     2653     2651
+   1       2593     4283     2651     2653
+   1       2584      234     2619     2613
+   1       2593     2619      605     2653
+   1       2585     2613     2653      238
+   1       2584     2593     2585     2613
+   1       2584     2593     2613     2619
+   1       2593     2585     2613     2653
+   1       2593     2619     2653     2613
+   1       1536       91     1529     1539
+   1       4288     1539     2946      619
+   1       2944     1529      280     2946
+   1       1536     4288     1529     2944
+   1       1536     4288     1539     1529
+   1       4288     2944     2946     1529
+   1       4288     1539     1529     2946
+   1       4290      619     2954     1695
+   1       1691     1695     1687      104
+   1       2952     2954      281     1687
+   1       4290     1691     2954     2952
+   1       4290     1691     1695     2954
+   1       1691     2952     1687     2954
+   1       1691     1695     2954     1687
+   1       2927      280      884     2939
+   1       2928     2939      885      281
+   1        882      884       22      885
+   1       2927     2928      884      882
+   1       2927     2928     2939      884
+   1       2928      882      885      884
+   1       2928     2939      884      885
+   1       4287      565     2945     2932
+   1       2931     2932     2927      278
+   1       2944     2945      280     2927
+   1       4287     2931     2945     2944
+   1       4287     2931     2932     2945
+   1       2931     2944     2927     2945
+   1       2931     2932     2945     2927
+   1       4287      565     4290     2945
+   1       4288     4290      619     2946
+   1       2944     2945     2946      280
+   1       4287     4288     2944     2945
+   1       4287     4288     2945     4290
+   1       4288     2944     2945     2946
+   1       4288     4290     2946     2945
+   1       2932      278     2928     2927
+   1       2945     2927     2939      280
+   1       2952     2928      281     2939
+   1       2932     2945     2928     2952
+   1       2932     2945     2927     2928
+   1       2945     2952     2939     2928
+   1       2945     2927     2928     2939
+   1       4290      619     2946     2954
+   1       2945     2946      280     2939
+   1       2952     2954     2939      281
+   1       4290     2945     2952     2954
+   1       4290     2945     2954     2946
+   1       2945     2952     2954     2939
+   1       2945     2946     2939     2954
+   1       1367       77     1372     1368
+   1       4240     1368     4255      557
+   1       4242     1372      561     4255
+   1       1367     4240     1372     4242
+   1       1367     4240     1368     1372
+   1       4240     4242     4255     1372
+   1       4240     1368     1372     4255
+   1       4244      557     4258     1380
+   1       1379     1380     1382       78
+   1       4246     4258      564     1382
+   1       4244     1379     4258     4246
+   1       4244     1379     1380     4258
+   1       1379     4246     1382     4258
+   1       1379     1380     4258     1382
+   1       4251      561     1535     4275
+   1       4252     4275     1536      564
+   1       1534     1535       91     1536
+   1       4251     4252     1535     1534
+   1       4251     4252     4275     1535
+   1       4252     1534     1536     1535
+   1       4252     4275     1535     1536
+   1       4237      554     4245     4243
+   1       4239     4243     4251      556
+   1       4242     4245      561     4251
+   1       4237     4239     4245     4242
+   1       4237     4239     4243     4245
+   1       4239     4242     4251     4245
+   1       4239     4243     4245     4251
+   1       4237      554     4244     4245
+   1       4240     4244      557     4255
+   1       4242     4245     4255      561
+   1       4237     4240     4242     4245
+   1       4237     4240     4245     4244
+   1       4240     4242     4245     4255
+   1       4240     4244     4255     4245
+   1       4243      556     4252     4251
+   1       4245     4251     4275      561
+   1       4246     4252      564     4275
+   1       4243     4245     4252     4246
+   1       4243     4245     4251     4252
+   1       4245     4246     4275     4252
+   1       4245     4251     4252     4275
+   1       4244      557     4255     4258
+   1       4245     4255      561     4275
+   1       4246     4258     4275      564
+   1       4244     4245     4246     4258
+   1       4244     4245     4258     4255
+   1       4245     4246     4258     4275
+   1       4245     4255     4275     4258
+   1       1367       77     1371     1372
+   1       4241     1371      560     4270
+   1       4242     1372     4270      561
+   1       1367     4241     4242     1372
+   1       1367     4241     1372     1371
+   1       4241     4242     1372     4270
+   1       4241     1371     4270     1372
+   1       4248      560     1497     4272
+   1       1496     1497       88     1499
+   1       4250     4272     1499      602
+   1       4248     1496     4250     4272
+   1       4248     1496     4272     1497
+   1       1496     4250     4272     1499
+   1       1496     1497     1499     4272
+   1       4251      561     4277     1535
+   1       4253     4277      602     1537
+   1       1534     1535     1537       91
+   1       4251     4253     1534     1535
+   1       4251     4253     1535     4277
+   1       4253     1534     1535     1537
+   1       4253     4277     1537     1535
+   1       4238      555     4247     4249
+   1       4239     4247      556     4251
+   1       4242     4249     4251      561
+   1       4238     4239     4242     4249
+   1       4238     4239     4249     4247
+   1       4239     4242     4249     4251
+   1       4239     4247     4251     4249
+   1       4238      555     4249     4248
+   1       4241     4248     4270      560
+   1       4242     4249      561     4270
+   1       4238     4241     4249     4242
+   1       4238     4241     4248     4249
+   1       4241     4242     4270     4249
+   1       4241     4248     4249     4270
+   1       4247      556     4251     4253
+   1       4249     4251      561     4277
+   1       4250     4253     4277      602
+   1       4247     4249     4250     4253
+   1       4247     4249     4253     4251
+   1       4249     4250     4253     4277
+   1       4249     4251     4277     4253
+   1       4248      560     4272     4270
+   1       4249     4270     4277      561
+   1       4250     4272      602     4277
+   1       4248     4249     4272     4250
+   1       4248     4249     4270     4272
+   1       4249     4250     4277     4272
+   1       4249     4270     4272     4277
+   1       1380       78     1383     1382
+   1       4258     1382     4287      564
+   1       4259     1383      565     4287
+   1       1380     4258     1383     4259
+   1       1380     4258     1382     1383
+   1       4258     4259     4287     1383
+   1       4258     1382     1383     4287
+   1       4275      564     4288     1536
+   1       1535     1536     1539       91
+   1       4279     4288      619     1539
+   1       4275     1535     4288     4279
+   1       4275     1535     1536     4288
+   1       1535     4279     1539     4288
+   1       1535     1536     4288     1539
+   1       4280      565     1691     4290
+   1       4284     4290     1695      619
+   1       1690     1691      104     1695
+   1       4280     4284     1691     1690
+   1       4280     4284     4290     1691
+   1       4284     1690     1695     1691
+   1       4284     4290     1691     1695
+   1       4255      561     4276     4274
+   1       4256     4274     4280      562
+   1       4259     4276      565     4280
+   1       4255     4256     4276     4259
+   1       4255     4256     4274     4276
+   1       4256     4259     4280     4276
+   1       4256     4274     4276     4280
+   1       4255      561     4275     4276
+   1       4258     4275      564     4287
+   1       4259     4276     4287      565
+   1       4255     4258     4259     4276
+   1       4255     4258     4276     4275
+   1       4258     4259     4276     4287
+   1       4258     4275     4287     4276
+   1       4274      562     4284     4280
+   1       4276     4280     4290      565
+   1       4279     4284      619     4290
+   1       4274     4276     4284     4279
+   1       4274     4276     4280     4284
+   1       4276     4279     4290     4284
+   1       4276     4280     4284     4290
+   1       4275      564     4287     4288
+   1       4276     4287      565     4290
+   1       4279     4288     4290      619
+   1       4275     4276     4279     4288
+   1       4275     4276     4288     4287
+   1       4276     4279     4288     4290
+   1       4276     4287     4290     4288
+   1       1497       88     1499     1502
+   1       4272     1499      602     4437
+   1       4273     1502     4437      605
+   1       1497     4272     4273     1502
+   1       1497     4272     1502     1499
+   1       4272     4273     1502     4437
+   1       4272     1499     4437     1502
+   1       4277      602     1537     4440
+   1       1535     1537       91     1539
+   1       4279     4440     1539      619
+   1       4277     1535     4279     4440
+   1       4277     1535     4440     1537
+   1       1535     4279     4440     1539
+   1       1535     1537     1539     4440
+   1       4283      605     4453     1694
+   1       4284     4453      619     1695
+   1       1690     1694     1695      104
+   1       4283     4284     1690     1694
+   1       4283     4284     1694     4453
+   1       4284     1690     1694     1695
+   1       4284     4453     1695     1694
+   1       4270      561     4274     4278
+   1       4271     4274      562     4283
+   1       4273     4278     4283      605
+   1       4270     4271     4273     4278
+   1       4270     4271     4278     4274
+   1       4271     4273     4278     4283
+   1       4271     4274     4283     4278
+   1       4270      561     4278     4277
+   1       4272     4277     4437      602
+   1       4273     4278      605     4437
+   1       4270     4272     4278     4273
+   1       4270     4272     4277     4278
+   1       4272     4273     4437     4278
+   1       4272     4277     4278     4437
+   1       4274      562     4283     4284
+   1       4278     4283      605     4453
+   1       4279     4284     4453      619
+   1       4274     4278     4279     4284
+   1       4274     4278     4284     4283
+   1       4278     4279     4284     4453
+   1       4278     4283     4453     4284
+   1       4277      602     4440     4437
+   1       4278     4437     4453      605
+   1       4279     4440      619     4453
+   1       4277     4278     4440     4279
+   1       4277     4278     4437     4440
+   1       4278     4279     4453     4440
+   1       4278     4437     4440     4453
+   1        734        2      739      735
+   1       1957      739      135     1962
+   1       1955      735     1962      131
+   1        734     1957     1955      735
+   1        734     1957      735      739
+   1       1957     1955      735     1962
+   1       1957      739     1962      735
+   1       1985      135      998     1986
+   1       1000      998       37     1001
+   1       3294     1986     1001      346
+   1       1985     1000     3294     1986
+   1       1985     1000     1986      998
+   1       1000     3294     1986     1001
+   1       1000      998     1001     1986
+   1       1963      131     1966      964
+   1       3284     1966      346      968
+   1        966      964      968       33
+   1       1963     3284      966      964
+   1       1963     3284      964     1966
+   1       3284      966      964      968
+   1       3284     1966      968      964
+   1       1960      341     3281     1964
+   1       1958     3281      339     1963
+   1       1955     1964     1963      131
+   1       1960     1958     1955     1964
+   1       1960     1958     1964     3281
+   1       1958     1955     1964     1963
+   1       1958     3281     1963     1964
+   1       1960      341     1964     1985
+   1       1957     1985     1962      135
+   1       1955     1964      131     1962
+   1       1960     1957     1964     1955
+   1       1960     1957     1985     1964
+   1       1957     1955     1962     1964
+   1       1957     1985     1964     1962
+   1       3281      339     1963     3284
+   1       1964     1963      131     1966
+   1       3294     3284     1966      346
+   1       3281     1964     3294     3284
+   1       3281     1964     3284     1963
+   1       1964     3294     3284     1966
+   1       1964     1963     1966     3284
+   1       1985      135     1986     1962
+   1       1964     1962     1966      131
+   1       3294     1986      346     1966
+   1       1985     1964     1986     3294
+   1       1985     1964     1962     1986
+   1       1964     3294     1966     1986
+   1       1964     1962     1986     1966
+   1       1006       37      999     1007
+   1       2553      999      228     2554
+   1       3433     1007     2554      370
+   1       1006     2553     3433     1007
+   1       1006     2553     1007      999
+   1       2553     3433     1007     2554
+   1       2553      999     2554     1007
+   1       2548      228      832     2549
+   1        834      832       17      837
+   1       2574     2549      837      233
+   1       2548      834     2574     2549
+   1       2548      834     2549      832
+   1        834     2574     2549      837
+   1        834      832      837     2549
+   1       3439      370     2605     1446
+   1       2607     2605      233     1443
+   1       1448     1446     1443       84
+   1       3439     2607     1448     1446
+   1       3439     2607     1446     2605
+   1       2607     1448     1446     1443
+   1       2607     2605     1443     1446
+   1       2576      230     2580     2577
+   1       3436     2580      537     3439
+   1       3433     2577     3439      370
+   1       2576     3436     3433     2577
+   1       2576     3436     2577     2580
+   1       3436     3433     2577     3439
+   1       3436     2580     3439     2577
+   1       2576      230     2577     2548
+   1       2553     2548     2554      228
+   1       3433     2577      370     2554
+   1       2576     2553     2577     3433
+   1       2576     2553     2548     2577
+   1       2553     3433     2554     2577
+   1       2553     2548     2577     2554
+   1       2580      537     3439     2607
+   1       2577     3439      370     2605
+   1       2574     2607     2605      233
+   1       2580     2577     2574     2607
+   1       2580     2577     2607     3439
+   1       2577     2574     2607     2605
+   1       2577     3439     2605     2607
+   1       2548      228     2549     2554
+   1       2577     2554     2605      370
+   1       2574     2549      233     2605
+   1       2548     2577     2549     2574
+   1       2548     2577     2554     2549
+   1       2577     2574     2605     2549
+   1       2577     2554     2549     2605
+   1        969       33      972      965
+   1       3325      972      350     2319
+   1       2317      965     2319      194
+   1        969     3325     2317      965
+   1        969     3325      965      972
+   1       3325     2317      965     2319
+   1       3325      972     2319      965
+   1       3340      350     1444     2360
+   1       1447     1444       84     1442
+   1       2361     2360     1442      200
+   1       3340     1447     2361     2360
+   1       3340     1447     2360     1444
+   1       1447     2361     2360     1442
+   1       1447     1444     1442     2360
+   1       2314      194     2316      798
+   1       2330     2316      200      804
+   1        800      798      804       13
+   1       2314     2330      800      798
+   1       2314     2330      798     2316
+   1       2330      800      798      804
+   1       2330     2316      804      798
+   1       3327      529     2334     2320
+   1       2331     2334      196     2314
+   1       2317     2320     2314      194
+   1       3327     2331     2317     2320
+   1       3327     2331     2320     2334
+   1       2331     2317     2320     2314
+   1       2331     2334     2314     2320
+   1       3327      529     2320     3340
+   1       3325     3340     2319      350
+   1       2317     2320      194     2319
+   1       3327     3325     2320     2317
+   1       3327     3325     3340     2320
+   1       3325     2317     2319     2320
+   1       3325     3340     2320     2319
+   1       2334      196     2314     2330
+   1       2320     2314      194     2316
+   1       2361     2330     2316      200
+   1       2334     2320     2361     2330
+   1       2334     2320     2330     2314
+   1       2320     2361     2330     2316
+   1       2320     2314     2316     2330
+   1       3340      350     2360     2319
+   1       2320     2319     2316      194
+   1       2361     2360      200     2316
+   1       3340     2320     2360     2361
+   1       3340     2320     2319     2360
+   1       2320     2361     2316     2360
+   1       2320     2319     2360     2316
+   1       1298       71     1303     1299
+   1       3310     1303      526     3331
+   1       3307     1299     3331      348
+   1       1298     3310     3307     1299
+   1       1298     3310     1299     1303
+   1       3310     3307     1299     3331
+   1       3310     1303     3331     1299
+   1       3302      526     1282     3326
+   1       1278     1282       69     1279
+   1       3300     3326     1279      347
+   1       3302     1278     3300     3326
+   1       3302     1278     3326     1282
+   1       1278     3300     3326     1279
+   1       1278     1282     1279     3326
+   1       3286      348     3324      970
+   1       3285     3324      347      969
+   1        966      970      969       33
+   1       3286     3285      966      970
+   1       3286     3285      970     3324
+   1       3285      966      970      969
+   1       3285     3324      969      970
+   1       3299      342     3282     3301
+   1       3283     3282      339     3286
+   1       3307     3301     3286      348
+   1       3299     3283     3307     3301
+   1       3299     3283     3301     3282
+   1       3283     3307     3301     3286
+   1       3283     3282     3286     3301
+   1       3299      342     3301     3302
+   1       3310     3302     3331      526
+   1       3307     3301      348     3331
+   1       3299     3310     3301     3307
+   1       3299     3310     3302     3301
+   1       3310     3307     3331     3301
+   1       3310     3302     3301     3331
+   1       3282      339     3286     3285
+   1       3301     3286      348     3324
+   1       3300     3285     3324      347
+   1       3282     3301     3300     3285
+   1       3282     3301     3285     3286
+   1       3301     3300     3285     3324
+   1       3301     3286     3324     3285
+   1       3302      526     3326     3331
+   1       3301     3331     3324      348
+   1       3300     3326      347     3324
+   1       3302     3301     3326     3300
+   1       3302     3301     3331     3326
+   1       3301     3300     3324     3326
+   1       3301     3331     3326     3324
+   1       1298       71     1299     1300
+   1       3309     1300     3329      369
+   1       3307     1299      348     3329
+   1       1298     3309     1299     3307
+   1       1298     3309     1300     1299
+   1       3309     3307     3329     1299
+   1       3309     1300     1299     3329
+   1       3298      369     3322     1006
+   1       1000     1006     1001       37
+   1       3294     3322      346     1001
+   1       3298     1000     3322     3294
+   1       3298     1000     1006     3322
+   1       1000     3294     1001     3322
+   1       1000     1006     3322     1001
+   1       3286      348      970     3318
+   1       3284     3318      968      346
+   1        966      970       33      968
+   1       3286     3284      970      966
+   1       3286     3284     3318      970
+   1       3284      966      968      970
+   1       3284     3318      970      968
+   1       3293      341     3295     3281
+   1       3283     3281     3286      339
+   1       3307     3295      348     3286
+   1       3293     3283     3295     3307
+   1       3293     3283     3281     3295
+   1       3283     3307     3286     3295
+   1       3283     3281     3295     3286
+   1       3293      341     3298     3295
+   1       3309     3298      369     3329
+   1       3307     3295     3329      348
+   1       3293     3309     3307     3295
+   1       3293     3309     3295     3298
+   1       3309     3307     3295     3329
+   1       3309     3298     3329     3295
+   1       3281      339     3284     3286
+   1       3295     3286     3318      348
+   1       3294     3284      346     3318
+   1       3281     3295     3284     3294
+   1       3281     3295     3286     3284
+   1       3295     3294     3318     3284
+   1       3295     3286     3284     3318
+   1       3298      369     3329     3322
+   1       3295     3329      348     3318
+   1       3294     3322     3318      346
+   1       3298     3295     3294     3322
+   1       3298     3295     3322     3329
+   1       3295     3294     3322     3318
+   1       3295     3329     3318     3322
+   1       1282       69     1279     1285
+   1       3326     1279      347     3327
+   1       4138     1285     3327      529
+   1       1282     3326     4138     1285
+   1       1282     3326     1285     1279
+   1       3326     4138     1285     3327
+   1       3326     1279     3327     1285
+   1       3324      347      969     3325
+   1        970      969       33      972
+   1       3328     3325      972      350
+   1       3324      970     3328     3325
+   1       3324      970     3325      969
+   1        970     3328     3325      972
+   1        970      969      972     3325
+   1       4148      529     3340     1447
+   1       3341     3340      350     1444
+   1       1448     1447     1444       84
+   1       4148     3341     1448     1447
+   1       4148     3341     1447     3340
+   1       3341     1448     1447     1444
+   1       3341     3340     1444     1447
+   1       3331      348     3333     3332
+   1       4140     3333      537     4148
+   1       4138     3332     4148      529
+   1       3331     4140     4138     3332
+   1       3331     4140     3332     3333
+   1       4140     4138     3332     4148
+   1       4140     3333     4148     3332
+   1       3331      348     3332     3324
+   1       3326     3324     3327      347
+   1       4138     3332      529     3327
+   1       3331     3326     3332     4138
+   1       3331     3326     3324     3332
+   1       3326     4138     3327     3332
+   1       3326     3324     3332     3327
+   1       3333      537     4148     3341
+   1       3332     4148      529     3340
+   1       3328     3341     3340      350
+   1       3333     3332     3328     3341
+   1       3333     3332     3341     4148
+   1       3332     3328     3341     3340
+   1       3332     4148     3340     3341
+   1       3324      347     3325     3327
+   1       3332     3327     3340      529
+   1       3328     3325      350     3340
+   1       3324     3332     3325     3328
+   1       3324     3332     3327     3325
+   1       3332     3328     3340     3325
+   1       3332     3327     3325     3340
+   1       1006       37     1007     1001
+   1       3322     1001     3323      346
+   1       3433     1007      370     3323
+   1       1006     3322     1007     3433
+   1       1006     3322     1001     1007
+   1       3322     3433     3323     1007
+   1       3322     1001     1007     3323
+   1       3318      346     3319      968
+   1        970      968      972       33
+   1       3328     3319      350      972
+   1       3318      970     3319     3328
+   1       3318      970      968     3319
+   1        970     3328      972     3319
+   1        970      968     3319      972
+   1       3439      370     1446     3339
+   1       3341     3339     1444      350
+   1       1448     1446       84     1444
+   1       3439     3341     1446     1448
+   1       3439     3341     3339     1446
+   1       3341     1448     1444     1446
+   1       3341     3339     1446     1444
+   1       3329      348     3330     3333
+   1       3436     3333     3439      537
+   1       3433     3330      370     3439
+   1       3329     3436     3330     3433
+   1       3329     3436     3333     3330
+   1       3436     3433     3439     3330
+   1       3436     3333     3330     3439
+   1       3329      348     3318     3330
+   1       3322     3318      346     3323
+   1       3433     3330     3323      370
+   1       3329     3322     3433     3330
+   1       3329     3322     3330     3318
+   1       3322     3433     3330     3323
+   1       3322     3318     3323     3330
+   1       3333      537     3341     3439
+   1       3330     3439     3339      370
+   1       3328     3341      350     3339
+   1       3333     3330     3341     3328
+   1       3333     3330     3439     3341
+   1       3330     3328     3339     3341
+   1       3330     3439     3341     3339
+   1       3318      346     3323     3319
+   1       3330     3323      370     3339
+   1       3328     3319     3339      350
+   1       3318     3330     3328     3319
+   1       3318     3330     3319     3323
+   1       3330     3328     3319     3339
+   1       3330     3323     3339     3319
+   1        836       17      833      841
+   1       2560      833      229     2561
+   1       2595      841     2561      237
+   1        836     2560     2595      841
+   1        836     2560      841      833
+   1       2560     2595      841     2561
+   1       2560      833     2561      841
+   1       2565      229     1154     2566
+   1       1160     1154       56     1162
+   1       3841     2566     1162      462
+   1       2565     1160     3841     2566
+   1       2565     1160     2566     1154
+   1       1160     3841     2566     1162
+   1       1160     1154     1162     2566
+   1       2644      237     2642     1672
+   1       3855     2642      462     1675
+   1       1678     1672     1675      103
+   1       2644     3855     1678     1672
+   1       2644     3855     1672     2642
+   1       3855     1678     1672     1675
+   1       3855     2642     1675     1672
+   1       2597      460     3844     2641
+   1       2601     3844      574     2644
+   1       2595     2641     2644      237
+   1       2597     2601     2595     2641
+   1       2597     2601     2641     3844
+   1       2601     2595     2641     2644
+   1       2601     3844     2644     2641
+   1       2597      460     2641     2565
+   1       2560     2565     2561      229
+   1       2595     2641      237     2561
+   1       2597     2560     2641     2595
+   1       2597     2560     2565     2641
+   1       2560     2595     2561     2641
+   1       2560     2565     2641     2561
+   1       3844      574     2644     3855
+   1       2641     2644      237     2642
+   1       3841     3855     2642      462
+   1       3844     2641     3841     3855
+   1       3844     2641     3855     2644
+   1       2641     3841     3855     2642
+   1       2641     2644     2642     3855
+   1       2565      229     2566     2561
+   1       2641     2561     2642      237
+   1       3841     2566      462     2642
+   1       2565     2641     2566     3841
+   1       2565     2641     2561     2566
+   1       2641     3841     2642     2566
+   1       2641     2561     2566     2642
+   1       1155       56     1153     1156
+   1       2076     1153      154     2078
+   1       3774     1156     2078      456
+   1       1155     2076     3774     1156
+   1       1155     2076     1156     1153
+   1       2076     3774     1156     2078
+   1       2076     1153     2078     1156
+   1       2065      154      758     2072
+   1        757      758        7      759
+   1       2066     2072      759      155
+   1       2065      757     2066     2072
+   1       2065      757     2072      758
+   1        757     2066     2072      759
+   1        757      758      759     2072
+   1       3781      456     2085     1170
+   1       2084     2085      155     1167
+   1       1169     1170     1167       57
+   1       3781     2084     1169     1170
+   1       3781     2084     1170     2085
+   1       2084     1169     1170     1167
+   1       2084     2085     1167     1170
+   1       2068      153     2069     2071
+   1       3769     2069      450     3781
+   1       3774     2071     3781      456
+   1       2068     3769     3774     2071
+   1       2068     3769     2071     2069
+   1       3769     3774     2071     3781
+   1       3769     2069     3781     2071
+   1       2068      153     2071     2065
+   1       2076     2065     2078      154
+   1       3774     2071      456     2078
+   1       2068     2076     2071     3774
+   1       2068     2076     2065     2071
+   1       2076     3774     2078     2071
+   1       2076     2065     2071     2078
+   1       2069      450     3781     2084
+   1       2071     3781      456     2085
+   1       2066     2084     2085      155
+   1       2069     2071     2066     2084
+   1       2069     2071     2084     3781
+   1       2071     2066     2084     2085
+   1       2071     3781     2085     2084
+   1       2065      154     2072     2078
+   1       2071     2078     2085      456
+   1       2066     2072      155     2085
+   1       2065     2071     2072     2066
+   1       2065     2071     2078     2072
+   1       2071     2066     2085     2072
+   1       2071     2078     2072     2085
+   1       1679      103     1676     1673
+   1       3892     1676      469     2857
+   1       2859     1673     2857      266
+   1       1679     3892     2859     1673
+   1       1679     3892     1673     1676
+   1       3892     2859     1673     2857
+   1       3892     1676     2857     1673
+   1       3888      469     1173     2819
+   1       1172     1173       57     1168
+   1       2818     2819     1168      261
+   1       3888     1172     2818     2819
+   1       3888     1172     2819     1173
+   1       1172     2818     2819     1168
+   1       1172     1173     1168     2819
+   1       2830      266     2816      870
+   1       2815     2816      261      865
+   1        867      870      865       20
+   1       2830     2815      867      870
+   1       2830     2815      870     2816
+   1       2815      867      870      865
+   1       2815     2816      865      870
+   1       3889      468     2831     2856
+   1       2834     2831      263     2830
+   1       2859     2856     2830      266
+   1       3889     2834     2859     2856
+   1       3889     2834     2856     2831
+   1       2834     2859     2856     2830
+   1       2834     2831     2830     2856
+   1       3889      468     2856     3888
+   1       3892     3888     2857      469
+   1       2859     2856      266     2857
+   1       3889     3892     2856     2859
+   1       3889     3892     3888     2856
+   1       3892     2859     2857     2856
+   1       3892     3888     2856     2857
+   1       2831      263     2830     2815
+   1       2856     2830      266     2816
+   1       2818     2815     2816      261
+   1       2831     2856     2818     2815
+   1       2831     2856     2815     2830
+   1       2856     2818     2815     2816
+   1       2856     2830     2816     2815
+   1       3888      469     2819     2857
+   1       2856     2857     2816      266
+   1       2818     2819      261     2816
+   1       3888     2856     2819     2818
+   1       3888     2856     2857     2819
+   1       2856     2818     2816     2819
+   1       2856     2857     2819     2816
+   1       1149       55     1150     1152
+   1       3788     1150      453     3796
+   1       3790     1152     3796      455
+   1       1149     3788     3790     1152
+   1       1149     3788     1152     1150
+   1       3788     3790     1152     3796
+   1       3788     1150     3796     1152
+   1       3798      453     1414     3799
+   1       1419     1414       81     1421
+   1       4320     3799     1421      577
+   1       3798     1419     4320     3799
+   1       3798     1419     3799     1414
+   1       1419     4320     3799     1421
+   1       1419     1414     1421     3799
+   1       3809      455     3810     1674
+   1       4325     3810      577     1679
+   1       1678     1674     1679      103
+   1       3809     4325     1678     1674
+   1       3809     4325     1674     3810
+   1       4325     1678     1674     1679
+   1       4325     3810     1679     1674
+   1       3793      571     4319     3808
+   1       3795     4319      574     3809
+   1       3790     3808     3809      455
+   1       3793     3795     3790     3808
+   1       3793     3795     3808     4319
+   1       3795     3790     3808     3809
+   1       3795     4319     3809     3808
+   1       3793      571     3808     3798
+   1       3788     3798     3796      453
+   1       3790     3808      455     3796
+   1       3793     3788     3808     3790
+   1       3793     3788     3798     3808
+   1       3788     3790     3796     3808
+   1       3788     3798     3808     3796
+   1       4319      574     3809     4325
+   1       3808     3809      455     3810
+   1       4320     4325     3810      577
+   1       4319     3808     4320     4325
+   1       4319     3808     4325     3809
+   1       3808     4320     4325     3810
+   1       3808     3809     3810     4325
+   1       3798      453     3799     3796
+   1       3808     3796     3810      455
+   1       4320     3799      577     3810
+   1       3798     3808     3799     4320
+   1       3798     3808     3796     3799
+   1       3808     4320     3810     3799
+   1       3808     3796     3799     3810
+   1       1149       55     1152     1146
+   1       3771     1146     3773      449
+   1       3790     1152      455     3773
+   1       1149     3771     1152     3790
+   1       1149     3771     1146     1152
+   1       3771     3790     3773     1152
+   1       3771     1146     1152     3773
+   1       3776      449     3778     1155
+   1       1160     1155     1162       56
+   1       3841     3778      462     1162
+   1       3776     1160     3778     3841
+   1       3776     1160     1155     3778
+   1       1160     3841     1162     3778
+   1       1160     1155     3778     1162
+   1       3809      455     1674     3805
+   1       3855     3805     1675      462
+   1       1678     1674      103     1675
+   1       3809     3855     1674     1678
+   1       3809     3855     3805     1674
+   1       3855     1678     1675     1674
+   1       3855     3805     1674     1675
+   1       3791      460     3804     3844
+   1       3795     3844     3809      574
+   1       3790     3804      455     3809
+   1       3791     3795     3804     3790
+   1       3791     3795     3844     3804
+   1       3795     3790     3809     3804
+   1       3795     3844     3804     3809
+   1       3791      460     3776     3804
+   1       3771     3776      449     3773
+   1       3790     3804     3773      455
+   1       3791     3771     3790     3804
+   1       3791     3771     3804     3776
+   1       3771     3790     3804     3773
+   1       3771     3776     3773     3804
+   1       3844      574     3855     3809
+   1       3804     3809     3805      455
+   1       3841     3855      462     3805
+   1       3844     3804     3855     3841
+   1       3844     3804     3809     3855
+   1       3804     3841     3805     3855
+   1       3804     3809     3855     3805
+   1       3776      449     3773     3778
+   1       3804     3773      455     3805
+   1       3841     3778     3805      462
+   1       3776     3804     3841     3778
+   1       3776     3804     3778     3773
+   1       3804     3841     3778     3805
+   1       3804     3773     3805     3778
+   1       1414       81     1421     1415
+   1       3799     1421      577     3889
+   1       3797     1415     3889      468
+   1       1414     3799     3797     1415
+   1       1414     3799     1415     1421
+   1       3799     3797     1415     3889
+   1       3799     1421     3889     1415
+   1       3810      577     1679     3892
+   1       1674     1679      103     1676
+   1       3807     3892     1676      469
+   1       3810     1674     3807     3892
+   1       3810     1674     3892     1679
+   1       1674     3807     3892     1676
+   1       1674     1679     1676     3892
+   1       3782      468     3888     1172
+   1       3783     3888      469     1173
+   1       1169     1172     1173       57
+   1       3782     3783     1169     1172
+   1       3782     3783     1172     3888
+   1       3783     1169     1172     1173
+   1       3783     3888     1173     1172
+   1       3796      455     3780     3806
+   1       3779     3780      450     3782
+   1       3797     3806     3782      468
+   1       3796     3779     3797     3806
+   1       3796     3779     3806     3780
+   1       3779     3797     3806     3782
+   1       3779     3780     3782     3806
+   1       3796      455     3806     3810
+   1       3799     3810     3889      577
+   1       3797     3806      468     3889
+   1       3796     3799     3806     3797
+   1       3796     3799     3810     3806
+   1       3799     3797     3889     3806
+   1       3799     3810     3806     3889
+   1       3780      450     3782     3783
+   1       3806     3782      468     3888
+   1       3807     3783     3888      469
+   1       3780     3806     3807     3783
+   1       3780     3806     3783     3782
+   1       3806     3807     3783     3888
+   1       3806     3782     3888     3783
+   1       3810      577     3892     3889
+   1       3806     3889     3888      468
+   1       3807     3892      469     3888
+   1       3810     3806     3892     3807
+   1       3810     3806     3889     3892
+   1       3806     3807     3888     3892
+   1       3806     3889     3892     3888
+   1       1155       56     1156     1162
+   1       3778     1162     3812      462
+   1       3774     1156      456     3812
+   1       1155     3778     1156     3774
+   1       1155     3778     1162     1156
+   1       3778     3774     3812     1156
+   1       3778     1162     1156     3812
+   1       3805      462     3853     1675
+   1       1674     1675     1676      103
+   1       3807     3853      469     1676
+   1       3805     1674     3853     3807
+   1       3805     1674     1675     3853
+   1       1674     3807     1676     3853
+   1       1674     1675     3853     1676
+   1       3781      456     1170     3815
+   1       3783     3815     1173      469
+   1       1169     1170       57     1173
+   1       3781     3783     1170     1169
+   1       3781     3783     3815     1170
+   1       3783     1169     1173     1170
+   1       3783     3815     1170     1173
+   1       3773      455     3803     3780
+   1       3769     3780     3781      450
+   1       3774     3803      456     3781
+   1       3773     3769     3803     3774
+   1       3773     3769     3780     3803
+   1       3769     3774     3781     3803
+   1       3769     3780     3803     3781
+   1       3773      455     3805     3803
+   1       3778     3805      462     3812
+   1       3774     3803     3812      456
+   1       3773     3778     3774     3803
+   1       3773     3778     3803     3805
+   1       3778     3774     3803     3812
+   1       3778     3805     3812     3803
+   1       3780      450     3783     3781
+   1       3803     3781     3815      456
+   1       3807     3783      469     3815
+   1       3780     3803     3783     3807
+   1       3780     3803     3781     3783
+   1       3803     3807     3815     3783
+   1       3803     3781     3783     3815
+   1       3805      462     3812     3853
+   1       3803     3812      456     3815
+   1       3807     3853     3815      469
+   1       3805     3803     3807     3853
+   1       3805     3803     3853     3812
+   1       3803     3807     3853     3815
+   1       3803     3812     3815     3853
+   1        801       13      806      799
+   1       2336      806      202     2323
+   1       2321      799     2323      195
+   1        801     2336     2321      799
+   1        801     2336      799      806
+   1       2336     2321      799     2323
+   1       2336      806     2323      799
+   1       2373      202     1466     2372
+   1       1470     1466       86     1468
+   1       3530     2372     1468      390
+   1       2373     1470     3530     2372
+   1       2373     1470     2372     1466
+   1       1470     3530     2372     1468
+   1       1470     1466     1468     2372
+   1       2324      195     2326     1031
+   1       3515     2326      390     1038
+   1       1035     1031     1038       40
+   1       2324     3515     1035     1031
+   1       2324     3515     1031     2326
+   1       3515     1035     1031     1038
+   1       3515     2326     1038     1031
+   1       2340      545     3517     2327
+   1       2337     3517      387     2324
+   1       2321     2327     2324      195
+   1       2340     2337     2321     2327
+   1       2340     2337     2327     3517
+   1       2337     2321     2327     2324
+   1       2337     3517     2324     2327
+   1       2340      545     2327     2373
+   1       2336     2373     2323      202
+   1       2321     2327      195     2323
+   1       2340     2336     2327     2321
+   1       2340     2336     2373     2327
+   1       2336     2321     2323     2327
+   1       2336     2373     2327     2323
+   1       3517      387     2324     3515
+   1       2327     2324      195     2326
+   1       3530     3515     2326      390
+   1       3517     2327     3530     3515
+   1       3517     2327     3515     2324
+   1       2327     3530     3515     2326
+   1       2327     2324     2326     3515
+   1       2373      202     2372     2323
+   1       2327     2323     2326      195
+   1       3530     2372      390     2326
+   1       2373     2327     2372     3530
+   1       2373     2327     2323     2372
+   1       2327     3530     2326     2372
+   1       2327     2323     2372     2326
+   1       1471       86     1467     1469
+   1       2839     1467      264     2838
+   1       3551     1469     2838      396
+   1       1471     2839     3551     1469
+   1       1471     2839     1469     1467
+   1       2839     3551     1469     2838
+   1       2839     1467     2838     1469
+   1       2823      264      868     2809
+   1        866      868       20      864
+   1       2808     2809      864      260
+   1       2823      866     2808     2809
+   1       2823      866     2809      868
+   1        866     2808     2809      864
+   1        866      868      864     2809
+   1       3543      396     2812     1052
+   1       2811     2812      260     1046
+   1       1050     1052     1046       42
+   1       3543     2811     1050     1052
+   1       3543     2811     1052     2812
+   1       2811     1050     1052     1046
+   1       2811     2812     1046     1052
+   1       2827      262     2824     2825
+   1       3544     2824      394     3543
+   1       3551     2825     3543      396
+   1       2827     3544     3551     2825
+   1       2827     3544     2825     2824
+   1       3544     3551     2825     3543
+   1       3544     2824     3543     2825
+   1       2827      262     2825     2823
+   1       2839     2823     2838      264
+   1       3551     2825      396     2838
+   1       2827     2839     2825     3551
+   1       2827     2839     2823     2825
+   1       2839     3551     2838     2825
+   1       2839     2823     2825     2838
+   1       2824      394     3543     2811
+   1       2825     3543      396     2812
+   1       2808     2811     2812      260
+   1       2824     2825     2808     2811
+   1       2824     2825     2811     3543
+   1       2825     2808     2811     2812
+   1       2825     3543     2812     2811
+   1       2823      264     2809     2838
+   1       2825     2838     2812      396
+   1       2808     2809      260     2812
+   1       2823     2825     2809     2808
+   1       2823     2825     2838     2809
+   1       2825     2808     2812     2809
+   1       2825     2838     2809     2812
+   1       1032       40     1034     1030
+   1       3488     1034      386     2006
+   1       2003     1030     2006      138
+   1       1032     3488     2003     1030
+   1       1032     3488     1030     1034
+   1       3488     2003     1030     2006
+   1       3488     1034     2006     1030
+   1       3492      386     1048     2012
+   1       1047     1048       42     1045
+   1       2010     2012     1045      140
+   1       3492     1047     2010     2012
+   1       3492     1047     2012     1048
+   1       1047     2010     2012     1045
+   1       1047     1048     1045     2012
+   1       1997      138     2002      742
+   1       1998     2002      140      744
+   1        741      742      744        3
+   1       1997     1998      741      742
+   1       1997     1998      742     2002
+   1       1998      741      742      744
+   1       1998     2002      744      742
+   1       3485      382     2000     2004
+   1       1999     2000      137     1997
+   1       2003     2004     1997      138
+   1       3485     1999     2003     2004
+   1       3485     1999     2004     2000
+   1       1999     2003     2004     1997
+   1       1999     2000     1997     2004
+   1       3485      382     2004     3492
+   1       3488     3492     2006      386
+   1       2003     2004      138     2006
+   1       3485     3488     2004     2003
+   1       3485     3488     3492     2004
+   1       3488     2003     2006     2004
+   1       3488     3492     2004     2006
+   1       2000      137     1997     1998
+   1       2004     1997      138     2002
+   1       2010     1998     2002      140
+   1       2000     2004     2010     1998
+   1       2000     2004     1998     1997
+   1       2004     2010     1998     2002
+   1       2004     1997     2002     1998
+   1       3492      386     2012     2006
+   1       2004     2006     2002      138
+   1       2010     2012      140     2002
+   1       3492     2004     2012     2010
+   1       3492     2004     2006     2012
+   1       2004     2010     2002     2012
+   1       2004     2006     2012     2002
+   1       1336       74     1332     1333
+   1       3501     1332      384     3499
+   1       3521     1333     3499      388
+   1       1336     3501     3521     1333
+   1       1336     3501     1333     1332
+   1       3501     3521     1333     3499
+   1       3501     1332     3499     1333
+   1       3495      384     1029     3487
+   1       1028     1029       39     1026
+   1       3486     3487     1026      381
+   1       3495     1028     3486     3487
+   1       3495     1028     3487     1029
+   1       1028     3486     3487     1026
+   1       1028     1029     1026     3487
+   1       3514      388     3490     1036
+   1       3489     3490      381     1032
+   1       1035     1036     1032       40
+   1       3514     3489     1035     1036
+   1       3514     3489     1036     3490
+   1       3489     1035     1036     1032
+   1       3489     3490     1032     1036
+   1       3498      383     3496     3497
+   1       3516     3496      387     3514
+   1       3521     3497     3514      388
+   1       3498     3516     3521     3497
+   1       3498     3516     3497     3496
+   1       3516     3521     3497     3514
+   1       3516     3496     3514     3497
+   1       3498      383     3497     3495
+   1       3501     3495     3499      384
+   1       3521     3497      388     3499
+   1       3498     3501     3497     3521
+   1       3498     3501     3495     3497
+   1       3501     3521     3499     3497
+   1       3501     3495     3497     3499
+   1       3496      387     3514     3489
+   1       3497     3514      388     3490
+   1       3486     3489     3490      381
+   1       3496     3497     3486     3489
+   1       3496     3497     3489     3514
+   1       3497     3486     3489     3490
+   1       3497     3514     3490     3489
+   1       3495      384     3487     3499
+   1       3497     3499     3490      388
+   1       3486     3487      381     3490
+   1       3495     3497     3487     3486
+   1       3495     3497     3499     3487
+   1       3497     3486     3490     3487
+   1       3497     3499     3487     3490
+   1       1336       74     1333     1339
+   1       4203     1339     3523      548
+   1       3521     1333      388     3523
+   1       1336     4203     1333     3521
+   1       1336     4203     1339     1333
+   1       4203     3521     3523     1333
+   1       4203     1339     1333     3523
+   1       4208      548     3531     1471
+   1       1470     1471     1468       86
+   1       3530     3531      390     1468
+   1       4208     1470     3531     3530
+   1       4208     1470     1471     3531
+   1       1470     3530     1468     3531
+   1       1470     1471     3531     1468
+   1       3514      388     1036     3518
+   1       3515     3518     1038      390
+   1       1035     1036       40     1038
+   1       3514     3515     1036     1035
+   1       3514     3515     3518     1036
+   1       3515     1035     1038     1036
+   1       3515     3518     1036     1038
+   1       4201      545     3522     3517
+   1       3516     3517     3514      387
+   1       3521     3522      388     3514
+   1       4201     3516     3522     3521
+   1       4201     3516     3517     3522
+   1       3516     3521     3514     3522
+   1       3516     3517     3522     3514
+   1       4201      545     4208     3522
+   1       4203     4208      548     3523
+   1       3521     3522     3523      388
+   1       4201     4203     3521     3522
+   1       4201     4203     3522     4208
+   1       4203     3521     3522     3523
+   1       4203     4208     3523     3522
+   1       3517      387     3515     3514
+   1       3522     3514     3518      388
+   1       3530     3515      390     3518
+   1       3517     3522     3515     3530
+   1       3517     3522     3514     3515
+   1       3522     3530     3518     3515
+   1       3522     3514     3515     3518
+   1       4208      548     3523     3531
+   1       3522     3523      388     3518
+   1       3530     3531     3518      390
+   1       4208     3522     3530     3531
+   1       4208     3522     3531     3523
+   1       3522     3530     3531     3518
+   1       3522     3523     3518     3531
+   1       1029       39     1026     1027
+   1       3487     1026      381     3485
+   1       3491     1027     3485      382
+   1       1029     3487     3491     1027
+   1       1029     3487     1027     1026
+   1       3487     3491     1027     3485
+   1       3487     1026     3485     1027
+   1       3490      381     1032     3488
+   1       1036     1032       40     1034
+   1       3507     3488     1034      386
+   1       3490     1036     3507     3488
+   1       3490     1036     3488     1032
+   1       1036     3507     3488     1034
+   1       1036     1032     1034     3488
+   1       3494      382     3492     1047
+   1       3511     3492      386     1048
+   1       1050     1047     1048       42
+   1       3494     3511     1050     1047
+   1       3494     3511     1047     3492
+   1       3511     1050     1047     1048
+   1       3511     3492     1048     1047
+   1       3499      388     3519     3493
+   1       3500     3519      394     3494
+   1       3491     3493     3494      382
+   1       3499     3500     3491     3493
+   1       3499     3500     3493     3519
+   1       3500     3491     3493     3494
+   1       3500     3519     3494     3493
+   1       3499      388     3493     3490
+   1       3487     3490     3485      381
+   1       3491     3493      382     3485
+   1       3499     3487     3493     3491
+   1       3499     3487     3490     3493
+   1       3487     3491     3485     3493
+   1       3487     3490     3493     3485
+   1       3519      394     3494     3511
+   1       3493     3494      382     3492
+   1       3507     3511     3492      386
+   1       3519     3493     3507     3511
+   1       3519     3493     3511     3494
+   1       3493     3507     3511     3492
+   1       3493     3494     3492     3511
+   1       3490      381     3488     3485
+   1       3493     3485     3492      382
+   1       3507     3488      386     3492
+   1       3490     3493     3488     3507
+   1       3490     3493     3485     3488
+   1       3493     3507     3492     3488
+   1       3493     3485     3488     3492
+   1       1471       86     1469     1468
+   1       3531     1468     3529      390
+   1       3551     1469      396     3529
+   1       1471     3531     1469     3551
+   1       1471     3531     1468     1469
+   1       3531     3551     3529     1469
+   1       3531     1468     1469     3529
+   1       3518      390     3509     1038
+   1       1036     1038     1034       40
+   1       3507     3509      386     1034
+   1       3518     1036     3509     3507
+   1       3518     1036     1038     3509
+   1       1036     3507     1034     3509
+   1       1036     1038     3509     1034
+   1       3543      396     1052     3513
+   1       3511     3513     1048      386
+   1       1050     1052       42     1048
+   1       3543     3511     1052     1050
+   1       3543     3511     3513     1052
+   1       3511     1050     1048     1052
+   1       3511     3513     1052     1048
+   1       3523      388     3520     3519
+   1       3544     3519     3543      394
+   1       3551     3520      396     3543
+   1       3523     3544     3520     3551
+   1       3523     3544     3519     3520
+   1       3544     3551     3543     3520
+   1       3544     3519     3520     3543
+   1       3523      388     3518     3520
+   1       3531     3518      390     3529
+   1       3551     3520     3529      396
+   1       3523     3531     3551     3520
+   1       3523     3531     3520     3518
+   1       3531     3551     3520     3529
+   1       3531     3518     3529     3520
+   1       3519      394     3511     3543
+   1       3520     3543     3513      396
+   1       3507     3511      386     3513
+   1       3519     3520     3511     3507
+   1       3519     3520     3543     3511
+   1       3520     3507     3513     3511
+   1       3520     3543     3511     3513
+   1       3518      390     3529     3509
+   1       3520     3529      396     3513
+   1       3507     3509     3513      386
+   1       3518     3520     3507     3509
+   1       3518     3520     3509     3529
+   1       3520     3507     3509     3513
+   1       3520     3529     3513     3509
+   1        791       12      792      794
+   1       2264      792      188     2275
+   1       2266      794     2275      190
+   1        791     2264     2266      794
+   1        791     2264      794      792
+   1       2264     2266      794     2275
+   1       2264      792     2275      794
+   1       2278      188     1311     2279
+   1       1315     1311       72     1318
+   1       4116     2279     1318      541
+   1       2278     1315     4116     2279
+   1       2278     1315     2279     1311
+   1       1315     4116     2279     1318
+   1       1315     1311     1318     2279
+   1       2290      190     2292     1384
+   1       4130     2292      541     1390
+   1       1387     1384     1390       79
+   1       2290     4130     1387     1384
+   1       2290     4130     1384     2292
+   1       4130     1387     1384     1390
+   1       4130     2292     1390     1384
+   1       2270      521     4115     2289
+   1       2272     4115      524     2290
+   1       2266     2289     2290      190
+   1       2270     2272     2266     2289
+   1       2270     2272     2289     4115
+   1       2272     2266     2289     2290
+   1       2272     4115     2290     2289
+   1       2270      521     2289     2278
+   1       2264     2278     2275      188
+   1       2266     2289      190     2275
+   1       2270     2264     2289     2266
+   1       2270     2264     2278     2289
+   1       2264     2266     2275     2289
+   1       2264     2278     2289     2275
+   1       4115      524     2290     4130
+   1       2289     2290      190     2292
+   1       4116     4130     2292      541
+   1       4115     2289     4116     4130
+   1       4115     2289     4130     2290
+   1       2289     4116     4130     2292
+   1       2289     2290     2292     4130
+   1       2278      188     2279     2275
+   1       2289     2275     2292      190
+   1       4116     2279      541     2292
+   1       2278     2289     2279     4116
+   1       2278     2289     2275     2279
+   1       2289     4116     2292     2279
+   1       2289     2275     2279     2292
+   1       1314       72     1310     1316
+   1       2195     1310      175     2196
+   1       4058     1316     2196      539
+   1       1314     2195     4058     1316
+   1       1314     2195     1316     1310
+   1       2195     4058     1316     2196
+   1       2195     1310     2196     1316
+   1       2185      175      779     2192
+   1        778      779       10      780
+   1       2186     2192      780      176
+   1       2185      778     2186     2192
+   1       2185      778     2192      779
+   1        778     2186     2192      780
+   1        778      779      780     2192
+   1       4062      539     2201     1326
+   1       2200     2201      176     1320
+   1       1324     1326     1320       73
+   1       4062     2200     1324     1326
+   1       4062     2200     1326     2201
+   1       2200     1324     1326     1320
+   1       2200     2201     1320     1326
+   1       2189      174     2190     2191
+   1       4055     2190      511     4062
+   1       4058     2191     4062      539
+   1       2189     4055     4058     2191
+   1       2189     4055     2191     2190
+   1       4055     4058     2191     4062
+   1       4055     2190     4062     2191
+   1       2189      174     2191     2185
+   1       2195     2185     2196      175
+   1       4058     2191      539     2196
+   1       2189     2195     2191     4058
+   1       2189     2195     2185     2191
+   1       2195     4058     2196     2191
+   1       2195     2185     2191     2196
+   1       2190      511     4062     2200
+   1       2191     4062      539     2201
+   1       2186     2200     2201      176
+   1       2190     2191     2186     2200
+   1       2190     2191     2200     4062
+   1       2191     2186     2200     2201
+   1       2191     4062     2201     2200
+   1       2185      175     2192     2196
+   1       2191     2196     2201      539
+   1       2186     2192      176     2201
+   1       2185     2191     2192     2186
+   1       2185     2191     2196     2192
+   1       2191     2186     2201     2192
+   1       2191     2196     2192     2201
+   1       1388       79     1391     1385
+   1       4145     1391      544     2346
+   1       2344     1385     2346      198
+   1       1388     4145     2344     1385
+   1       1388     4145     1385     1391
+   1       4145     2344     1385     2346
+   1       4145     1391     2346     1385
+   1       4142      544     1328     2339
+   1       1325     1328       73     1321
+   1       2338     2339     1321      197
+   1       4142     1325     2338     2339
+   1       4142     1325     2339     1328
+   1       1325     2338     2339     1321
+   1       1325     1328     1321     2339
+   1       2329      198     2335      802
+   1       2328     2335      197      801
+   1        800      802      801       13
+   1       2329     2328      800      802
+   1       2329     2328      802     2335
+   1       2328      800      802      801
+   1       2328     2335      801      802
+   1       4141      527     2332     2343
+   1       2333     2332      196     2329
+   1       2344     2343     2329      198
+   1       4141     2333     2344     2343
+   1       4141     2333     2343     2332
+   1       2333     2344     2343     2329
+   1       2333     2332     2329     2343
+   1       4141      527     2343     4142
+   1       4145     4142     2346      544
+   1       2344     2343      198     2346
+   1       4141     4145     2343     2344
+   1       4141     4145     4142     2343
+   1       4145     2344     2346     2343
+   1       4145     4142     2343     2346
+   1       2332      196     2329     2328
+   1       2343     2329      198     2335
+   1       2338     2328     2335      197
+   1       2332     2343     2338     2328
+   1       2332     2343     2328     2329
+   1       2343     2338     2328     2335
+   1       2343     2329     2335     2328
+   1       4142      544     2339     2346
+   1       2343     2346     2335      198
+   1       2338     2339      197     2335
+   1       4142     2343     2339     2338
+   1       4142     2343     2346     2339
+   1       2343     2338     2335     2339
+   1       2343     2346     2339     2335
+   1       1247       66     1248     1251
+   1       4044     1248      509     4051
+   1       4046     1251     4051      512
+   1       1247     4044     4046     1251
+   1       1247     4044     1251     1248
+   1       4044     4046     1251     4051
+   1       4044     1248     4051     1251
+   1       4052      509     1280     4054
+   1       1281     1280       69     1284
+   1       4106     4054     1284      528
+   1       4052     1281     4106     4054
+   1       4052     1281     4054     1280
+   1       1281     4106     4054     1284
+   1       1281     1280     1284     4054
+   1       4066      512     4068     1386
+   1       4128     4068      528     1388
+   1       1387     1386     1388       79
+   1       4066     4128     1387     1386
+   1       4066     4128     1386     4068
+   1       4128     1387     1386     1388
+   1       4128     4068     1388     1386
+   1       4047      519     4104     4064
+   1       4049     4104      524     4066
+   1       4046     4064     4066      512
+   1       4047     4049     4046     4064
+   1       4047     4049     4064     4104
+   1       4049     4046     4064     4066
+   1       4049     4104     4066     4064
+   1       4047      519     4064     4052
+   1       4044     4052     4051      509
+   1       4046     4064      512     4051
+   1       4047     4044     4064     4046
+   1       4047     4044     4052     4064
+   1       4044     4046     4051     4064
+   1       4044     4052     4064     4051
+   1       4104      524     4066     4128
+   1       4064     4066      512     4068
+   1       4106     4128     4068      528
+   1       4104     4064     4106     4128
+   1       4104     4064     4128     4066
+   1       4064     4106     4128     4068
+   1       4064     4066     4068     4128
+   1       4052      509     4054     4051
+   1       4064     4051     4068      512
+   1       4106     4054      528     4068
+   1       4052     4064     4054     4106
+   1       4052     4064     4051     4054
+   1       4064     4106     4068     4054
+   1       4064     4051     4054     4068
+   1       1247       66     1251     1249
+   1       4045     1249     4056      510
+   1       4046     1251      512     4056
+   1       1247     4045     1251     4046
+   1       1247     4045     1249     1251
+   1       4045     4046     4056     1251
+   1       4045     1249     1251     4056
+   1       4057      510     4059     1314
+   1       1315     1314     1318       72
+   1       4116     4059      541     1318
+   1       4057     1315     4059     4116
+   1       4057     1315     1314     4059
+   1       1315     4116     1318     4059
+   1       1315     1314     4059     1318
+   1       4066      512     1386     4070
+   1       4130     4070     1390      541
+   1       1387     1386       79     1390
+   1       4066     4130     1386     1387
+   1       4066     4130     4070     1386
+   1       4130     1387     1390     1386
+   1       4130     4070     1386     1390
+   1       4048      521     4065     4115
+   1       4049     4115     4066      524
+   1       4046     4065      512     4066
+   1       4048     4049     4065     4046
+   1       4048     4049     4115     4065
+   1       4049     4046     4066     4065
+   1       4049     4115     4065     4066
+   1       4048      521     4057     4065
+   1       4045     4057      510     4056
+   1       4046     4065     4056      512
+   1       4048     4045     4046     4065
+   1       4048     4045     4065     4057
+   1       4045     4046     4065     4056
+   1       4045     4057     4056     4065
+   1       4115      524     4130     4066
+   1       4065     4066     4070      512
+   1       4116     4130      541     4070
+   1       4115     4065     4130     4116
+   1       4115     4065     4066     4130
+   1       4065     4116     4070     4130
+   1       4065     4066     4130     4070
+   1       4057      510     4056     4059
+   1       4065     4056      512     4070
+   1       4116     4059     4070      541
+   1       4057     4065     4116     4059
+   1       4057     4065     4059     4056
+   1       4065     4116     4059     4070
+   1       4065     4056     4070     4059
+   1       1280       69     1284     1283
+   1       4054     1284      528     4141
+   1       4053     1283     4141      527
+   1       1280     4054     4053     1283
+   1       1280     4054     1283     1284
+   1       4054     4053     1283     4141
+   1       4054     1284     4141     1283
+   1       4068      528     1388     4145
+   1       1386     1388       79     1391
+   1       4071     4145     1391      544
+   1       4068     1386     4071     4145
+   1       4068     1386     4145     1388
+   1       1386     4071     4145     1391
+   1       1386     1388     1391     4145
+   1       4061      527     4142     1325
+   1       4063     4142      544     1328
+   1       1324     1325     1328       73
+   1       4061     4063     1324     1325
+   1       4061     4063     1325     4142
+   1       4063     1324     1325     1328
+   1       4063     4142     1328     1325
+   1       4051      512     4060     4067
+   1       4050     4060      511     4061
+   1       4053     4067     4061      527
+   1       4051     4050     4053     4067
+   1       4051     4050     4067     4060
+   1       4050     4053     4067     4061
+   1       4050     4060     4061     4067
+   1       4051      512     4067     4068
+   1       4054     4068     4141      528
+   1       4053     4067      527     4141
+   1       4051     4054     4067     4053
+   1       4051     4054     4068     4067
+   1       4054     4053     4141     4067
+   1       4054     4068     4067     4141
+   1       4060      511     4061     4063
+   1       4067     4061      527     4142
+   1       4071     4063     4142      544
+   1       4060     4067     4071     4063
+   1       4060     4067     4063     4061
+   1       4067     4071     4063     4142
+   1       4067     4061     4142     4063
+   1       4068      528     4145     4141
+   1       4067     4141     4142      527
+   1       4071     4145      544     4142
+   1       4068     4067     4145     4071
+   1       4068     4067     4141     4145
+   1       4067     4071     4142     4145
+   1       4067     4141     4145     4142
+   1       1314       72     1316     1318
+   1       4059     1318     4184      541
+   1       4058     1316      539     4184
+   1       1314     4059     1316     4058
+   1       1314     4059     1318     1316
+   1       4059     4058     4184     1316
+   1       4059     1318     1316     4184
+   1       4070      541     4194     1390
+   1       1386     1390     1391       79
+   1       4071     4194      544     1391
+   1       4070     1386     4194     4071
+   1       4070     1386     1390     4194
+   1       1386     4071     1391     4194
+   1       1386     1390     4194     1391
+   1       4062      539     1326     4186
+   1       4063     4186     1328      544
+   1       1324     1326       73     1328
+   1       4062     4063     1326     1324
+   1       4062     4063     4186     1326
+   1       4063     1324     1328     1326
+   1       4063     4186     1326     1328
+   1       4056      512     4069     4060
+   1       4055     4060     4062      511
+   1       4058     4069      539     4062
+   1       4056     4055     4069     4058
+   1       4056     4055     4060     4069
+   1       4055     4058     4062     4069
+   1       4055     4060     4069     4062
+   1       4056      512     4070     4069
+   1       4059     4070      541     4184
+   1       4058     4069     4184      539
+   1       4056     4059     4058     4069
+   1       4056     4059     4069     4070
+   1       4059     4058     4069     4184
+   1       4059     4070     4184     4069
+   1       4060      511     4063     4062
+   1       4069     4062     4186      539
+   1       4071     4063      544     4186
+   1       4060     4069     4063     4071
+   1       4060     4069     4062     4063
+   1       4069     4071     4186     4063
+   1       4069     4062     4063     4186
+   1       4070      541     4184     4194
+   1       4069     4184      539     4186
+   1       4071     4194     4186      544
+   1       4070     4069     4071     4194
+   1       4070     4069     4194     4184
+   1       4069     4071     4194     4186
+   1       4069     4184     4186     4194
+   1        791       12      794      795
+   1       2267      795     2287      191
+   1       2266      794      190     2287
+   1        791     2267      794     2266
+   1        791     2267      795      794
+   1       2267     2266     2287      794
+   1       2267      795      794     2287
+   1       2300      191     2302     1398
+   1       1402     1398     1406       80
+   1       4136     2302      566     1406
+   1       2300     1402     2302     4136
+   1       2300     1402     1398     2302
+   1       1402     4136     1406     2302
+   1       1402     1398     2302     1406
+   1       2290      190     1384     2294
+   1       4131     2294     1393      566
+   1       1387     1384       79     1393
+   1       2290     4131     1384     1387
+   1       2290     4131     2294     1384
+   1       4131     1387     1393     1384
+   1       4131     2294     1384     1393
+   1       2273      525     2291     4127
+   1       2272     4127     2290      524
+   1       2266     2291      190     2290
+   1       2273     2272     2291     2266
+   1       2273     2272     4127     2291
+   1       2272     2266     2290     2291
+   1       2272     4127     2291     2290
+   1       2273      525     2300     2291
+   1       2267     2300      191     2287
+   1       2266     2291     2287      190
+   1       2273     2267     2266     2291
+   1       2273     2267     2291     2300
+   1       2267     2266     2291     2287
+   1       2267     2300     2287     2291
+   1       4127      524     4131     2290
+   1       2291     2290     2294      190
+   1       4136     4131      566     2294
+   1       4127     2291     4131     4136
+   1       4127     2291     2290     4131
+   1       2291     4136     2294     4131
+   1       2291     2290     4131     2294
+   1       2300      191     2287     2302
+   1       2291     2287      190     2294
+   1       4136     2302     2294      566
+   1       2300     2291     4136     2302
+   1       2300     2291     2302     2287
+   1       2291     4136     2302     2294
+   1       2291     2287     2294     2302
+   1       1403       80     1409     1399
+   1       2598     1399     2600      232
+   1       4179     1409      573     2600
+   1       1403     2598     1409     4179
+   1       1403     2598     1399     1409
+   1       2598     4179     2600     1409
+   1       2598     1399     1409     2600
+   1       2573      232     2594      836
+   1        834      836      837       17
+   1       2574     2594      233      837
+   1       2573      834     2594     2574
+   1       2573      834      836     2594
+   1        834     2574      837     2594
+   1        834      836     2594      837
+   1       4181      573     1450     2608
+   1       2607     2608     1443      233
+   1       1448     1450       84     1443
+   1       4181     2607     1450     1448
+   1       4181     2607     2608     1450
+   1       2607     1448     1443     1450
+   1       2607     2608     1450     1443
+   1       2579      230     2582     2580
+   1       4176     2580     4181      537
+   1       4179     2582      573     4181
+   1       2579     4176     2582     4179
+   1       2579     4176     2580     2582
+   1       4176     4179     4181     2582
+   1       4176     2580     2582     4181
+   1       2579      230     2573     2582
+   1       2598     2573      232     2600
+   1       4179     2582     2600      573
+   1       2579     2598     4179     2582
+   1       2579     2598     2582     2573
+   1       2598     4179     2582     2600
+   1       2598     2573     2600     2582
+   1       2580      537     2607     4181
+   1       2582     4181     2608      573
+   1       2574     2607      233     2608
+   1       2580     2582     2607     2574
+   1       2580     2582     4181     2607
+   1       2582     2574     2608     2607
+   1       2582     4181     2607     2608
+   1       2573      232     2600     2594
+   1       2582     2600      573     2608
+   1       2574     2594     2608      233
+   1       2573     2582     2574     2594
+   1       2573     2582     2594     2600
+   1       2582     2574     2594     2608
+   1       2582     2600     2608     2594
+   1       1388       79     1385     1395
+   1       4146     1395     2348      568
+   1       2344     1385      198     2348
+   1       1388     4146     1385     2344
+   1       1388     4146     1395     1385
+   1       4146     2344     2348     1385
+   1       4146     1395     1385     2348
+   1       4149      568     2362     1449
+   1       1447     1449     1442       84
+   1       2361     2362      200     1442
+   1       4149     1447     2362     2361
+   1       4149     1447     1449     2362
+   1       1447     2361     1442     2362
+   1       1447     1449     2362     1442
+   1       2329      198      802     2341
+   1       2330     2341      804      200
+   1        800      802       13      804
+   1       2329     2330      802      800
+   1       2329     2330     2341      802
+   1       2330      800      804      802
+   1       2330     2341      802      804
+   1       4143      529     2345     2334
+   1       2333     2334     2329      196
+   1       2344     2345      198     2329
+   1       4143     2333     2345     2344
+   1       4143     2333     2334     2345
+   1       2333     2344     2329     2345
+   1       2333     2334     2345     2329
+   1       4143      529     4149     2345
+   1       4146     4149      568     2348
+   1       2344     2345     2348      198
+   1       4143     4146     2344     2345
+   1       4143     4146     2345     4149
+   1       4146     2344     2345     2348
+   1       4146     4149     2348     2345
+   1       2334      196     2330     2329
+   1       2345     2329     2341      198
+   1       2361     2330      200     2341
+   1       2334     2345     2330     2361
+   1       2334     2345     2329     2330
+   1       2345     2361     2341     2330
+   1       2345     2329     2330     2341
+   1       4149      568     2348     2362
+   1       2345     2348      198     2341
+   1       2361     2362     2341      200
+   1       4149     2345     2361     2362
+   1       4149     2345     2362     2348
+   1       2345     2361     2362     2341
+   1       2345     2348     2341     2362
+   1       1302       71     1306     1303
+   1       4111     1303     4139      526
+   1       4113     1306      535     4139
+   1       1302     4111     1306     4113
+   1       1302     4111     1303     1306
+   1       4111     4113     4139     1306
+   1       4111     1303     1306     4139
+   1       4105      526     4137     1282
+   1       1281     1282     1284       69
+   1       4106     4137      528     1284
+   1       4105     1281     4137     4106
+   1       4105     1281     1282     4137
+   1       1281     4106     1284     4137
+   1       1281     1282     4137     1284
+   1       4129      535     1389     4144
+   1       4128     4144     1388      528
+   1       1387     1389       79     1388
+   1       4129     4128     1389     1387
+   1       4129     4128     4144     1389
+   1       4128     1387     1388     1389
+   1       4128     4144     1389     1388
+   1       4103      519     4107     4104
+   1       4109     4104     4129      524
+   1       4113     4107      535     4129
+   1       4103     4109     4107     4113
+   1       4103     4109     4104     4107
+   1       4109     4113     4129     4107
+   1       4109     4104     4107     4129
+   1       4103      519     4105     4107
+   1       4111     4105      526     4139
+   1       4113     4107     4139      535
+   1       4103     4111     4113     4107
+   1       4103     4111     4107     4105
+   1       4111     4113     4107     4139
+   1       4111     4105     4139     4107
+   1       4104      524     4128     4129
+   1       4107     4129     4144      535
+   1       4106     4128      528     4144
+   1       4104     4107     4128     4106
+   1       4104     4107     4129     4128
+   1       4107     4106     4144     4128
+   1       4107     4129     4128     4144
+   1       4105      526     4139     4137
+   1       4107     4139      535     4144
+   1       4106     4137     4144      528
+   1       4105     4107     4106     4137
+   1       4105     4107     4137     4139
+   1       4107     4106     4137     4144
+   1       4107     4139     4144     4137
+   1       1302       71     1307     1306
+   1       4114     1307      536     4171
+   1       4113     1306     4171      535
+   1       1302     4114     4113     1306
+   1       1302     4114     1306     1307
+   1       4114     4113     1306     4171
+   1       4114     1307     4171     1306
+   1       4133      536     1403     4178
+   1       1402     1403       80     1406
+   1       4136     4178     1406      566
+   1       4133     1402     4136     4178
+   1       4133     1402     4178     1403
+   1       1402     4136     4178     1406
+   1       1402     1403     1406     4178
+   1       4129      535     4173     1389
+   1       4131     4173      566     1393
+   1       1387     1389     1393       79
+   1       4129     4131     1387     1389
+   1       4129     4131     1389     4173
+   1       4131     1387     1389     1393
+   1       4131     4173     1393     1389
+   1       4110      525     4127     4132
+   1       4109     4127      524     4129
+   1       4113     4132     4129      535
+   1       4110     4109     4113     4132
+   1       4110     4109     4132     4127
+   1       4109     4113     4132     4129
+   1       4109     4127     4129     4132
+   1       4110      525     4132     4133
+   1       4114     4133     4171      536
+   1       4113     4132      535     4171
+   1       4110     4114     4132     4113
+   1       4110     4114     4133     4132
+   1       4114     4113     4171     4132
+   1       4114     4133     4132     4171
+   1       4127      524     4129     4131
+   1       4132     4129      535     4173
+   1       4136     4131     4173      566
+   1       4127     4132     4136     4131
+   1       4127     4132     4131     4129
+   1       4132     4136     4131     4173
+   1       4132     4129     4173     4131
+   1       4133      536     4178     4171
+   1       4132     4171     4173      535
+   1       4136     4178      566     4173
+   1       4133     4132     4178     4136
+   1       4133     4132     4171     4178
+   1       4132     4136     4173     4178
+   1       4132     4171     4178     4173
+   1       1282       69     1285     1284
+   1       4137     1284     4143      528
+   1       4138     1285      529     4143
+   1       1282     4137     1285     4138
+   1       1282     4137     1284     1285
+   1       4137     4138     4143     1285
+   1       4137     1284     1285     4143
+   1       4144      528     4146     1388
+   1       1389     1388     1395       79
+   1       4174     4146      568     1395
+   1       4144     1389     4146     4174
+   1       4144     1389     1388     4146
+   1       1389     4174     1395     4146
+   1       1389     1388     4146     1395
+   1       4148      529     1447     4149
+   1       4180     4149     1449      568
+   1       1448     1447       84     1449
+   1       4148     4180     1447     1448
+   1       4148     4180     4149     1447
+   1       4180     1448     1449     1447
+   1       4180     4149     1447     1449
+   1       4139      535     4147     4172
+   1       4140     4172     4148      537
+   1       4138     4147      529     4148
+   1       4139     4140     4147     4138
+   1       4139     4140     4172     4147
+   1       4140     4138     4148     4147
+   1       4140     4172     4147     4148
+   1       4139      535     4144     4147
+   1       4137     4144      528     4143
+   1       4138     4147     4143      529
+   1       4139     4137     4138     4147
+   1       4139     4137     4147     4144
+   1       4137     4138     4147     4143
+   1       4137     4144     4143     4147
+   1       4172      537     4180     4148
+   1       4147     4148     4149      529
+   1       4174     4180      568     4149
+   1       4172     4147     4180     4174
+   1       4172     4147     4148     4180
+   1       4147     4174     4149     4180
+   1       4147     4148     4180     4149
+   1       4144      528     4143     4146
+   1       4147     4143      529     4149
+   1       4174     4146     4149      568
+   1       4144     4147     4174     4146
+   1       4144     4147     4146     4143
+   1       4147     4174     4146     4149
+   1       4147     4143     4149     4146
+   1       1403       80     1406     1409
+   1       4178     1406      566     4295
+   1       4179     1409     4295      573
+   1       1403     4178     4179     1409
+   1       1403     4178     1409     1406
+   1       4178     4179     1409     4295
+   1       4178     1406     4295     1409
+   1       4173      566     1393     4292
+   1       1389     1393       79     1395
+   1       4174     4292     1395      568
+   1       4173     1389     4174     4292
+   1       4173     1389     4292     1393
+   1       1389     4174     4292     1395
+   1       1389     1393     1395     4292
+   1       4181      573     4304     1450
+   1       4180     4304      568     1449
+   1       1448     1450     1449       84
+   1       4181     4180     1448     1450
+   1       4181     4180     1450     4304
+   1       4180     1448     1450     1449
+   1       4180     4304     1449     1450
+   1       4171      535     4172     4175
+   1       4176     4172      537     4181
+   1       4179     4175     4181      573
+   1       4171     4176     4179     4175
+   1       4171     4176     4175     4172
+   1       4176     4179     4175     4181
+   1       4176     4172     4181     4175
+   1       4171      535     4175     4173
+   1       4178     4173     4295      566
+   1       4179     4175      573     4295
+   1       4171     4178     4175     4179
+   1       4171     4178     4173     4175
+   1       4178     4179     4295     4175
+   1       4178     4173     4175     4295
+   1       4172      537     4181     4180
+   1       4175     4181      573     4304
+   1       4174     4180     4304      568
+   1       4172     4175     4174     4180
+   1       4172     4175     4180     4181
+   1       4175     4174     4180     4304
+   1       4175     4181     4304     4180
+   1       4173      566     4292     4295
+   1       4175     4295     4304      573
+   1       4174     4292      568     4304
+   1       4173     4175     4292     4174
+   1       4173     4175     4295     4292
+   1       4175     4174     4304     4292
+   1       4175     4295     4292     4304
+   1        779       10      780      781
+   1       2192      780      176     2198
+   1       2193      781     2198      177
+   1        779     2192     2193      781
+   1        779     2192      781      780
+   1       2192     2193      781     2198
+   1       2192      780     2198      781
+   1       2201      176     1320     2202
+   1       1326     1320       73     1327
+   1       4185     2202     1327      543
+   1       2201     1326     4185     2202
+   1       2201     1326     2202     1320
+   1       1326     4185     2202     1327
+   1       1326     1320     1327     2202
+   1       2206      177     2207     1330
+   1       4190     2207      543     1336
+   1       1335     1330     1336       74
+   1       2206     4190     1335     1330
+   1       2206     4190     1330     2207
+   1       4190     1335     1330     1336
+   1       4190     2207     1336     1330
+   1       2196      539     4183     2205
+   1       2197     4183      540     2206
+   1       2193     2205     2206      177
+   1       2196     2197     2193     2205
+   1       2196     2197     2205     4183
+   1       2197     2193     2205     2206
+   1       2197     4183     2206     2205
+   1       2196      539     2205     2201
+   1       2192     2201     2198      176
+   1       2193     2205      177     2198
+   1       2196     2192     2205     2193
+   1       2196     2192     2201     2205
+   1       2192     2193     2198     2205
+   1       2192     2201     2205     2198
+   1       4183      540     2206     4190
+   1       2205     2206      177     2207
+   1       4185     4190     2207      543
+   1       4183     2205     4185     4190
+   1       4183     2205     4190     2206
+   1       2205     4185     4190     2207
+   1       2205     2206     2207     4190
+   1       2201      176     2202     2198
+   1       2205     2198     2207      177
+   1       4185     2202      543     2207
+   1       2201     2205     2202     4185
+   1       2201     2205     2198     2202
+   1       2205     4185     2207     2202
+   1       2205     2198     2202     2207
+   1       1328       73     1321     1329
+   1       2339     1321      197     2340
+   1       4204     1329     2340      545
+   1       1328     2339     4204     1329
+   1       1328     2339     1329     1321
+   1       2339     4204     1329     2340
+   1       2339     1321     2340     1329
+   1       2335      197      801     2336
+   1        802      801       13      806
+   1       2342     2336      806      202
+   1       2335      802     2342     2336
+   1       2335      802     2336      801
+   1        802     2342     2336      806
+   1        802      801      806     2336
+   1       4209      545     2373     1470
+   1       2374     2373      202     1466
+   1       1472     1470     1466       86
+   1       4209     2374     1472     1470
+   1       4209     2374     1470     2373
+   1       2374     1472     1470     1466
+   1       2374     2373     1466     1470
+   1       2346      198     2349     2347
+   1       4206     2349      569     4209
+   1       4204     2347     4209      545
+   1       2346     4206     4204     2347
+   1       2346     4206     2347     2349
+   1       4206     4204     2347     4209
+   1       4206     2349     4209     2347
+   1       2346      198     2347     2335
+   1       2339     2335     2340      197
+   1       4204     2347      545     2340
+   1       2346     2339     2347     4204
+   1       2346     2339     2335     2347
+   1       2339     4204     2340     2347
+   1       2339     2335     2347     2340
+   1       2349      569     4209     2374
+   1       2347     4209      545     2373
+   1       2342     2374     2373      202
+   1       2349     2347     2342     2374
+   1       2349     2347     2374     4209
+   1       2347     2342     2374     2373
+   1       2347     4209     2373     2374
+   1       2335      197     2336     2340
+   1       2347     2340     2373      545
+   1       2342     2336      202     2373
+   1       2335     2347     2336     2342
+   1       2335     2347     2340     2336
+   1       2347     2342     2373     2336
+   1       2347     2340     2336     2373
+   1       1338       74     1339     1331
+   1       4215     1339      548     2827
+   1       2826     1331     2827      262
+   1       1338     4215     2826     1331
+   1       1338     4215     1331     1339
+   1       4215     2826     1331     2827
+   1       4215     1339     2827     1331
+   1       4219      548     1471     2839
+   1       1473     1471       86     1467
+   1       2840     2839     1467      264
+   1       4219     1473     2840     2839
+   1       4219     1473     2839     1471
+   1       1473     2840     2839     1467
+   1       1473     1471     1467     2839
+   1       2822      262     2823      866
+   1       2829     2823      264      868
+   1        867      866      868       20
+   1       2822     2829      867      866
+   1       2822     2829      866     2823
+   1       2829      867      866      868
+   1       2829     2823      868      866
+   1       4217      576     2833     2828
+   1       2832     2833      263     2822
+   1       2826     2828     2822      262
+   1       4217     2832     2826     2828
+   1       4217     2832     2828     2833
+   1       2832     2826     2828     2822
+   1       2832     2833     2822     2828
+   1       4217      576     2828     4219
+   1       4215     4219     2827      548
+   1       2826     2828      262     2827
+   1       4217     4215     2828     2826
+   1       4217     4215     4219     2828
+   1       4215     2826     2827     2828
+   1       4215     4219     2828     2827
+   1       2833      263     2822     2829
+   1       2828     2822      262     2823
+   1       2840     2829     2823      264
+   1       2833     2828     2840     2829
+   1       2833     2828     2829     2822
+   1       2828     2840     2829     2823
+   1       2828     2822     2823     2829
+   1       4219      548     2839     2827
+   1       2828     2827     2823      262
+   1       2840     2839      264     2823
+   1       4219     2828     2839     2840
+   1       4219     2828     2827     2839
+   1       2828     2840     2823     2839
+   1       2828     2827     2839     2823
+   1       1390       79     1394     1392
+   1       4196     1394      567     4212
+   1       4195     1392     4212      546
+   1       1390     4196     4195     1392
+   1       1390     4196     1392     1394
+   1       4196     4195     1392     4212
+   1       4196     1394     4212     1392
+   1       4199      567     1418     4216
+   1       1416     1418       81     1417
+   1       4198     4216     1417      547
+   1       4199     1416     4198     4216
+   1       4199     1416     4216     1418
+   1       1416     4198     4216     1417
+   1       1416     1418     1417     4216
+   1       4191      546     4210     1337
+   1       4192     4210      547     1338
+   1       1335     1337     1338       74
+   1       4191     4192     1335     1337
+   1       4191     4192     1337     4210
+   1       4192     1335     1337     1338
+   1       4192     4210     1338     1337
+   1       4193      542     4189     4197
+   1       4188     4189      540     4191
+   1       4195     4197     4191      546
+   1       4193     4188     4195     4197
+   1       4193     4188     4197     4189
+   1       4188     4195     4197     4191
+   1       4188     4189     4191     4197
+   1       4193      542     4197     4199
+   1       4196     4199     4212      567
+   1       4195     4197      546     4212
+   1       4193     4196     4197     4195
+   1       4193     4196     4199     4197
+   1       4196     4195     4212     4197
+   1       4196     4199     4197     4212
+   1       4189      540     4191     4192
+   1       4197     4191      546     4210
+   1       4198     4192     4210      547
+   1       4189     4197     4198     4192
+   1       4189     4197     4192     4191
+   1       4197     4198     4192     4210
+   1       4197     4191     4210     4192
+   1       4199      567     4216     4212
+   1       4197     4212     4210      546
+   1       4198     4216      547     4210
+   1       4199     4197     4216     4198
+   1       4199     4197     4212     4216
+   1       4197     4198     4210     4216
+   1       4197     4212     4216     4210
+   1       1390       79     1392     1391
+   1       4194     1391     4205      544
+   1       4195     1392      546     4205
+   1       1390     4194     1392     4195
+   1       1390     4194     1391     1392
+   1       4194     4195     4205     1392
+   1       4194     1391     1392     4205
+   1       4186      544     4200     1328
+   1       1326     1328     1327       73
+   1       4185     4200      543     1327
+   1       4186     1326     4200     4185
+   1       4186     1326     1328     4200
+   1       1326     4185     1327     4200
+   1       1326     1328     4200     1327
+   1       4191      546     1337     4202
+   1       4190     4202     1336      543
+   1       1335     1337       74     1336
+   1       4191     4190     1337     1335
+   1       4191     4190     4202     1337
+   1       4190     1335     1336     1337
+   1       4190     4202     1337     1336
+   1       4184      539     4187     4183
+   1       4188     4183     4191      540
+   1       4195     4187      546     4191
+   1       4184     4188     4187     4195
+   1       4184     4188     4183     4187
+   1       4188     4195     4191     4187
+   1       4188     4183     4187     4191
+   1       4184      539     4186     4187
+   1       4194     4186      544     4205
+   1       4195     4187     4205      546
+   1       4184     4194     4195     4187
+   1       4184     4194     4187     4186
+   1       4194     4195     4187     4205
+   1       4194     4186     4205     4187
+   1       4183      540     4190     4191
+   1       4187     4191     4202      546
+   1       4185     4190      543     4202
+   1       4183     4187     4190     4185
+   1       4183     4187     4191     4190
+   1       4187     4185     4202     4190
+   1       4187     4191     4190     4202
+   1       4186      544     4205     4200
+   1       4187     4205      546     4202
+   1       4185     4200     4202      543
+   1       4186     4187     4185     4200
+   1       4186     4187     4200     4205
+   1       4187     4185     4200     4202
+   1       4187     4205     4202     4200
+   1       1418       81     1417     1420
+   1       4216     1417      547     4217
+   1       4300     1420     4217      576
+   1       1418     4216     4300     1420
+   1       1418     4216     1420     1417
+   1       4216     4300     1420     4217
+   1       4216     1417     4217     1420
+   1       4210      547     1338     4215
+   1       1337     1338       74     1339
+   1       4211     4215     1339      548
+   1       4210     1337     4211     4215
+   1       4210     1337     4215     1338
+   1       1337     4211     4215     1339
+   1       1337     1338     1339     4215
+   1       4308      576     4219     1473
+   1       4218     4219      548     1471
+   1       1472     1473     1471       86
+   1       4308     4218     1472     1473
+   1       4308     4218     1473     4219
+   1       4218     1472     1473     1471
+   1       4218     4219     1471     1473
+   1       4212      546     4213     4214
+   1       4297     4213      569     4308
+   1       4300     4214     4308      576
+   1       4212     4297     4300     4214
+   1       4212     4297     4214     4213
+   1       4297     4300     4214     4308
+   1       4297     4213     4308     4214
+   1       4212      546     4214     4210
+   1       4216     4210     4217      547
+   1       4300     4214      576     4217
+   1       4212     4216     4214     4300
+   1       4212     4216     4210     4214
+   1       4216     4300     4217     4214
+   1       4216     4210     4214     4217
+   1       4213      569     4308     4218
+   1       4214     4308      576     4219
+   1       4211     4218     4219      548
+   1       4213     4214     4211     4218
+   1       4213     4214     4218     4308
+   1       4214     4211     4218     4219
+   1       4214     4308     4219     4218
+   1       4210      547     4215     4217
+   1       4214     4217     4219      576
+   1       4211     4215      548     4219
+   1       4210     4214     4215     4211
+   1       4210     4214     4217     4215
+   1       4214     4211     4219     4215
+   1       4214     4217     4215     4219
+   1       1328       73     1329     1327
+   1       4200     1327     4201      543
+   1       4204     1329      545     4201
+   1       1328     4200     1329     4204
+   1       1328     4200     1327     1329
+   1       4200     4204     4201     1329
+   1       4200     1327     1329     4201
+   1       4202      543     4203     1336
+   1       1337     1336     1339       74
+   1       4211     4203      548     1339
+   1       4202     1337     4203     4211
+   1       4202     1337     1336     4203
+   1       1337     4211     1339     4203
+   1       1337     1336     4203     1339
+   1       4209      545     1470     4208
+   1       4218     4208     1471      548
+   1       1472     1470       86     1471
+   1       4209     4218     1470     1472
+   1       4209     4218     4208     1470
+   1       4218     1472     1471     1470
+   1       4218     4208     1470     1471
+   1       4205      546     4207     4213
+   1       4206     4213     4209      569
+   1       4204     4207      545     4209
+   1       4205     4206     4207     4204
+   1       4205     4206     4213     4207
+   1       4206     4204     4209     4207
+   1       4206     4213     4207     4209
+   1       4205      546     4202     4207
+   1       4200     4202      543     4201
+   1       4204     4207     4201      545
+   1       4205     4200     4204     4207
+   1       4205     4200     4207     4202
+   1       4200     4204     4207     4201
+   1       4200     4202     4201     4207
+   1       4213      569     4218     4209
+   1       4207     4209     4208      545
+   1       4211     4218      548     4208
+   1       4213     4207     4218     4211
+   1       4213     4207     4209     4218
+   1       4207     4211     4208     4218
+   1       4207     4209     4218     4208
+   1       4202      543     4201     4203
+   1       4207     4201      545     4208
+   1       4211     4203     4208      548
+   1       4202     4207     4211     4203
+   1       4202     4207     4203     4201
+   1       4207     4211     4203     4208
+   1       4207     4201     4208     4203
+   1        836       17      841      837
+   1       2594      837     2604      233
+   1       2595      841      237     2604
+   1        836     2594      841     2595
+   1        836     2594      837      841
+   1       2594     2595     2604      841
+   1       2594      837      841     2604
+   1       2608      233     2610     1443
+   1       1450     1443     1455       84
+   1       4324     2610      588     1455
+   1       2608     1450     2610     4324
+   1       2608     1450     1443     2610
+   1       1450     4324     1455     2610
+   1       1450     1443     2610     1455
+   1       2644      237     1672     2645
+   1       4326     2645     1680      588
+   1       1678     1672      103     1680
+   1       2644     4326     1672     1678
+   1       2644     4326     2645     1672
+   1       4326     1678     1680     1672
+   1       4326     2645     1672     1680
+   1       2600      573     2643     4323
+   1       2601     4323     2644      574
+   1       2595     2643      237     2644
+   1       2600     2601     2643     2595
+   1       2600     2601     4323     2643
+   1       2601     2595     2644     2643
+   1       2601     4323     2643     2644
+   1       2600      573     2608     2643
+   1       2594     2608      233     2604
+   1       2595     2643     2604      237
+   1       2600     2594     2595     2643
+   1       2600     2594     2643     2608
+   1       2594     2595     2643     2604
+   1       2594     2608     2604     2643
+   1       4323      574     4326     2644
+   1       2643     2644     2645      237
+   1       4324     4326      588     2645
+   1       4323     2643     4326     4324
+   1       4323     2643     2644     4326
+   1       2643     4324     2645     4326
+   1       2643     2644     4326     2645
+   1       2608      233     2604     2610
+   1       2643     2604      237     2645
+   1       4324     2610     2645      588
+   1       2608     2643     4324     2610
+   1       2608     2643     2610     2604
+   1       2643     4324     2610     2645
+   1       2643     2604     2645     2610
+   1       1449       84     1452     1442
+   1       2362     1442     2365      200
+   1       4305     1452      585     2365
+   1       1449     2362     1452     4305
+   1       1449     2362     1442     1452
+   1       2362     4305     2365     1452
+   1       2362     1442     1452     2365
+   1       2341      200     2358      804
+   1        802      804      806       13
+   1       2342     2358      202      806
+   1       2341      802     2358     2342
+   1       2341      802      804     2358
+   1        802     2342      806     2358
+   1        802      804     2358      806
+   1       4309      585     1475     2376
+   1       2374     2376     1466      202
+   1       1472     1475       86     1466
+   1       4309     2374     1475     1472
+   1       4309     2374     2376     1475
+   1       2374     1472     1466     1475
+   1       2374     2376     1475     1466
+   1       2348      198     2350     2349
+   1       4302     2349     4309      569
+   1       4305     2350      585     4309
+   1       2348     4302     2350     4305
+   1       2348     4302     2349     2350
+   1       4302     4305     4309     2350
+   1       4302     2349     2350     4309
+   1       2348      198     2341     2350
+   1       2362     2341      200     2365
+   1       4305     2350     2365      585
+   1       2348     2362     4305     2350
+   1       2348     2362     2350     2341
+   1       2362     4305     2350     2365
+   1       2362     2341     2365     2350
+   1       2349      569     2374     4309
+   1       2350     4309     2376      585
+   1       2342     2374      202     2376
+   1       2349     2350     2374     2342
+   1       2349     2350     4309     2374
+   1       2350     2342     2376     2374
+   1       2350     4309     2374     2376
+   1       2341      200     2365     2358
+   1       2350     2365      585     2376
+   1       2342     2358     2376      202
+   1       2341     2350     2342     2358
+   1       2341     2350     2358     2365
+   1       2350     2342     2358     2376
+   1       2350     2365     2376     2358
+   1       1679      103     1673     1681
+   1       4330     1681     2860      594
+   1       2859     1673      266     2860
+   1       1679     4330     1673     2859
+   1       1679     4330     1681     1673
+   1       4330     2859     2860     1673
+   1       4330     1681     1673     2860
+   1       4329      594     2842     1478
+   1       1473     1478     1467       86
+   1       2840     2842      264     1467
+   1       4329     1473     2842     2840
+   1       4329     1473     1478     2842
+   1       1473     2840     1467     2842
+   1       1473     1478     2842     1467
+   1       2830      266      870     2836
+   1       2829     2836      868      264
+   1        867      870       20      868
+   1       2830     2829      870      867
+   1       2830     2829     2836      870
+   1       2829      867      868      870
+   1       2829     2836      870      868
+   1       4328      576     2858     2833
+   1       2834     2833     2830      263
+   1       2859     2858      266     2830
+   1       4328     2834     2858     2859
+   1       4328     2834     2833     2858
+   1       2834     2859     2830     2858
+   1       2834     2833     2858     2830
+   1       4328      576     4329     2858
+   1       4330     4329      594     2860
+   1       2859     2858     2860      266
+   1       4328     4330     2859     2858
+   1       4328     4330     2858     4329
+   1       4330     2859     2858     2860
+   1       4330     4329     2860     2858
+   1       2833      263     2829     2830
+   1       2858     2830     2836      266
+   1       2840     2829      264     2836
+   1       2833     2858     2829     2840
+   1       2833     2858     2830     2829
+   1       2858     2840     2836     2829
+   1       2858     2830     2829     2836
+   1       4329      594     2860     2842
+   1       2858     2860      266     2836
+   1       2840     2842     2836      264
+   1       4329     2858     2840     2842
+   1       4329     2858     2842     2860
+   1       2858     2840     2842     2836
+   1       2858     2860     2836     2842
+   1       1393       79     1397     1394
+   1       4291     1394     4298      567
+   1       4293     1397      570     4298
+   1       1393     4291     1397     4293
+   1       1393     4291     1394     1397
+   1       4291     4293     4298     1397
+   1       4291     1394     1397     4298
+   1       4299      567     4301     1418
+   1       1419     1418     1421       81
+   1       4320     4301      577     1421
+   1       4299     1419     4301     4320
+   1       4299     1419     1418     4301
+   1       1419     4320     1421     4301
+   1       1419     1418     4301     1421
+   1       4313      570     1677     4315
+   1       4325     4315     1679      577
+   1       1678     1677      103     1679
+   1       4313     4325     1677     1678
+   1       4313     4325     4315     1677
+   1       4325     1678     1679     1677
+   1       4325     4315     1677     1679
+   1       4294      571     4311     4319
+   1       4296     4319     4313      574
+   1       4293     4311      570     4313
+   1       4294     4296     4311     4293
+   1       4294     4296     4319     4311
+   1       4296     4293     4313     4311
+   1       4296     4319     4311     4313
+   1       4294      571     4299     4311
+   1       4291     4299      567     4298
+   1       4293     4311     4298      570
+   1       4294     4291     4293     4311
+   1       4294     4291     4311     4299
+   1       4291     4293     4311     4298
+   1       4291     4299     4298     4311
+   1       4319      574     4325     4313
+   1       4311     4313     4315      570
+   1       4320     4325      577     4315
+   1       4319     4311     4325     4320
+   1       4319     4311     4313     4325
+   1       4311     4320     4315     4325
+   1       4311     4313     4325     4315
+   1       4299      567     4298     4301
+   1       4311     4298      570     4315
+   1       4320     4301     4315      577
+   1       4299     4311     4320     4301
+   1       4299     4311     4301     4298
+   1       4311     4320     4301     4315
+   1       4311     4298     4315     4301
+   1       1393       79     1395     1397
+   1       4292     1395      568     4303
+   1       4293     1397     4303      570
+   1       1393     4292     4293     1397
+   1       1393     4292     1397     1395
+   1       4292     4293     1397     4303
+   1       4292     1395     4303     1397
+   1       4304      568     1449     4306
+   1       1450     1449       84     1455
+   1       4324     4306     1455      588
+   1       4304     1450     4324     4306
+   1       4304     1450     4306     1449
+   1       1450     4324     4306     1455
+   1       1450     1449     1455     4306
+   1       4313      570     4317     1677
+   1       4326     4317      588     1680
+   1       1678     1677     1680      103
+   1       4313     4326     1678     1677
+   1       4313     4326     1677     4317
+   1       4326     1678     1677     1680
+   1       4326     4317     1680     1677
+   1       4295      573     4323     4312
+   1       4296     4323      574     4313
+   1       4293     4312     4313      570
+   1       4295     4296     4293     4312
+   1       4295     4296     4312     4323
+   1       4296     4293     4312     4313
+   1       4296     4323     4313     4312
+   1       4295      573     4312     4304
+   1       4292     4304     4303      568
+   1       4293     4312      570     4303
+   1       4295     4292     4312     4293
+   1       4295     4292     4304     4312
+   1       4292     4293     4303     4312
+   1       4292     4304     4312     4303
+   1       4323      574     4313     4326
+   1       4312     4313      570     4317
+   1       4324     4326     4317      588
+   1       4323     4312     4324     4326
+   1       4323     4312     4326     4313
+   1       4312     4324     4326     4317
+   1       4312     4313     4317     4326
+   1       4304      568     4306     4303
+   1       4312     4303     4317      570
+   1       4324     4306      588     4317
+   1       4304     4312     4306     4324
+   1       4304     4312     4303     4306
+   1       4312     4324     4317     4306
+   1       4312     4303     4306     4317
+   1       1418       81     1420     1421
+   1       4301     1421     4328      577
+   1       4300     1420      576     4328
+   1       1418     4301     1420     4300
+   1       1418     4301     1421     1420
+   1       4301     4300     4328     1420
+   1       4301     1421     1420     4328
+   1       4315      577     4330     1679
+   1       1677     1679     1681      103
+   1       4318     4330      594     1681
+   1       4315     1677     4330     4318
+   1       4315     1677     1679     4330
+   1       1677     4318     1681     4330
+   1       1677     1679     4330     1681
+   1       4308      576     1473     4329
+   1       4310     4329     1478      594
+   1       1472     1473       86     1478
+   1       4308     4310     1473     1472
+   1       4308     4310     4329     1473
+   1       4310     1472     1478     1473
+   1       4310     4329     1473     1478
+   1       4298      570     4314     4307
+   1       4297     4307     4308      569
+   1       4300     4314      576     4308
+   1       4298     4297     4314     4300
+   1       4298     4297     4307     4314
+   1       4297     4300     4308     4314
+   1       4297     4307     4314     4308
+   1       4298      570     4315     4314
+   1       4301     4315      577     4328
+   1       4300     4314     4328      576
+   1       4298     4301     4300     4314
+   1       4298     4301     4314     4315
+   1       4301     4300     4314     4328
+   1       4301     4315     4328     4314
+   1       4307      569     4310     4308
+   1       4314     4308     4329      576
+   1       4318     4310      594     4329
+   1       4307     4314     4310     4318
+   1       4307     4314     4308     4310
+   1       4314     4318     4329     4310
+   1       4314     4308     4310     4329
+   1       4315      577     4328     4330
+   1       4314     4328      576     4329
+   1       4318     4330     4329      594
+   1       4315     4314     4318     4330
+   1       4315     4314     4330     4328
+   1       4314     4318     4330     4329
+   1       4314     4328     4329     4330
+   1       1449       84     1455     1452
+   1       4306     1455      588     4363
+   1       4305     1452     4363      585
+   1       1449     4306     4305     1452
+   1       1449     4306     1452     1455
+   1       4306     4305     1452     4363
+   1       4306     1455     4363     1452
+   1       4317      588     1680     4376
+   1       1677     1680      103     1681
+   1       4318     4376     1681      594
+   1       4317     1677     4318     4376
+   1       4317     1677     4376     1680
+   1       1677     4318     4376     1681
+   1       1677     1680     1681     4376
+   1       4309      585     4365     1475
+   1       4310     4365      594     1478
+   1       1472     1475     1478       86
+   1       4309     4310     1472     1475
+   1       4309     4310     1475     4365
+   1       4310     1472     1475     1478
+   1       4310     4365     1478     1475
+   1       4303      570     4307     4316
+   1       4302     4307      569     4309
+   1       4305     4316     4309      585
+   1       4303     4302     4305     4316
+   1       4303     4302     4316     4307
+   1       4302     4305     4316     4309
+   1       4302     4307     4309     4316
+   1       4303      570     4316     4317
+   1       4306     4317     4363      588
+   1       4305     4316      585     4363
+   1       4303     4306     4316     4305
+   1       4303     4306     4317     4316
+   1       4306     4305     4363     4316
+   1       4306     4317     4316     4363
+   1       4307      569     4309     4310
+   1       4316     4309      585     4365
+   1       4318     4310     4365      594
+   1       4307     4316     4318     4310
+   1       4307     4316     4310     4309
+   1       4316     4318     4310     4365
+   1       4316     4309     4365     4310
+   1       4317      588     4376     4363
+   1       4316     4363     4365      585
+   1       4318     4376      594     4365
+   1       4317     4316     4376     4318
+   1       4317     4316     4363     4376
+   1       4316     4318     4365     4376
+   1       4316     4363     4376     4365
+3072
+   1            1      732      733
+   1            1      733      731
+   2            1      730      732
+   2            2      738      736
+   3            4      749      748
+   3            4      747      749
+   4            5      752      753
+   4            3      744      743
+   5            2      740      738
+   5            2      737      740
+   6            2      735      737
+   6            1      731      730
+   1            4      748      745
+   1            7      757      760
+   1           11      788      785
+   1            7      759      757
+   1            3      741      744
+   1           12      796      792
+   2            2      736      734
+   2            4      745      746
+   2            9      774      771
+   2            6      755      754
+   2            4      746      747
+   2           16      830      828
+   3            8      767      764
+   3            7      760      762
+   3           23      896      894
+   3            6      756      755
+   3            8      764      766
+   3           21      879      878
+   4            7      762      761
+   4            8      765      767
+   4           24      905      904
+   4            7      761      759
+   4            5      751      752
+   4           20      872      871
+   5            8      766      763
+   5            6      754      756
+   5           18      856      850
+   5            5      753      750
+   5            8      763      765
+   5           15      825      821
+   6            3      743      742
+   6            5      750      751
+   6           13      805      803
+   6            3      742      741
+   6            2      734      735
+   6           10      780      778
+   1           11      785      782
+   1           12      789      793
+   1           30      946      943
+   1           12      792      789
+   1           10      776      779
+   1           31      954      950
+   2            9      771      768
+   2           11      782      784
+   2           28      932      929
+   2           16      828      826
+   2           14      807      811
+   2           36      996      994
+   3           23      894      888
+   3           22      880      886
+   3           47     1094     1090
+   3           21      878      873
+   3           23      888      893
+   3           45     1077     1074
+   4           24      904      897
+   4           25      906      910
+   4           50     1118     1114
+   4           20      871      864
+   4           19      858      862
+   4           42     1053     1049
+   5           18      850      846
+   5           16      826      829
+   5           38     1022     1016
+   5           15      821      817
+   5           18      846      849
+   5           35      991      987
+   6           13      803      798
+   6           15      817      819
+   6           33      971      967
+   6           10      778      776
+   6            9      768      770
+   6           29      938      936
+   1           22      882      880
+   1           11      783      788
+   1           46     1083     1080
+   1           12      797      790
+   1           22      881      883
+   1           55     1151     1148
+   1           22      883      882
+   1           12      793      797
+   1           78     1381     1378
+   1           20      867      865
+   1           12      790      796
+   1           57     1172     1169
+   1           10      781      777
+   1           20      864      866
+   1           39     1029     1027
+   1           20      866      867
+   1           10      779      781
+   1           81     1417     1416
+   2           14      809      807
+   2            9      769      774
+   2           34      979      975
+   2           11      786      783
+   2           14      808      810
+   2           43     1058     1056
+   2           14      810      809
+   2           11      784      786
+   2           70     1293     1291
+   2           21      876      874
+   2           16      827      830
+   2           53     1135     1133
+   2           14      814      808
+   2           21      873      875
+   2           44     1068     1064
+   2           21      875      876
+   2           14      811      814
+   2          100     1643     1642
+   3           27      923      919
+   3           23      889      896
+   3           65     1240     1237
+   3           22      887      881
+   3           27      918      922
+   3           58     1183     1180
+   3           27      922      923
+   3           22      886      887
+   3          122     1907     1906
+   3           26      916      912
+   3           21      874      879
+   3           54     1143     1141
+   3           23      895      889
+   3           26      913      917
+   3           62     1220     1216
+   3           26      917      916
+   3           23      893      895
+   3          118     1867     1866
+   4           27      924      918
+   4           24      898      905
+   4           60     1200     1197
+   4           25      911      907
+   4           27      919      925
+   4           63     1227     1225
+   4           27      925      924
+   4           25      910      911
+   4          124     1927     1926
+   4           24      903      898
+   4           20      865      872
+   4           59     1191     1187
+   4           19      863      859
+   4           24      897      902
+   4           49     1109     1107
+   4           24      902      903
+   4           19      862      863
+   4          116     1847     1846
+   5           26      915      913
+   5           18      847      856
+   5           64     1232     1230
+   5           16      831      827
+   5           26      912      914
+   5           52     1130     1128
+   5           26      914      915
+   5           16      829      831
+   5          112     1799     1798
+   5           25      908      906
+   5           15      818      825
+   5           51     1123     1121
+   5           18      855      847
+   5           25      907      909
+   5           61     1208     1204
+   5           25      909      908
+   5           18      849      855
+   5           98     1626     1623
+   6           19      860      858
+   6           13      799      805
+   6           41     1043     1041
+   6           15      822      818
+   6           19      859      861
+   6           48     1100     1097
+   6           19      861      860
+   6           15      819      822
+   6           85     1463     1461
+   6           13      801      799
+   6           10      777      780
+   6           40     1035     1032
+   6            9      773      769
+   6           13      798      800
+   6           32      961      958
+   6           13      800      801
+   6            9      770      773
+   6           73     1325     1324
+   1           30      943      940
+   1           31      947      951
+   1          128     1950     1947
+   1           31      950      947
+   1           29      934      937
+   1          129     1953     1944
+   2           28      929      926
+   2           30      940      942
+   2          126     1942     1939
+   2           36      994      992
+   2           34      973      976
+   2          134     1981     1967
+   3           47     1090     1086
+   3           46     1078     1082
+   3          145     2037     2030
+   3           45     1074     1071
+   3           47     1086     1089
+   3          143     2029     2026
+   4           50     1114     1110
+   4           51     1119     1122
+   4          148     2052     2048
+   4           42     1049     1045
+   4           41     1039     1042
+   4          140     2013     2007
+   5           38     1016     1012
+   5           36      992      995
+   5          136     1995     1980
+   5           35      987      983
+   5           38     1012     1015
+   5          133     1979     1975
+   6           33      967      964
+   6           35      983      985
+   6          131     1965     1961
+   6           29      936      934
+   6           28      926      928
+   6          127     1945     1938
+   1           46     1080     1078
+   1           43     1054     1057
+   1          144     2031     2015
+   1           55     1148     1144
+   1           58     1176     1178
+   1          153     2070     2067
+   1           78     1378     1374
+   1           75     1340     1347
+   1          184     2247     2226
+   1           57     1169     1167
+   1           55     1144     1147
+   1          155     2084     2066
+   1           39     1027     1024
+   1           42     1045     1047
+   1          137     2000     1998
+   1           81     1416     1412
+   1           72     1311     1319
+   1          192     2306     2276
+   2           34      975      973
+   2           32      956      959
+   2          132     1970     1956
+   2           43     1056     1054
+   2           44     1061     1063
+   2          141     2016     2014
+   2           70     1291     1286
+   2           67     1252     1257
+   2          170     2167     2144
+   2           53     1133     1131
+   2           52     1125     1127
+   2          151     2060     2055
+   2           44     1064     1061
+   2           45     1071     1073
+   2          142     2023     2019
+   2          100     1642     1638
+   2           87     1481     1488
+   2          226     2540     2526
+   3           65     1237     1234
+   3           62     1213     1217
+   3          163     2122     2111
+   3           58     1180     1176
+   3           60     1193     1196
+   3          156     2091     2088
+   3          122     1906     1898
+   3          119     1869     1877
+   3          292     3030     3017
+   3           54     1141     1138
+   3           53     1131     1134
+   3          152     2064     2059
+   3           62     1216     1213
+   3           64     1228     1231
+   3          160     2114     2110
+   3          118     1866     1858
+   3          117     1848     1856
+   3          275     2913     2905
+   4           60     1197     1193
+   4           59     1184     1188
+   4          158     2099     2092
+   4           63     1225     1222
+   4           65     1234     1238
+   4          161     2118     2116
+   4          124     1926     1918
+   4          123     1908     1916
+   4          301     3094     3086
+   4           59     1187     1184
+   4           57     1167     1171
+   4          157     2095     2083
+   4           49     1107     1104
+   4           50     1110     1113
+   4          147     2047     2045
+   4          116     1846     1838
+   4          114     1819     1827
+   4          268     2871     2863
+   5           64     1230     1228
+   5           61     1201     1205
+   5          162     2119     2102
+   5           52     1128     1125
+   5           54     1138     1140
+   5          150     2058     2056
+   5          112     1798     1794
+   5           99     1629     1637
+   5          252     2767     2719
+   5           51     1121     1119
+   5           48     1095     1099
+   5          149     2053     2040
+   5           61     1204     1201
+   5           63     1222     1224
+   5          159     2105     2101
+   5           98     1623     1618
+   5           94     1570     1576
+   5          221     2515     2485
+   6           41     1041     1039
+   6           40     1030     1033
+   6          139     2008     2001
+   6           48     1097     1095
+   6           49     1104     1106
+   6          146     2041     2038
+   6           85     1461     1456
+   6           83     1432     1437
+   6          201     2369     2352
+   6           40     1032     1030
+   6           39     1024     1026
+   6          138     2003     1997
+   6           32      958      956
+   6           33      964      966
+   6          130     1958     1955
+   6           73     1324     1320
+   6           66     1243     1250
+   6          176     2200     2186
+   1           75     1342     1340
+   1           30      941      946
+   1          181     2227     2209
+   1           31      955      948
+   1           75     1341     1343
+   1          185     2255     2252
+   1           75     1343     1342
+   1           31      951      955
+   1          334     3265     3252
+   1           72     1313     1311
+   1           31      948      954
+   1          188     2277     2251
+   1           29      939      935
+   1           72     1310     1312
+   1          172     2180     2178
+   1           72     1312     1313
+   1           29      937      939
+   1          337     3249     3244
+   2           67     1254     1252
+   2           28      927      932
+   2          167     2146     2125
+   2           30      944      941
+   2           67     1253     1255
+   2          178     2210     2208
+   2           67     1255     1254
+   2           30      942      944
+   2          326     3233     3216
+   2           87     1483     1481
+   2           36      993      996
+   2          224     2527     2517
+   2           34      980      974
+   2           87     1480     1482
+   2          203     2383     2379
+   2           87     1482     1483
+   2           34      976      980
+   2          365     3367     3346
+   3          119     1871     1869
+   3           47     1087     1094
+   3          290     3018     2969
+   3           46     1085     1079
+   3          119     1868     1870
+   3          276     2919     2916
+   3          119     1870     1871
+   3           46     1082     1085
+   3          421     3646     3638
+   3          117     1850     1848
+   3           45     1072     1077
+   3          274     2906     2873
+   3           47     1093     1087
+   3          117     1849     1851
+   3          284     2971     2968
+   3          117     1851     1850
+   3           47     1089     1093
+   3          413     3632     3619
+   4          123     1910     1908
+   4           50     1111     1118
+   4          300     3087     3033
+   4           51     1124     1120
+   4          123     1909     1911
+   4          302     3098     3096
+   4          123     1911     1910
+   4           51     1122     1124
+   4          436     3726     3710
+   4          114     1821     1819
+   4           42     1046     1053
+   4          267     2864     2810
+   4           41     1044     1040
+   4          114     1818     1820
+   4          254     2780     2778
+   4          114     1820     1821
+   4           41     1042     1044
+   4          397     3541     3536
+   5           99     1631     1629
+   5           38     1013     1022
+   5          246     2720     2682
+   5           36      997      993
+   5           99     1628     1630
+   5          222     2520     2518
+   5           99     1630     1631
+   5           36      995      997
+   5          379     3420     3415
+   5           94     1572     1570
+   5           35      984      991
+   5          217     2486     2455
+   5           38     1021     1013
+   5           94     1571     1573
+   5          242     2685     2681
+   5           94     1573     1572
+   5           38     1015     1021
+   5          363     3410     3389
+   6           83     1434     1432
+   6           33      965      971
+   6          199     2354     2315
+   6           35      988      984
+   6           83     1433     1435
+   6          213     2456     2453
+   6           83     1435     1434
+   6           35      985      988
+   6          349     3335     3313
+   6           66     1245     1243
+   6           29      935      938
+   6          174     2187     2177
+   6           28      931      927
+   6           66     1242     1244
+   6          164     2127     2124
+   6           66     1244     1245
+   6           28      928      931
+   6          329     3229     3213
+   1           78     1377     1375
+   1           46     1079     1083
+   1          278     2929     2914
+   1           43     1059     1055
+   1           78     1374     1376
+   1          179     2216     2214
+   1           78     1376     1377
+   1           43     1057     1059
+   1          415     3573     3565
+   1           82     1424     1422
+   1           55     1145     1151
+   1          193     2310     2259
+   1           58     1181     1177
+   1           82     1423     1426
+   1          277     2923     2920
+   1           82     1426     1424
+   1           58     1178     1181
+   1          454     3801     3784
+   1           82     1429     1423
+   1           78     1375     1381
+   1          279     2936     2926
+   1           75     1349     1341
+   1           82     1422     1427
+   1          189     2286     2282
+   1           82     1427     1429
+   1           75     1347     1349
+   1          563     4235     4229
+   1           81     1415     1413
+   1           57     1168     1172
+   1          263     2831     2815
+   1           55     1150     1145
+   1           81     1412     1414
+   1          186     2261     2258
+   1           81     1414     1415
+   1           55     1147     1150
+   1          468     3797     3782
+   1           74     1332     1330
+   1           39     1025     1029
+   1          177     2204     2182
+   1           42     1050     1046
+   1           74     1331     1334
+   1          260     2811     2808
+   1           74     1334     1332
+   1           42     1047     1050
+   1          384     3500     3491
+   1           74     1338     1331
+   1           81     1413     1417
+   1          262     2826     2822
+   1           72     1317     1310
+   1           74     1330     1335
+   1          175     2197     2193
+   1           74     1335     1338
+   1           72     1319     1317
+   1          547     4192     4198
+   2           70     1289     1287
+   2           34      974      979
+   2          205     2396     2378
+   2           32      962      957
+   2           70     1286     1288
+   2          165     2134     2131
+   2           70     1288     1289
+   2           32      959      962
+   2          354     3304     3290
+   2           76     1352     1350
+   2           43     1055     1058
+   2          182     2233     2213
+   2           44     1067     1062
+   2           76     1351     1353
+   2          204     2390     2386
+   2           76     1353     1352
+   2           44     1063     1067
+   2          400     3569     3557
+   2           76     1355     1351
+   2           70     1287     1293
+   2          206     2404     2394
+   2           67     1260     1253
+   2           76     1350     1354
+   2          180     2223     2219
+   2           76     1354     1355
+   2           67     1257     1260
+   2          531     4095     4082
+   2          100     1641     1639
+   2           53     1132     1135
+   2          272     2891     2877
+   2           52     1129     1126
+   2          100     1638     1640
+   2          223     2523     2521
+   2          100     1640     1641
+   2           52     1127     1129
+   2          444     3743     3736
+   2           90     1520     1518
+   2           44     1062     1068
+   2          210     2433     2387
+   2           45     1075     1072
+   2           90     1519     1521
+   2          269     2874     2872
+   2           90     1521     1520
+   2           45     1073     1075
+   2          407     3605     3585
+   2           90     1525     1519
+   2          100     1639     1643
+   2          271     2886     2882
+   2           87     1486     1480
+   2           90     1518     1522
+   2          207     2412     2408
+   2           90     1522     1525
+   2           87     1488     1486
+   2          615     4411     4419
+   3          122     1901     1899
+   3           65     1235     1240
+   3          319     3196     3164
+   3           62     1221     1214
+   3          122     1898     1900
+   3          285     2979     2976
+   3          122     1900     1901
+   3           62     1217     1221
+   3          506     4026     4011
+   3          120     1881     1878
+   3           58     1177     1183
+   3          283     2963     2922
+   3           60     1199     1194
+   3          120     1879     1882
+   3          314     3161     3158
+   3          120     1882     1881
+   3           60     1196     1199
+   3          475     3911     3904
+   3          120     1887     1879
+   3          122     1899     1907
+   3          318     3195     3190
+   3          119     1876     1868
+   3          120     1878     1886
+   3          282     2961     2957
+   3          120     1886     1887
+   3          119     1877     1876
+   3          726     4909     4910
+   3          118     1861     1859
+   3           54     1139     1143
+   3          312     3148     3127
+   3           53     1137     1132
+   3          118     1858     1860
+   3          270     2880     2878
+   3          118     1860     1861
+   3           53     1134     1137
+   3          448     3763     3752
+   3          121     1891     1888
+   3           62     1214     1220
+   3          291     3023     2975
+   3           64     1233     1229
+   3          121     1889     1892
+   3          309     3133     3131
+   3          121     1892     1891
+   3           64     1231     1233
+   3          498     4024     4006
+   3          121     1897     1889
+   3          118     1859     1867
+   3          313     3156     3147
+   3          117     1857     1849
+   3          121     1888     1896
+   3          289     3016     3012
+   3          121     1896     1897
+   3          117     1856     1857
+   3          723     4907     4906
+   4          124     1921     1919
+   4           60     1194     1200
+   4          320     3201     3159
+   4           59     1192     1185
+   4          124     1918     1920
+   4          294     3043     3040
+   4          124     1920     1921
+   4           59     1188     1192
+   4          483     3930     3916
+   4          125     1931     1928
+   4           63     1223     1227
+   4          307     3122     3100
+   4           65     1241     1235
+   4          125     1929     1932
+   4          315     3168     3165
+   4          125     1932     1931
+   4           65     1238     1241
+   4          502     4033     4029
+   4          125     1937     1929
+   4          124     1919     1927
+   4          321     3209     3200
+   4          123     1917     1909
+   4          125     1928     1936
+   4          306     3120     3116
+   4          125     1936     1937
+   4          123     1916     1917
+   4          729     4913     4912
+   4          116     1841     1839
+   4           59     1185     1191
+   4          299     3082     3039
+   4           57     1175     1168
+   4          116     1838     1840
+   4          261     2820     2817
+   4          116     1840     1841
+   4           57     1171     1175
+   4          479     3901     3887
+   4          115     1831     1828
+   4           49     1105     1109
+   4          259     2804     2782
+   4           50     1117     1111
+   4          115     1829     1832
+   4          293     3035     3032
+   4          115     1832     1831
+   4           50     1113     1117
+   4          431     3707     3703
+   4          115     1837     1829
+   4          116     1839     1847
+   4          298     3081     3076
+   4          114     1826     1818
+   4          115     1828     1836
+   4          258     2802     2798
+   4          115     1836     1837
+   4          114     1827     1826
+   4          720     4903     4904
+   5          112     1797     1795
+   5           64     1229     1232
+   5          311     3143     3130
+   5           61     1209     1202
+   5          112     1794     1796
+   5          243     2696     2692
+   5          112     1796     1797
+   5           61     1205     1209
+   5          503     3981     3958
+   5          101     1650     1648
+   5           52     1126     1130
+   5          227     2544     2522
+   5           54     1142     1139
+   5          101     1649     1652
+   5          308     3128     3126
+   5          101     1652     1650
+   5           54     1140     1142
+   5          442     3747     3738
+   5          101     1656     1649
+   5          112     1795     1799
+   5          310     3138     3134
+   5           99     1635     1628
+   5          101     1648     1653
+   5          225     2537     2533
+   5          101     1653     1656
+   5           99     1637     1635
+   5          666     4689     4695
+   5           98     1622     1619
+   5           51     1120     1123
+   5          304     3105     3095
+   5           48     1102     1096
+   5           98     1618     1620
+   5          214     2465     2462
+   5           98     1620     1622
+   5           48     1099     1102
+   5          437     3693     3679
+   5          111     1786     1784
+   5           61     1202     1208
+   5          251     2762     2691
+   5           63     1226     1223
+   5          111     1785     1787
+   5          303     3101     3099
+   5          111     1787     1786
+   5           63     1224     1226
+   5          489     3977     3950
+   5          111     1789     1785
+   5           98     1619     1626
+   5          305     3113     3103
+   5           94     1579     1571
+   5          111     1784     1788
+   5          245     2717     2713
+   5          111     1788     1789
+   5           94     1576     1579
+   5          656     4601     4592
+   6           85     1459     1457
+   6           41     1040     1043
+   6          256     2787     2777
+   6           40     1037     1031
+   6           85     1456     1458
+   6          195     2325     2322
+   6           85     1458     1459
+   6           40     1033     1037
+   6          392     3525     3505
+   6           95     1582     1580
+   6           48     1096     1100
+   6          218     2492     2460
+   6           49     1108     1105
+   6           95     1581     1583
+   6          255     2783     2781
+   6           95     1583     1582
+   6           49     1106     1108
+   6          425     3682     3662
+   6           95     1585     1581
+   6           85     1457     1463
+   6          257     2795     2785
+   6           83     1440     1433
+   6           95     1580     1584
+   6          215     2472     2468
+   6           95     1584     1585
+   6           83     1437     1440
+   6          590     4354     4341
+   6           73     1323     1321
+   6           40     1031     1035
+   6          197     2337     2321
+   6           39     1028     1025
+   6           73     1320     1322
+   6          173     2183     2181
+   6           73     1322     1323
+   6           39     1026     1028
+   6          387     3496     3489
+   6           69     1278     1276
+   6           32      957      961
+   6          169     2160     2130
+   6           33      969      965
+   6           69     1277     1279
+   6          194     2317     2314
+   6           69     1279     1278
+   6           33      966      969
+   6          342     3300     3282
+   6           69     1283     1277
+   6           73     1321     1325
+   6          196     2332     2328
+   6           66     1248     1242
+   6           69     1276     1280
+   6          166     2141     2137
+   6           69     1280     1283
+   6           66     1250     1248
+   6          527     4053     4061
+   1          128     1947      732
+   1          129      733     1947
+   1          732     1947      733
+   1          129     1944      733
+   1          127      731     1944
+   1          733     1944      731
+   2          126     1939      730
+   2          128      732     1939
+   2          730     1939      732
+   2          134     1967      738
+   2          132      736     1967
+   2          738     1967      736
+   3          145     2030      749
+   3          144      748     2030
+   3          749     2030      748
+   3          143     2026      747
+   3          145      749     2026
+   3          747     2026      749
+   4          148     2048      752
+   4          149      753     2048
+   4          752     2048      753
+   4          140     2007      744
+   4          139      743     2007
+   4          744     2007      743
+   5          136     1980      740
+   5          134      738     1980
+   5          740     1980      738
+   5          133     1975      737
+   5          136      740     1975
+   5          737     1975      740
+   6          131     1961      735
+   6          133      737     1961
+   6          735     1961      737
+   6          127     1938      731
+   6          126      730     1938
+   6          731     1938      730
+   1          144     2015      748
+   1          141      745     2015
+   1          748     2015      745
+   1          153     2067      757
+   1          156      760     2067
+   1          757     2067      760
+   1          184     2226      788
+   1          181      785     2226
+   1          788     2226      785
+   1          155     2066      759
+   1          153      757     2066
+   1          759     2066      757
+   1          137     1998      741
+   1          140      744     1998
+   1          741     1998      744
+   1          192     2276      796
+   1          188      792     2276
+   1          796     2276      792
+   2          132     1956      736
+   2          130      734     1956
+   2          736     1956      734
+   2          141     2014      745
+   2          142      746     2014
+   2          745     2014      746
+   2          170     2144      774
+   2          167      771     2144
+   2          774     2144      771
+   2          151     2055      755
+   2          150      754     2055
+   2          755     2055      754
+   2          142     2019      746
+   2          143      747     2019
+   2          746     2019      747
+   2          226     2526      830
+   2          224      828     2526
+   2          830     2526      828
+   3          163     2111      767
+   3          160      764     2111
+   3          767     2111      764
+   3          156     2088      760
+   3          158      762     2088
+   3          760     2088      762
+   3          292     3017      896
+   3          290      894     3017
+   3          896     3017      894
+   3          152     2059      756
+   3          151      755     2059
+   3          756     2059      755
+   3          160     2110      764
+   3          162      766     2110
+   3          764     2110      766
+   3          275     2905      879
+   3          274      878     2905
+   3          879     2905      878
+   4          158     2092      762
+   4          157      761     2092
+   4          762     2092      761
+   4          161     2116      765
+   4          163      767     2116
+   4          765     2116      767
+   4          301     3086      905
+   4          300      904     3086
+   4          905     3086      904
+   4          157     2083      761
+   4          155      759     2083
+   4          761     2083      759
+   4          147     2045      751
+   4          148      752     2045
+   4          751     2045      752
+   4          268     2863      872
+   4          267      871     2863
+   4          872     2863      871
+   5          162     2102      766
+   5          159      763     2102
+   5          766     2102      763
+   5          150     2056      754
+   5          152      756     2056
+   5          754     2056      756
+   5          252     2719      856
+   5          246      850     2719
+   5          856     2719      850
+   5          149     2040      753
+   5          146      750     2040
+   5          753     2040      750
+   5          159     2101      763
+   5          161      765     2101
+   5          763     2101      765
+   5          221     2485      825
+   5          217      821     2485
+   5          825     2485      821
+   6          139     2001      743
+   6          138      742     2001
+   6          743     2001      742
+   6          146     2038      750
+   6          147      751     2038
+   6          750     2038      751
+   6          201     2352      805
+   6          199      803     2352
+   6          805     2352      803
+   6          138     1997      742
+   6          137      741     1997
+   6          742     1997      741
+   6          130     1955      734
+   6          131      735     1955
+   6          734     1955      735
+   6          176     2186      780
+   6          174      778     2186
+   6          780     2186      778
+   1          181     2209      785
+   1          178      782     2209
+   1          785     2209      782
+   1          185     2252      789
+   1          189      793     2252
+   1          789     2252      793
+   1          334     3252      946
+   1          331      943     3252
+   1          946     3252      943
+   1          188     2251      792
+   1          185      789     2251
+   1          792     2251      789
+   1          172     2178      776
+   1          175      779     2178
+   1          776     2178      779
+   1          337     3244      954
+   1          328      950     3244
+   1          954     3244      950
+   2          167     2125      771
+   2          164      768     2125
+   2          771     2125      768
+   2          178     2208      782
+   2          180      784     2208
+   2          782     2208      784
+   2          326     3216      932
+   2          323      929     3216
+   2          932     3216      929
+   2          224     2517      828
+   2          222      826     2517
+   2          828     2517      826
+   2          203     2379      807
+   2          207      811     2379
+   2          807     2379      811
+   2          365     3346      996
+   2          351      994     3346
+   2          996     3346      994
+   3          290     2969      894
+   3          284      888     2969
+   3          894     2969      888
+   3          276     2916      880
+   3          282      886     2916
+   3          880     2916      886
+   3          421     3638     1094
+   3          414     1090     3638
+   3         1094     3638     1090
+   3          274     2873      878
+   3          269      873     2873
+   3          878     2873      873
+   3          284     2968      888
+   3          289      893     2968
+   3          888     2968      893
+   3          413     3619     1077
+   3          410     1074     3619
+   3         1077     3619     1074
+   4          300     3033      904
+   4          293      897     3033
+   4          904     3033      897
+   4          302     3096      906
+   4          306      910     3096
+   4          906     3096      910
+   4          436     3710     1118
+   4          432     1114     3710
+   4         1118     3710     1114
+   4          267     2810      871
+   4          260      864     2810
+   4          871     2810      864
+   4          254     2778      858
+   4          258      862     2778
+   4          858     2778      862
+   4          397     3536     1053
+   4          391     1049     3536
+   4         1053     3536     1049
+   5          246     2682      850
+   5          242      846     2682
+   5          850     2682      846
+   5          222     2518      826
+   5          225      829     2518
+   5          826     2518      829
+   5          379     3415     1022
+   5          364     1016     3415
+   5         1022     3415     1016
+   5          217     2455      821
+   5          213      817     2455
+   5          821     2455      817
+   5          242     2681      846
+   5          245      849     2681
+   5          846     2681      849
+   5          363     3389      991
+   5          359      987     3389
+   5          991     3389      987
+   6          199     2315      803
+   6          194      798     2315
+   6          803     2315      798
+   6          213     2453      817
+   6          215      819     2453
+   6          817     2453      819
+   6          349     3313      971
+   6          345      967     3313
+   6          971     3313      967
+   6          174     2177      778
+   6          172      776     2177
+   6          778     2177      776
+   6          164     2124      768
+   6          166      770     2124
+   6          768     2124      770
+   6          329     3213      938
+   6          322      936     3213
+   6          938     3213      936
+   1          278     2914      882
+   1          276      880     2914
+   1          882     2914      880
+   1          179     2214      783
+   1          184      788     2214
+   1          783     2214      788
+   1          415     3565     1083
+   1          399     1080     3565
+   1         1083     3565     1080
+   1          193     2259      797
+   1          186      790     2259
+   1          797     2259      790
+   1          277     2920      881
+   1          279      883     2920
+   1          881     2920      883
+   1          454     3784     1151
+   1          451     1148     3784
+   1         1151     3784     1148
+   1          279     2926      883
+   1          278      882     2926
+   1          883     2926      882
+   1          189     2282      793
+   1          193      797     2282
+   1          793     2282      797
+   1          563     4229     1381
+   1          550     1378     4229
+   1         1381     4229     1378
+   1          263     2815      867
+   1          261      865     2815
+   1          867     2815      865
+   1          186     2258      790
+   1          192      796     2258
+   1          790     2258      796
+   1          468     3782     1172
+   1          450     1169     3782
+   1         1172     3782     1169
+   1          177     2182      781
+   1          173      777     2182
+   1          781     2182      777
+   1          260     2808      864
+   1          262      866     2808
+   1          864     2808      866
+   1          384     3491     1029
+   1          382     1027     3491
+   1         1029     3491     1027
+   1          262     2822      866
+   1          263      867     2822
+   1          866     2822      867
+   1          175     2193      779
+   1          177      781     2193
+   1          779     2193      781
+   1          547     4198     1417
+   1          542     1416     4198
+   1         1417     4198     1416
+   2          205     2378      809
+   2          203      807     2378
+   2          809     2378      807
+   2          165     2131      769
+   2          170      774     2131
+   2          769     2131      774
+   2          354     3290      979
+   2          340      975     3290
+   2          979     3290      975
+   2          182     2213      786
+   2          179      783     2213
+   2          786     2213      783
+   2          204     2386      808
+   2          206      810     2386
+   2          808     2386      810
+   2          400     3557     1058
+   2          398     1056     3557
+   2         1058     3557     1056
+   2          206     2394      810
+   2          205      809     2394
+   2          810     2394      809
+   2          180     2219      784
+   2          182      786     2219
+   2          784     2219      786
+   2          531     4082     1293
+   2          514     1291     4082
+   2         1293     4082     1291
+   2          272     2877      876
+   2          270      874     2877
+   2          876     2877      874
+   2          223     2521      827
+   2          226      830     2521
+   2          827     2521      830
+   2          444     3736     1135
+   2          439     1133     3736
+   2         1135     3736     1133
+   2          210     2387      814
+   2          204      808     2387
+   2          814     2387      808
+   2          269     2872      873
+   2          271      875     2872
+   2          873     2872      875
+   2          407     3585     1068
+   2          403     1064     3585
+   2         1068     3585     1064
+   2          271     2882      875
+   2          272      876     2882
+   2          875     2882      876
+   2          207     2408      811
+   2          210      814     2408
+   2          811     2408      814
+   2          615     4419     1643
+   2          599     1642     4419
+   2         1643     4419     1642
+   3          319     3164      923
+   3          315      919     3164
+   3          923     3164      919
+   3          285     2976      889
+   3          292      896     2976
+   3          889     2976      896
+   3          506     4011     1240
+   3          495     1237     4011
+   3         1240     4011     1237
+   3          283     2922      887
+   3          277      881     2922
+   3          887     2922      881
+   3          314     3158      918
+   3          318      922     3158
+   3          918     3158      922
+   3          475     3904     1183
+   3          472     1180     3904
+   3         1183     3904     1180
+   3          318     3190      922
+   3          319      923     3190
+   3          922     3190      923
+   3          282     2957      886
+   3          283      887     2957
+   3          886     2957      887
+   3          726     4910     1907
+   3          725     1906     4910
+   3         1907     4910     1906
+   3          312     3127      916
+   3          308      912     3127
+   3          916     3127      912
+   3          270     2878      874
+   3          275      879     2878
+   3          874     2878      879
+   3          448     3752     1143
+   3          443     1141     3752
+   3         1143     3752     1141
+   3          291     2975      895
+   3          285      889     2975
+   3          895     2975      889
+   3          309     3131      913
+   3          313      917     3131
+   3          913     3131      917
+   3          498     4006     1220
+   3          494     1216     4006
+   3         1220     4006     1216
+   3          313     3147      917
+   3          312      916     3147
+   3          917     3147      916
+   3          289     3012      893
+   3          291      895     3012
+   3          893     3012      895
+   3          723     4906     1867
+   3          721     1866     4906
+   3         1867     4906     1866
+   4          320     3159      924
+   4          314      918     3159
+   4          924     3159      918
+   4          294     3040      898
+   4          301      905     3040
+   4          898     3040      905
+   4          483     3916     1200
+   4          476     1197     3916
+   4         1200     3916     1197
+   4          307     3100      911
+   4          303      907     3100
+   4          911     3100      907
+   4          315     3165      919
+   4          321      925     3165
+   4          919     3165      925
+   4          502     4029     1227
+   4          500     1225     4029
+   4         1227     4029     1225
+   4          321     3200      925
+   4          320      924     3200
+   4          925     3200      924
+   4          306     3116      910
+   4          307      911     3116
+   4          910     3116      911
+   4          729     4912     1927
+   4          727     1926     4912
+   4         1927     4912     1926
+   4          299     3039      903
+   4          294      898     3039
+   4          903     3039      898
+   4          261     2817      865
+   4          268      872     2817
+   4          865     2817      872
+   4          479     3887     1191
+   4          467     1187     3887
+   4         1191     3887     1187
+   4          259     2782      863
+   4          255      859     2782
+   4          863     2782      859
+   4          293     3032      897
+   4          298      902     3032
+   4          897     3032      902
+   4          431     3703     1109
+   4          429     1107     3703
+   4         1109     3703     1107
+   4          298     3076      902
+   4          299      903     3076
+   4          902     3076      903
+   4          258     2798      862
+   4          259      863     2798
+   4          862     2798      863
+   4          720     4904     1847
+   4          719     1846     4904
+   4         1847     4904     1846
+   5          311     3130      915
+   5          309      913     3130
+   5          915     3130      913
+   5          243     2692      847
+   5          252      856     2692
+   5          847     2692      856
+   5          503     3958     1232
+   5          486     1230     3958
+   5         1232     3958     1230
+   5          227     2522      831
+   5          223      827     2522
+   5          831     2522      827
+   5          308     3126      912
+   5          310      914     3126
+   5          912     3126      914
+   5          442     3738     1130
+   5          440     1128     3738
+   5         1130     3738     1128
+   5          310     3134      914
+   5          311      915     3134
+   5          914     3134      915
+   5          225     2533      829
+   5          227      831     2533
+   5          829     2533      831
+   5          666     4695     1799
+   5          661     1798     4695
+   5         1799     4695     1798
+   5          304     3095      908
+   5          302      906     3095
+   5          908     3095      906
+   5          214     2462      818
+   5          221      825     2462
+   5          818     2462      825
+   5          437     3679     1123
+   5          424     1121     3679
+   5         1123     3679     1121
+   5          251     2691      855
+   5          243      847     2691
+   5          855     2691      847
+   5          303     3099      907
+   5          305      909     3099
+   5          907     3099      909
+   5          489     3950     1208
+   5          485     1204     3950
+   5         1208     3950     1204
+   5          305     3103      909
+   5          304      908     3103
+   5          909     3103      908
+   5          245     2713      849
+   5          251      855     2713
+   5          849     2713      855
+   5          656     4592     1626
+   5          635     1623     4592
+   5         1626     4592     1623
+   6          256     2777      860
+   6          254      858     2777
+   6          860     2777      858
+   6          195     2322      799
+   6          201      805     2322
+   6          799     2322      805
+   6          392     3505     1043
+   6          385     1041     3505
+   6         1043     3505     1041
+   6          218     2460      822
+   6          214      818     2460
+   6          822     2460      818
+   6          255     2781      859
+   6          257      861     2781
+   6          859     2781      861
+   6          425     3662     1100
+   6          422     1097     3662
+   6         1100     3662     1097
+   6          257     2785      861
+   6          256      860     2785
+   6          861     2785      860
+   6          215     2468      819
+   6          218      822     2468
+   6          819     2468      822
+   6          590     4341     1463
+   6          580     1461     4341
+   6         1463     4341     1461
+   6          197     2321      801
+   6          195      799     2321
+   6          801     2321      799
+   6          173     2181      777
+   6          176      780     2181
+   6          777     2181      780
+   6          387     3489     1035
+   6          381     1032     3489
+   6         1035     3489     1032
+   6          169     2130      773
+   6          165      769     2130
+   6          773     2130      769
+   6          194     2314      798
+   6          196      800     2314
+   6          798     2314      800
+   6          342     3282      961
+   6          339      958     3282
+   6          961     3282      958
+   6          196     2328      800
+   6          197      801     2328
+   6          800     2328      801
+   6          166     2137      770
+   6          169      773     2137
+   6          770     2137      773
+   6          527     4061     1325
+   6          511     1324     4061
+   6         1325     4061     1324
+   1          331     1950      943
+   1          128      940     1950
+   1          943     1950      940
+   1          129     1954      947
+   1          331      951     1954
+   1          947     1954      951
+   1          331     1954     1950
+   1          129     1947     1954
+   1         1950     1954     1947
+   1          328     1953      950
+   1          129      947     1953
+   1          950     1953      947
+   1          127     1946      934
+   1          328      937     1946
+   1          934     1946      937
+   1          328     1946     1953
+   1          127     1944     1946
+   1         1953     1946     1944
+   2          323     1942      929
+   2          126      926     1942
+   2          929     1942      926
+   2          128     1948      940
+   2          323      942     1948
+   2          940     1948      942
+   2          323     1948     1942
+   2          128     1939     1948
+   2         1942     1948     1939
+   2          351     1981      994
+   2          134      992     1981
+   2          994     1981      992
+   2          132     1971      973
+   2          351      976     1971
+   2          973     1971      976
+   2          351     1971     1981
+   2          132     1967     1971
+   2         1981     1971     1967
+   3          414     2037     1090
+   3          145     1086     2037
+   3         1090     2037     1086
+   3          144     2033     1078
+   3          414     1082     2033
+   3         1078     2033     1082
+   3          414     2033     2037
+   3          144     2030     2033
+   3         2037     2033     2030
+   3          410     2029     1074
+   3          143     1071     2029
+   3         1074     2029     1071
+   3          145     2036     1086
+   3          410     1089     2036
+   3         1086     2036     1089
+   3          410     2036     2029
+   3          145     2026     2036
+   3         2029     2036     2026
+   4          432     2052     1114
+   4          148     1110     2052
+   4         1114     2052     1110
+   4          149     2054     1119
+   4          432     1122     2054
+   4         1119     2054     1122
+   4          432     2054     2052
+   4          149     2048     2054
+   4         2052     2054     2048
+   4          391     2013     1049
+   4          140     1045     2013
+   4         1049     2013     1045
+   4          139     2009     1039
+   4          391     1042     2009
+   4         1039     2009     1042
+   4          391     2009     2013
+   4          139     2007     2009
+   4         2013     2009     2007
+   5          364     1995     1016
+   5          136     1012     1995
+   5         1016     1995     1012
+   5          134     1982      992
+   5          364      995     1982
+   5          992     1982      995
+   5          364     1982     1995
+   5          134     1980     1982
+   5         1995     1982     1980
+   5          359     1979      987
+   5          133      983     1979
+   5          987     1979      983
+   5          136     1994     1012
+   5          359     1015     1994
+   5         1012     1994     1015
+   5          359     1994     1979
+   5          136     1975     1994
+   5         1979     1994     1975
+   6          345     1965      967
+   6          131      964     1965
+   6          967     1965      964
+   6          133     1976      983
+   6          345      985     1976
+   6          983     1976      985
+   6          345     1976     1965
+   6          133     1961     1976
+   6         1965     1976     1961
+   6          322     1945      936
+   6          127      934     1945
+   6          936     1945      934
+   6          126     1941      926
+   6          322      928     1941
+   6          926     1941      928
+   6          322     1941     1945
+   6          126     1938     1941
+   6         1945     1941     1938
+   1          399     2031     1080
+   1          144     1078     2031
+   1         1080     2031     1078
+   1          141     2017     1054
+   1          399     1057     2017
+   1         1054     2017     1057
+   1          399     2017     2031
+   1          141     2015     2017
+   1         2031     2017     2015
+   1          451     2070     1148
+   1          153     1144     2070
+   1         1148     2070     1144
+   1          156     2089     1176
+   1          451     1178     2089
+   1         1176     2089     1178
+   1          451     2089     2070
+   1          156     2067     2089
+   1         2070     2089     2067
+   1          550     2247     1378
+   1          184     1374     2247
+   1         1378     2247     1374
+   1          181     2230     1340
+   1          550     1347     2230
+   1         1340     2230     1347
+   1          550     2230     2247
+   1          181     2226     2230
+   1         2247     2230     2226
+   1          450     2084     1169
+   1          155     1167     2084
+   1         1169     2084     1167
+   1          153     2069     1144
+   1          450     1147     2069
+   1         1144     2069     1147
+   1          450     2069     2084
+   1          153     2066     2069
+   1         2084     2069     2066
+   1          382     2000     1027
+   1          137     1024     2000
+   1         1027     2000     1024
+   1          140     2010     1045
+   1          382     1047     2010
+   1         1045     2010     1047
+   1          382     2010     2000
+   1          140     1998     2010
+   1         2000     2010     1998
+   1          542     2306     1416
+   1          192     1412     2306
+   1         1416     2306     1412
+   1          188     2280     1311
+   1          542     1319     2280
+   1         1311     2280     1319
+   1          542     2280     2306
+   1          188     2276     2280
+   1         2306     2280     2276
+   2          340     1970      975
+   2          132      973     1970
+   2          975     1970      973
+   2          130     1959      956
+   2          340      959     1959
+   2          956     1959      959
+   2          340     1959     1970
+   2          130     1956     1959
+   2         1970     1959     1956
+   2          398     2016     1056
+   2          141     1054     2016
+   2         1056     2016     1054
+   2          142     2022     1061
+   2          398     1063     2022
+   2         1061     2022     1063
+   2          398     2022     2016
+   2          142     2014     2022
+   2         2016     2022     2014
+   2          514     2167     1291
+   2          170     1286     2167
+   2         1291     2167     1286
+   2          167     2148     1252
+   2          514     1257     2148
+   2         1252     2148     1257
+   2          514     2148     2167
+   2          167     2144     2148
+   2         2167     2148     2144
+   2          439     2060     1133
+   2          151     1131     2060
+   2         1133     2060     1131
+   2          150     2057     1125
+   2          439     1127     2057
+   2         1125     2057     1127
+   2          439     2057     2060
+   2          150     2055     2057
+   2         2060     2057     2055
+   2          403     2023     1064
+   2          142     1061     2023
+   2         1064     2023     1061
+   2          143     2027     1071
+   2          403     1073     2027
+   2         1071     2027     1073
+   2          403     2027     2023
+   2          143     2019     2027
+   2         2023     2027     2019
+   2          599     2540     1642
+   2          226     1638     2540
+   2         1642     2540     1638
+   2          224     2530     1481
+   2          599     1488     2530
+   2         1481     2530     1488
+   2          599     2530     2540
+   2          224     2526     2530
+   2         2540     2530     2526
+   3          495     2122     1237
+   3          163     1234     2122
+   3         1237     2122     1234
+   3          160     2115     1213
+   3          495     1217     2115
+   3         1213     2115     1217
+   3          495     2115     2122
+   3          160     2111     2115
+   3         2122     2115     2111
+   3          472     2091     1180
+   3          156     1176     2091
+   3         1180     2091     1176
+   3          158     2098     1193
+   3          472     1196     2098
+   3         1193     2098     1196
+   3          472     2098     2091
+   3          158     2088     2098
+   3         2091     2098     2088
+   3          725     3030     1906
+   3          292     1898     3030
+   3         1906     3030     1898
+   3          290     3021     1869
+   3          725     1877     3021
+   3         1869     3021     1877
+   3          725     3021     3030
+   3          290     3017     3021
+   3         3030     3021     3017
+   3          443     2064     1141
+   3          152     1138     2064
+   3         1141     2064     1138
+   3          151     2062     1131
+   3          443     1134     2062
+   3         1131     2062     1134
+   3          443     2062     2064
+   3          151     2059     2062
+   3         2064     2062     2059
+   3          494     2114     1216
+   3          160     1213     2114
+   3         1216     2114     1213
+   3          162     2120     1228
+   3          494     1231     2120
+   3         1228     2120     1231
+   3          494     2120     2114
+   3          162     2110     2120
+   3         2114     2120     2110
+   3          721     2913     1866
+   3          275     1858     2913
+   3         1866     2913     1858
+   3          274     2909     1848
+   3          721     1856     2909
+   3         1848     2909     1856
+   3          721     2909     2913
+   3          274     2905     2909
+   3         2913     2909     2905
+   4          476     2099     1197
+   4          158     1193     2099
+   4         1197     2099     1193
+   4          157     2096     1184
+   4          476     1188     2096
+   4         1184     2096     1188
+   4          476     2096     2099
+   4          157     2092     2096
+   4         2099     2096     2092
+   4          500     2118     1225
+   4          161     1222     2118
+   4         1225     2118     1222
+   4          163     2123     1234
+   4          500     1238     2123
+   4         1234     2123     1238
+   4          500     2123     2118
+   4          163     2116     2123
+   4         2118     2123     2116
+   4          727     3094     1926
+   4          301     1918     3094
+   4         1926     3094     1918
+   4          300     3090     1908
+   4          727     1916     3090
+   4         1908     3090     1916
+   4          727     3090     3094
+   4          300     3086     3090
+   4         3094     3090     3086
+   4          467     2095     1187
+   4          157     1184     2095
+   4         1187     2095     1184
+   4          155     2087     1167
+   4          467     1171     2087
+   4         1167     2087     1171
+   4          467     2087     2095
+   4          155     2083     2087
+   4         2095     2087     2083
+   4          429     2047     1107
+   4          147     1104     2047
+   4         1107     2047     1104
+   4          148     2051     1110
+   4          429     1113     2051
+   4         1110     2051     1113
+   4          429     2051     2047
+   4          148     2045     2051
+   4         2047     2051     2045
+   4          719     2871     1846
+   4          268     1838     2871
+   4         1846     2871     1838
+   4          267     2867     1819
+   4          719     1827     2867
+   4         1819     2867     1827
+   4          719     2867     2871
+   4          267     2863     2867
+   4         2871     2867     2863
+   5          486     2119     1230
+   5          162     1228     2119
+   5         1230     2119     1228
+   5          159     2106     1201
+   5          486     1205     2106
+   5         1201     2106     1205
+   5          486     2106     2119
+   5          159     2102     2106
+   5         2119     2106     2102
+   5          440     2058     1128
+   5          150     1125     2058
+   5         1128     2058     1125
+   5          152     2063     1138
+   5          440     1140     2063
+   5         1138     2063     1140
+   5          440     2063     2058
+   5          152     2056     2063
+   5         2058     2063     2056
+   5          661     2767     1798
+   5          252     1794     2767
+   5         1798     2767     1794
+   5          246     2723     1629
+   5          661     1637     2723
+   5         1629     2723     1637
+   5          661     2723     2767
+   5          246     2719     2723
+   5         2767     2723     2719
+   5          424     2053     1121
+   5          149     1119     2053
+   5         1121     2053     1119
+   5          146     2043     1095
+   5          424     1099     2043
+   5         1095     2043     1099
+   5          424     2043     2053
+   5          146     2040     2043
+   5         2053     2043     2040
+   5          485     2105     1204
+   5          159     1201     2105
+   5         1204     2105     1201
+   5          161     2117     1222
+   5          485     1224     2117
+   5         1222     2117     1224
+   5          485     2117     2105
+   5          161     2101     2117
+   5         2105     2117     2101
+   5          635     2515     1623
+   5          221     1618     2515
+   5         1623     2515     1618
+   5          217     2489     1570
+   5          635     1576     2489
+   5         1570     2489     1576
+   5          635     2489     2515
+   5          217     2485     2489
+   5         2515     2489     2485
+   6          385     2008     1041
+   6          139     1039     2008
+   6         1041     2008     1039
+   6          138     2005     1030
+   6          385     1033     2005
+   6         1030     2005     1033
+   6          385     2005     2008
+   6          138     2001     2005
+   6         2008     2005     2001
+   6          422     2041     1097
+   6          146     1095     2041
+   6         1097     2041     1095
+   6          147     2046     1104
+   6          422     1106     2046
+   6         1104     2046     1106
+   6          422     2046     2041
+   6          147     2038     2046
+   6         2041     2046     2038
+   6          580     2369     1461
+   6          201     1456     2369
+   6         1461     2369     1456
+   6          199     2356     1432
+   6          580     1437     2356
+   6         1432     2356     1437
+   6          580     2356     2369
+   6          199     2352     2356
+   6         2369     2356     2352
+   6          381     2003     1032
+   6          138     1030     2003
+   6         1032     2003     1030
+   6          137     1999     1024
+   6          381     1026     1999
+   6         1024     1999     1026
+   6          381     1999     2003
+   6          137     1997     1999
+   6         2003     1999     1997
+   6          339     1958      958
+   6          130      956     1958
+   6          958     1958      956
+   6          131     1963      964
+   6          339      966     1963
+   6          964     1963      966
+   6          339     1963     1958
+   6          131     1955     1963
+   6         1958     1963     1955
+   6          511     2200     1324
+   6          176     1320     2200
+   6         1324     2200     1320
+   6          174     2190     1243
+   6          511     1250     2190
+   6         1243     2190     1250
+   6          511     2190     2200
+   6          174     2186     2190
+   6         2200     2190     2186
+   1          334     2227     1342
+   1          181     1340     2227
+   1         1342     2227     1340
+   1          178     2211      941
+   1          334      946     2211
+   1          941     2211      946
+   1          334     2211     2227
+   1          178     2209     2211
+   1         2227     2211     2209
+   1          338     2255      955
+   1          185      948     2255
+   1          955     2255      948
+   1          189     2283     1341
+   1          338     1343     2283
+   1         1341     2283     1343
+   1          338     2283     2255
+   1          189     2252     2283
+   1         2255     2283     2252
+   1          338     3265     1343
+   1          334     1342     3265
+   1         1343     3265     1342
+   1          331     3254      951
+   1          338      955     3254
+   1          951     3254      955
+   1          338     3254     3265
+   1          331     3252     3254
+   1         3265     3254     3252
+   1          337     2277     1313
+   1          188     1311     2277
+   1         1313     2277     1311
+   1          185     2254      948
+   1          337      954     2254
+   1          948     2254      954
+   1          337     2254     2277
+   1          185     2251     2254
+   1         2277     2254     2251
+   1          330     2180      939
+   1          172      935     2180
+   1          939     2180      935
+   1          175     2194     1310
+   1          330     1312     2194
+   1         1310     2194     1312
+   1          330     2194     2180
+   1          175     2178     2194
+   1         2180     2194     2178
+   1          330     3249     1312
+   1          337     1313     3249
+   1         1312     3249     1313
+   1          328     3242      937
+   1          330      939     3242
+   1          937     3242      939
+   1          330     3242     3249
+   1          328     3244     3242
+   1         3249     3242     3244
+   2          326     2146     1254
+   2          167     1252     2146
+   2         1254     2146     1252
+   2          164     2128      927
+   2          326      932     2128
+   2          927     2128      932
+   2          326     2128     2146
+   2          164     2125     2128
+   2         2146     2128     2125
+   2          332     2210      944
+   2          178      941     2210
+   2          944     2210      941
+   2          180     2221     1253
+   2          332     1255     2221
+   2         1253     2221     1255
+   2          332     2221     2210
+   2          180     2208     2221
+   2         2210     2221     2208
+   2          332     3233     1255
+   2          326     1254     3233
+   2         1255     3233     1254
+   2          323     3219      942
+   2          332      944     3219
+   2          942     3219      944
+   2          332     3219     3233
+   2          323     3216     3219
+   2         3233     3219     3216
+   2          365     2527     1483
+   2          224     1481     2527
+   2         1483     2527     1481
+   2          222     2519      993
+   2          365      996     2519
+   2          993     2519      996
+   2          365     2519     2527
+   2          222     2517     2519
+   2         2527     2519     2517
+   2          355     2383      980
+   2          203      974     2383
+   2          980     2383      974
+   2          207     2409     1480
+   2          355     1482     2409
+   2         1480     2409     1482
+   2          355     2409     2383
+   2          207     2379     2409
+   2         2383     2409     2379
+   2          355     3367     1482
+   2          365     1483     3367
+   2         1482     3367     1483
+   2          351     3344      976
+   2          355      980     3344
+   2          976     3344      980
+   2          355     3344     3367
+   2          351     3346     3344
+   2         3367     3344     3346
+   3          421     3018     1871
+   3          290     1869     3018
+   3         1871     3018     1869
+   3          284     2972     1087
+   3          421     1094     2972
+   3         1087     2972     1094
+   3          421     2972     3018
+   3          284     2969     2972
+   3         3018     2972     2969
+   3          417     2919     1085
+   3          276     1079     2919
+   3         1085     2919     1079
+   3          282     2958     1868
+   3          417     1870     2958
+   3         1868     2958     1870
+   3          417     2958     2919
+   3          282     2916     2958
+   3         2919     2958     2916
+   3          417     3646     1870
+   3          421     1871     3646
+   3         1870     3646     1871
+   3          414     3636     1082
+   3          417     1085     3636
+   3         1082     3636     1085
+   3          417     3636     3646
+   3          414     3638     3636
+   3         3646     3636     3638
+   3          413     2906     1850
+   3          274     1848     2906
+   3         1850     2906     1848
+   3          269     2875     1072
+   3          413     1077     2875
+   3         1072     2875     1077
+   3          413     2875     2906
+   3          269     2873     2875
+   3         2906     2875     2873
+   3          420     2971     1093
+   3          284     1087     2971
+   3         1093     2971     1087
+   3          289     3013     1849
+   3          420     1851     3013
+   3         1849     3013     1851
+   3          420     3013     2971
+   3          289     2968     3013
+   3         2971     3013     2968
+   3          420     3632     1851
+   3          413     1850     3632
+   3         1851     3632     1850
+   3          410     3621     1089
+   3          420     1093     3621
+   3         1089     3621     1093
+   3          420     3621     3632
+   3          410     3619     3621
+   3         3632     3621     3619
+   4          436     3087     1910
+   4          300     1908     3087
+   4         1910     3087     1908
+   4          293     3036     1111
+   4          436     1118     3036
+   4         1111     3036     1118
+   4          436     3036     3087
+   4          293     3033     3036
+   4         3087     3036     3033
+   4          438     3098     1124
+   4          302     1120     3098
+   4         1124     3098     1120
+   4          306     3117     1909
+   4          438     1911     3117
+   4         1909     3117     1911
+   4          438     3117     3098
+   4          306     3096     3117
+   4         3098     3117     3096
+   4          438     3726     1911
+   4          436     1910     3726
+   4         1911     3726     1910
+   4          432     3712     1122
+   4          438     1124     3712
+   4         1122     3712     1124
+   4          438     3712     3726
+   4          432     3710     3712
+   4         3726     3712     3710
+   4          397     2864     1821
+   4          267     1819     2864
+   4         1821     2864     1819
+   4          260     2813     1046
+   4          397     1053     2813
+   4         1046     2813     1053
+   4          397     2813     2864
+   4          260     2810     2813
+   4         2864     2813     2810
+   4          393     2780     1044
+   4          254     1040     2780
+   4         1044     2780     1040
+   4          258     2799     1818
+   4          393     1820     2799
+   4         1818     2799     1820
+   4          393     2799     2780
+   4          258     2778     2799
+   4         2780     2799     2778
+   4          393     3541     1820
+   4          397     1821     3541
+   4         1820     3541     1821
+   4          391     3534     1042
+   4          393     1044     3534
+   4         1042     3534     1044
+   4          393     3534     3541
+   4          391     3536     3534
+   4         3541     3534     3536
+   5          379     2720     1631
+   5          246     1629     2720
+   5         1631     2720     1629
+   5          242     2686     1013
+   5          379     1022     2686
+   5         1013     2686     1022
+   5          379     2686     2720
+   5          242     2682     2686
+   5         2720     2686     2682
+   5          366     2520      997
+   5          222      993     2520
+   5          997     2520      993
+   5          225     2534     1628
+   5          366     1630     2534
+   5         1628     2534     1630
+   5          366     2534     2520
+   5          225     2518     2534
+   5         2520     2534     2518
+   5          366     3420     1630
+   5          379     1631     3420
+   5         1630     3420     1631
+   5          364     3413      995
+   5          366      997     3413
+   5          995     3413      997
+   5          366     3413     3420
+   5          364     3415     3413
+   5         3420     3413     3415
+   5          363     2486     1572
+   5          217     1570     2486
+   5         1572     2486     1570
+   5          213     2458      984
+   5          363      991     2458
+   5          984     2458      991
+   5          363     2458     2486
+   5          213     2455     2458
+   5         2486     2458     2455
+   5          378     2685     1021
+   5          242     1013     2685
+   5         1021     2685     1013
+   5          245     2714     1571
+   5          378     1573     2714
+   5         1571     2714     1573
+   5          378     2714     2685
+   5          245     2681     2714
+   5         2685     2714     2681
+   5          378     3410     1573
+   5          363     1572     3410
+   5         1573     3410     1572
+   5          359     3392     1015
+   5          378     1021     3392
+   5         1015     3392     1021
+   5          378     3392     3410
+   5          359     3389     3392
+   5         3410     3392     3389
+   6          349     2354     1434
+   6          199     1432     2354
+   6         1434     2354     1432
+   6          194     2318      965
+   6          349      971     2318
+   6          965     2318      971
+   6          349     2318     2354
+   6          194     2315     2318
+   6         2354     2318     2315
+   6          360     2456      988
+   6          213      984     2456
+   6          988     2456      984
+   6          215     2470     1433
+   6          360     1435     2470
+   6         1433     2470     1435
+   6          360     2470     2456
+   6          215     2453     2470
+   6         2456     2470     2453
+   6          360     3335     1435
+   6          349     1434     3335
+   6         1435     3335     1434
+   6          345     3316      985
+   6          360      988     3316
+   6          985     3316      988
+   6          360     3316     3335
+   6          345     3313     3316
+   6         3335     3316     3313
+   6          329     2187     1245
+   6          174     1243     2187
+   6         1245     2187     1243
+   6          172     2179      935
+   6          329      938     2179
+   6          935     2179      938
+   6          329     2179     2187
+   6          172     2177     2179
+   6         2187     2179     2177
+   6          325     2127      931
+   6          164      927     2127
+   6          931     2127      927
+   6          166     2138     1242
+   6          325     1244     2138
+   6         1242     2138     1244
+   6          325     2138     2127
+   6          166     2124     2138
+   6         2127     2138     2124
+   6          325     3229     1244
+   6          329     1245     3229
+   6         1244     3229     1245
+   6          322     3211      928
+   6          325      931     3211
+   6          928     3211      931
+   6          325     3211     3229
+   6          322     3213     3211
+   6         3229     3211     3213
+   1          415     2929     1377
+   1          278     1375     2929
+   1         1377     2929     1375
+   1          276     2917     1079
+   1          415     1083     2917
+   1         1079     2917     1083
+   1          415     2917     2929
+   1          276     2914     2917
+   1         2929     2917     2914
+   1          401     2216     1059
+   1          179     1055     2216
+   1         1059     2216     1055
+   1          184     2246     1374
+   1          401     1376     2246
+   1         1374     2246     1376
+   1          401     2246     2216
+   1          184     2214     2246
+   1         2216     2246     2214
+   1          401     3573     1376
+   1          415     1377     3573
+   1         1376     3573     1377
+   1          399     3562     1057
+   1          401     1059     3562
+   1         1057     3562     1059
+   1          401     3562     3573
+   1          399     3565     3562
+   1         3573     3562     3565
+   1          454     2310     1424
+   1          193     1422     2310
+   1         1424     2310     1422
+   1          186     2262     1145
+   1          454     1151     2262
+   1         1145     2262     1151
+   1          454     2262     2310
+   1          186     2259     2262
+   1         2310     2262     2259
+   1          473     2923     1181
+   1          277     1177     2923
+   1         1181     2923     1177
+   1          279     2934     1423
+   1          473     1426     2934
+   1         1423     2934     1426
+   1          473     2934     2923
+   1          279     2920     2934
+   1         2923     2934     2920
+   1          473     3801     1426
+   1          454     1424     3801
+   1         1426     3801     1424
+   1          451     3787     1178
+   1          473     1181     3787
+   1         1178     3787     1181
+   1          473     3787     3801
+   1          451     3784     3787
+   1         3801     3787     3784
+   1          563     2936     1429
+   1          279     1423     2936
+   1         1429     2936     1423
+   1          278     2930     1375
+   1          563     1381     2930
+   1         1375     2930     1381
+   1          563     2930     2936
+   1          278     2926     2930
+   1         2936     2930     2926
+   1          552     2286     1349
+   1          189     1341     2286
+   1         1349     2286     1341
+   1          193     2312     1422
+   1          552     1427     2312
+   1         1422     2312     1427
+   1          552     2312     2286
+   1          193     2282     2312
+   1         2286     2312     2282
+   1          552     4235     1427
+   1          563     1429     4235
+   1         1427     4235     1429
+   1          550     4226     1347
+   1          552     1349     4226
+   1         1347     4226     1349
+   1          552     4226     4235
+   1          550     4229     4226
+   1         4235     4226     4229
+   1          468     2831     1415
+   1          263     1413     2831
+   1         1415     2831     1413
+   1          261     2818     1168
+   1          468     1172     2818
+   1         1168     2818     1172
+   1          468     2818     2831
+   1          261     2815     2818
+   1         2831     2818     2815
+   1          453     2261     1150
+   1          186     1145     2261
+   1         1150     2261     1145
+   1          192     2305     1412
+   1          453     1414     2305
+   1         1412     2305     1414
+   1          453     2305     2261
+   1          192     2258     2305
+   1         2261     2305     2258
+   1          453     3797     1414
+   1          468     1415     3797
+   1         1414     3797     1415
+   1          450     3779     1147
+   1          453     1150     3779
+   1         1147     3779     1150
+   1          453     3779     3797
+   1          450     3782     3779
+   1         3797     3779     3782
+   1          384     2204     1332
+   1          177     1330     2204
+   1         1332     2204     1330
+   1          173     2184     1025
+   1          384     1029     2184
+   1         1025     2184     1029
+   1          384     2184     2204
+   1          173     2182     2184
+   1         2204     2184     2182
+   1          394     2811     1050
+   1          260     1046     2811
+   1         1050     2811     1046
+   1          262     2824     1331
+   1          394     1334     2824
+   1         1331     2824     1334
+   1          394     2824     2811
+   1          262     2808     2824
+   1         2811     2824     2808
+   1          394     3500     1334
+   1          384     1332     3500
+   1         1334     3500     1332
+   1          382     3494     1047
+   1          394     1050     3494
+   1         1047     3494     1050
+   1          394     3494     3500
+   1          382     3491     3494
+   1         3500     3494     3491
+   1          547     2826     1338
+   1          262     1331     2826
+   1         1338     2826     1331
+   1          263     2832     1413
+   1          547     1417     2832
+   1         1413     2832     1417
+   1          547     2832     2826
+   1          263     2822     2832
+   1         2826     2832     2822
+   1          540     2197     1317
+   1          175     1310     2197
+   1         1317     2197     1310
+   1          177     2206     1330
+   1          540     1335     2206
+   1         1330     2206     1335
+   1          540     2206     2197
+   1          177     2193     2206
+   1         2197     2206     2193
+   1          540     4192     1335
+   1          547     1338     4192
+   1         1335     4192     1338
+   1          542     4189     1319
+   1          540     1317     4189
+   1         1319     4189     1317
+   1          540     4189     4192
+   1          542     4198     4189
+   1         4192     4189     4198
+   2          354     2396     1289
+   2          205     1287     2396
+   2         1289     2396     1287
+   2          203     2382      974
+   2          354      979     2382
+   2          974     2382      979
+   2          354     2382     2396
+   2          203     2378     2382
+   2         2396     2382     2378
+   2          343     2134      962
+   2          165      957     2134
+   2          962     2134      957
+   2          170     2165     1286
+   2          343     1288     2165
+   2         1286     2165     1288
+   2          343     2165     2134
+   2          170     2131     2165
+   2         2134     2165     2131
+   2          343     3304     1288
+   2          354     1289     3304
+   2         1288     3304     1289
+   2          340     3288      959
+   2          343      962     3288
+   2          959     3288      962
+   2          343     3288     3304
+   2          340     3290     3288
+   2         3304     3288     3290
+   2          400     2233     1352
+   2          182     1350     2233
+   2         1352     2233     1350
+   2          179     2215     1055
+   2          400     1058     2215
+   2         1055     2215     1058
+   2          400     2215     2233
+   2          179     2213     2215
+   2         2233     2215     2213
+   2          406     2390     1067
+   2          204     1062     2390
+   2         1067     2390     1062
+   2          206     2403     1351
+   2          406     1353     2403
+   2         1351     2403     1353
+   2          406     2403     2390
+   2          206     2386     2403
+   2         2390     2403     2386
+   2          406     3569     1353
+   2          400     1352     3569
+   2         1353     3569     1352
+   2          398     3560     1063
+   2          406     1067     3560
+   2         1063     3560     1067
+   2          406     3560     3569
+   2          398     3557     3560
+   2         3569     3560     3557
+   2          531     2404     1355
+   2          206     1351     2404
+   2         1355     2404     1351
+   2          205     2398     1287
+   2          531     1293     2398
+   2         1287     2398     1293
+   2          531     2398     2404
+   2          205     2394     2398
+   2         2404     2398     2394
+   2          517     2223     1260
+   2          180     1253     2223
+   2         1260     2223     1253
+   2          182     2234     1350
+   2          517     1354     2234
+   2         1350     2234     1354
+   2          517     2234     2223
+   2          182     2219     2234
+   2         2223     2234     2219
+   2          517     4095     1354
+   2          531     1355     4095
+   2         1354     4095     1355
+   2          514     4079     1257
+   2          517     1260     4079
+   2         1257     4079     1260
+   2          517     4079     4095
+   2          514     4082     4079
+   2         4095     4079     4082
+   2          444     2891     1641
+   2          272     1639     2891
+   2         1641     2891     1639
+   2          270     2879     1132
+   2          444     1135     2879
+   2         1132     2879     1135
+   2          444     2879     2891
+   2          270     2877     2879
+   2         2891     2879     2877
+   2          441     2523     1129
+   2          223     1126     2523
+   2         1129     2523     1126
+   2          226     2539     1638
+   2          441     1640     2539
+   2         1638     2539     1640
+   2          441     2539     2523
+   2          226     2521     2539
+   2         2523     2539     2521
+   2          441     3743     1640
+   2          444     1641     3743
+   2         1640     3743     1641
+   2          439     3733     1127
+   2          441     1129     3733
+   2         1127     3733     1129
+   2          441     3733     3743
+   2          439     3736     3733
+   2         3743     3733     3736
+   2          407     2433     1520
+   2          210     1518     2433
+   2         1520     2433     1518
+   2          204     2391     1062
+   2          407     1068     2391
+   2         1062     2391     1068
+   2          407     2391     2433
+   2          204     2387     2391
+   2         2433     2391     2387
+   2          411     2874     1075
+   2          269     1072     2874
+   2         1075     2874     1072
+   2          271     2885     1519
+   2          411     1521     2885
+   2         1519     2885     1521
+   2          411     2885     2874
+   2          271     2872     2885
+   2         2874     2885     2872
+   2          411     3605     1521
+   2          407     1520     3605
+   2         1521     3605     1520
+   2          403     3588     1073
+   2          411     1075     3588
+   2         1073     3588     1075
+   2          411     3588     3605
+   2          403     3585     3588
+   2         3605     3588     3585
+   2          615     2886     1525
+   2          271     1519     2886
+   2         1525     2886     1519
+   2          272     2892     1639
+   2          615     1643     2892
+   2         1639     2892     1643
+   2          615     2892     2886
+   2          272     2882     2892
+   2         2886     2892     2882
+   2          597     2412     1486
+   2          207     1480     2412
+   2         1486     2412     1480
+   2          210     2434     1518
+   2          597     1522     2434
+   2         1518     2434     1522
+   2          597     2434     2412
+   2          210     2408     2434
+   2         2412     2434     2408
+   2          597     4411     1522
+   2          615     1525     4411
+   2         1522     4411     1525
+   2          599     4408     1488
+   2          597     1486     4408
+   2         1488     4408     1486
+   2          597     4408     4411
+   2          599     4419     4408
+   2         4411     4408     4419
+   3          506     3196     1901
+   3          319     1899     3196
+   3         1901     3196     1899
+   3          315     3167     1235
+   3          506     1240     3167
+   3         1235     3167     1240
+   3          506     3167     3196
+   3          315     3164     3167
+   3         3196     3167     3164
+   3          499     2979     1221
+   3          285     1214     2979
+   3         1221     2979     1214
+   3          292     3027     1898
+   3          499     1900     3027
+   3         1898     3027     1900
+   3          499     3027     2979
+   3          292     2976     3027
+   3         2979     3027     2976
+   3          499     4026     1900
+   3          506     1901     4026
+   3         1900     4026     1901
+   3          495     4009     1217
+   3          499     1221     4009
+   3         1217     4009     1221
+   3          499     4009     4026
+   3          495     4011     4009
+   3         4026     4009     4011
+   3          475     2963     1881
+   3          283     1878     2963
+   3         1881     2963     1878
+   3          277     2925     1177
+   3          475     1183     2925
+   3         1177     2925     1183
+   3          475     2925     2963
+   3          277     2922     2925
+   3         2963     2925     2922
+   3          482     3161     1199
+   3          314     1194     3161
+   3         1199     3161     1194
+   3          318     3192     1879
+   3          482     1882     3192
+   3         1879     3192     1882
+   3          482     3192     3161
+   3          318     3158     3192
+   3         3161     3192     3158
+   3          482     3911     1882
+   3          475     1881     3911
+   3         1882     3911     1881
+   3          472     3905     1196
+   3          482     1199     3905
+   3         1196     3905     1199
+   3          482     3905     3911
+   3          472     3904     3905
+   3         3911     3905     3904
+   3          726     3195     1887
+   3          318     1879     3195
+   3         1887     3195     1879
+   3          319     3199     1899
+   3          726     1907     3199
+   3         1899     3199     1907
+   3          726     3199     3195
+   3          319     3190     3199
+   3         3195     3199     3190
+   3          724     2961     1876
+   3          282     1868     2961
+   3         1876     2961     1868
+   3          283     2966     1878
+   3          724     1886     2966
+   3         1878     2966     1886
+   3          724     2966     2961
+   3          283     2957     2966
+   3         2961     2966     2957
+   3          724     4909     1886
+   3          726     1887     4909
+   3         1886     4909     1887
+   3          725     4908     1877
+   3          724     1876     4908
+   3         1877     4908     1876
+   3          724     4908     4909
+   3          725     4910     4908
+   3         4909     4908     4910
+   3          448     3148     1861
+   3          312     1859     3148
+   3         1861     3148     1859
+   3          308     3129     1139
+   3          448     1143     3129
+   3         1139     3129     1143
+   3          448     3129     3148
+   3          308     3127     3129
+   3         3148     3129     3127
+   3          446     2880     1137
+   3          270     1132     2880
+   3         1137     2880     1132
+   3          275     2910     1858
+   3          446     1860     2910
+   3         1858     2910     1860
+   3          446     2910     2880
+   3          275     2878     2910
+   3         2880     2910     2878
+   3          446     3763     1860
+   3          448     1861     3763
+   3         1860     3763     1861
+   3          443     3750     1134
+   3          446     1137     3750
+   3         1134     3750     1137
+   3          446     3750     3763
+   3          443     3752     3750
+   3         3763     3750     3752
+   3          498     3023     1891
+   3          291     1888     3023
+   3         1891     3023     1888
+   3          285     2978     1214
+   3          498     1220     2978
+   3         1214     2978     1220
+   3          498     2978     3023
+   3          285     2975     2978
+   3         3023     2978     2975
+   3          504     3133     1233
+   3          309     1229     3133
+   3         1233     3133     1229
+   3          313     3153     1889
+   3          504     1892     3153
+   3         1889     3153     1892
+   3          504     3153     3133
+   3          313     3131     3153
+   3         3133     3153     3131
+   3          504     4024     1892
+   3          498     1891     4024
+   3         1892     4024     1891
+   3          494     4007     1231
+   3          504     1233     4007
+   3         1231     4007     1233
+   3          504     4007     4024
+   3          494     4006     4007
+   3         4024     4007     4006
+   3          723     3156     1897
+   3          313     1889     3156
+   3         1897     3156     1889
+   3          312     3151     1859
+   3          723     1867     3151
+   3         1859     3151     1867
+   3          723     3151     3156
+   3          312     3147     3151
+   3         3156     3151     3147
+   3          722     3016     1857
+   3          289     1849     3016
+   3         1857     3016     1849
+   3          291     3026     1888
+   3          722     1896     3026
+   3         1888     3026     1896
+   3          722     3026     3016
+   3          291     3012     3026
+   3         3016     3026     3012
+   3          722     4907     1896
+   3          723     1897     4907
+   3         1896     4907     1897
+   3          721     4905     1856
+   3          722     1857     4905
+   3         1856     4905     1857
+   3          722     4905     4907
+   3          721     4906     4905
+   3         4907     4905     4906
+   4          483     3201     1921
+   4          320     1919     3201
+   4         1921     3201     1919
+   4          314     3162     1194
+   4          483     1200     3162
+   4         1194     3162     1200
+   4          483     3162     3201
+   4          314     3159     3162
+   4         3201     3162     3159
+   4          480     3043     1192
+   4          294     1185     3043
+   4         1192     3043     1185
+   4          301     3091     1918
+   4          480     1920     3091
+   4         1918     3091     1920
+   4          480     3091     3043
+   4          301     3040     3091
+   4         3043     3091     3040
+   4          480     3930     1920
+   4          483     1921     3930
+   4         1920     3930     1921
+   4          476     3914     1188
+   4          480     1192     3914
+   4         1188     3914     1192
+   4          480     3914     3930
+   4          476     3916     3914
+   4         3930     3914     3916
+   4          502     3122     1931
+   4          307     1928     3122
+   4         1931     3122     1928
+   4          303     3102     1223
+   4          502     1227     3102
+   4         1223     3102     1227
+   4          502     3102     3122
+   4          303     3100     3102
+   4         3122     3102     3100
+   4          507     3168     1241
+   4          315     1235     3168
+   4         1241     3168     1235
+   4          321     3206     1929
+   4          507     1932     3206
+   4         1929     3206     1932
+   4          507     3206     3168
+   4          321     3165     3206
+   4         3168     3206     3165
+   4          507     4033     1932
+   4          502     1931     4033
+   4         1932     4033     1931
+   4          500     4030     1238
+   4          507     1241     4030
+   4         1238     4030     1241
+   4          507     4030     4033
+   4          500     4029     4030
+   4         4033     4030     4029
+   4          729     3209     1937
+   4          321     1929     3209
+   4         1937     3209     1929
+   4          320     3204     1919
+   4          729     1927     3204
+   4         1919     3204     1927
+   4          729     3204     3209
+   4          320     3200     3204
+   4         3209     3204     3200
+   4          728     3120     1917
+   4          306     1909     3120
+   4         1917     3120     1909
+   4          307     3125     1928
+   4          728     1936     3125
+   4         1928     3125     1936
+   4          728     3125     3120
+   4          307     3116     3125
+   4         3120     3125     3116
+   4          728     4913     1936
+   4          729     1937     4913
+   4         1936     4913     1937
+   4          727     4911     1916
+   4          728     1917     4911
+   4         1916     4911     1917
+   4          728     4911     4913
+   4          727     4912     4911
+   4         4913     4911     4912
+   4          479     3082     1841
+   4          299     1839     3082
+   4         1841     3082     1839
+   4          294     3042     1185
+   4          479     1191     3042
+   4         1185     3042     1191
+   4          479     3042     3082
+   4          294     3039     3042
+   4         3082     3042     3039
+   4          471     2820     1175
+   4          261     1168     2820
+   4         1175     2820     1168
+   4          268     2868     1838
+   4          471     1840     2868
+   4         1838     2868     1840
+   4          471     2868     2820
+   4          268     2817     2868
+   4         2820     2868     2817
+   4          471     3901     1840
+   4          479     1841     3901
+   4         1840     3901     1841
+   4          467     3885     1171
+   4          471     1175     3885
+   4         1171     3885     1175
+   4          471     3885     3901
+   4          467     3887     3885
+   4         3901     3885     3887
+   4          431     2804     1831
+   4          259     1828     2804
+   4         1831     2804     1828
+   4          255     2784     1105
+   4          431     1109     2784
+   4         1105     2784     1109
+   4          431     2784     2804
+   4          255     2782     2784
+   4         2804     2784     2782
+   4          435     3035     1117
+   4          293     1111     3035
+   4         1117     3035     1111
+   4          298     3078     1829
+   4          435     1832     3078
+   4         1829     3078     1832
+   4          435     3078     3035
+   4          298     3032     3078
+   4         3035     3078     3032
+   4          435     3707     1832
+   4          431     1831     3707
+   4         1832     3707     1831
+   4          429     3704     1113
+   4          435     1117     3704
+   4         1113     3704     1117
+   4          435     3704     3707
+   4          429     3703     3704
+   4         3707     3704     3703
+   4          720     3081     1837
+   4          298     1829     3081
+   4         1837     3081     1829
+   4          299     3085     1839
+   4          720     1847     3085
+   4         1839     3085     1847
+   4          720     3085     3081
+   4          299     3076     3085
+   4         3081     3085     3076
+   4          718     2802     1826
+   4          258     1818     2802
+   4         1826     2802     1818
+   4          259     2807     1828
+   4          718     1836     2807
+   4         1828     2807     1836
+   4          718     2807     2802
+   4          259     2798     2807
+   4         2802     2807     2798
+   4          718     4903     1836
+   4          720     1837     4903
+   4         1836     4903     1837
+   4          719     4902     1827
+   4          718     1826     4902
+   4         1827     4902     1826
+   4          718     4902     4903
+   4          719     4904     4902
+   4         4903     4902     4904
+   5          503     3143     1797
+   5          311     1795     3143
+   5         1797     3143     1795
+   5          309     3132     1229
+   5          503     1232     3132
+   5         1229     3132     1232
+   5          503     3132     3143
+   5          309     3130     3132
+   5         3143     3132     3130
+   5          490     2696     1209
+   5          243     1202     2696
+   5         1209     2696     1202
+   5          252     2766     1794
+   5          490     1796     2766
+   5         1794     2766     1796
+   5          490     2766     2696
+   5          252     2692     2766
+   5         2696     2766     2692
+   5          490     3981     1796
+   5          503     1797     3981
+   5         1796     3981     1797
+   5          486     3955     1205
+   5          490     1209     3955
+   5         1205     3955     1209
+   5          490     3955     3981
+   5          486     3958     3955
+   5         3981     3955     3958
+   5          442     2544     1650
+   5          227     1648     2544
+   5         1650     2544     1648
+   5          223     2524     1126
+   5          442     1130     2524
+   5         1126     2524     1130
+   5          442     2524     2544
+   5          223     2522     2524
+   5         2544     2524     2522
+   5          447     3128     1142
+   5          308     1139     3128
+   5         1142     3128     1139
+   5          310     3136     1649
+   5          447     1652     3136
+   5         1649     3136     1652
+   5          447     3136     3128
+   5          310     3126     3136
+   5         3128     3136     3126
+   5          447     3747     1652
+   5          442     1650     3747
+   5         1652     3747     1650
+   5          440     3741     1140
+   5          447     1142     3741
+   5         1140     3741     1142
+   5          447     3741     3747
+   5          440     3738     3741
+   5         3747     3741     3738
+   5          666     3138     1656
+   5          310     1649     3138
+   5         1656     3138     1649
+   5          311     3144     1795
+   5          666     1799     3144
+   5         1795     3144     1799
+   5          666     3144     3138
+   5          311     3134     3144
+   5         3138     3144     3134
+   5          659     2537     1635
+   5          225     1628     2537
+   5         1635     2537     1628
+   5          227     2546     1648
+   5          659     1653     2546
+   5         1648     2546     1653
+   5          659     2546     2537
+   5          227     2533     2546
+   5         2537     2546     2533
+   5          659     4689     1653
+   5          666     1656     4689
+   5         1653     4689     1656
+   5          661     4686     1637
+   5          659     1635     4686
+   5         1637     4686     1635
+   5          659     4686     4689
+   5          661     4695     4686
+   5         4689     4686     4695
+   5          437     3105     1622
+   5          304     1619     3105
+   5         1622     3105     1619
+   5          302     3097     1120
+   5          437     1123     3097
+   5         1120     3097     1123
+   5          437     3097     3105
+   5          302     3095     3097
+   5         3105     3097     3095
+   5          427     2465     1102
+   5          214     1096     2465
+   5         1102     2465     1096
+   5          221     2513     1618
+   5          427     1620     2513
+   5         1618     2513     1620
+   5          427     2513     2465
+   5          221     2462     2513
+   5         2465     2513     2462
+   5          427     3693     1620
+   5          437     1622     3693
+   5         1620     3693     1622
+   5          424     3676     1099
+   5          427     1102     3676
+   5         1099     3676     1102
+   5          427     3676     3693
+   5          424     3679     3676
+   5         3693     3676     3679
+   5          489     2762     1786
+   5          251     1784     2762
+   5         1786     2762     1784
+   5          243     2695     1202
+   5          489     1208     2695
+   5         1202     2695     1208
+   5          489     2695     2762
+   5          243     2691     2695
+   5         2762     2695     2691
+   5          501     3101     1226
+   5          303     1223     3101
+   5         1226     3101     1223
+   5          305     3112     1785
+   5          501     1787     3112
+   5         1785     3112     1787
+   5          501     3112     3101
+   5          305     3099     3112
+   5         3101     3112     3099
+   5          501     3977     1787
+   5          489     1786     3977
+   5         1787     3977     1786
+   5          485     3953     1224
+   5          501     1226     3953
+   5         1224     3953     1226
+   5          501     3953     3977
+   5          485     3950     3953
+   5         3977     3953     3950
+   5          656     3113     1789
+   5          305     1785     3113
+   5         1789     3113     1785
+   5          304     3107     1619
+   5          656     1626     3107
+   5         1619     3107     1626
+   5          656     3107     3113
+   5          304     3103     3107
+   5         3113     3107     3103
+   5          638     2717     1579
+   5          245     1571     2717
+   5         1579     2717     1571
+   5          251     2763     1784
+   5          638     1788     2763
+   5         1784     2763     1788
+   5          638     2763     2717
+   5          251     2713     2763
+   5         2717     2763     2713
+   5          638     4601     1788
+   5          656     1789     4601
+   5         1788     4601     1789
+   5          635     4589     1576
+   5          638     1579     4589
+   5         1576     4589     1579
+   5          638     4589     4601
+   5          635     4592     4589
+   5         4601     4589     4592
+   6          392     2787     1459
+   6          256     1457     2787
+   6         1459     2787     1457
+   6          254     2779     1040
+   6          392     1043     2779
+   6         1040     2779     1043
+   6          392     2779     2787
+   6          254     2777     2779
+   6         2787     2779     2777
+   6          389     2325     1037
+   6          195     1031     2325
+   6         1037     2325     1031
+   6          201     2367     1456
+   6          389     1458     2367
+   6         1456     2367     1458
+   6          389     2367     2325
+   6          201     2322     2367
+   6         2325     2367     2322
+   6          389     3525     1458
+   6          392     1459     3525
+   6         1458     3525     1459
+   6          385     3503     1033
+   6          389     1037     3503
+   6         1033     3503     1037
+   6          389     3503     3525
+   6          385     3505     3503
+   6         3525     3503     3505
+   6          425     2492     1582
+   6          218     1580     2492
+   6         1582     2492     1580
+   6          214     2463     1096
+   6          425     1100     2463
+   6         1096     2463     1100
+   6          425     2463     2492
+   6          214     2460     2463
+   6         2492     2463     2460
+   6          430     2783     1108
+   6          255     1105     2783
+   6         1108     2783     1105
+   6          257     2794     1581
+   6          430     1583     2794
+   6         1581     2794     1583
+   6          430     2794     2783
+   6          257     2781     2794
+   6         2783     2794     2781
+   6          430     3682     1583
+   6          425     1582     3682
+   6         1583     3682     1582
+   6          422     3665     1106
+   6          430     1108     3665
+   6         1106     3665     1108
+   6          430     3665     3682
+   6          422     3662     3665
+   6         3682     3665     3662
+   6          590     2795     1585
+   6          257     1581     2795
+   6         1585     2795     1581
+   6          256     2789     1457
+   6          590     1463     2789
+   6         1457     2789     1463
+   6          590     2789     2795
+   6          256     2785     2789
+   6         2795     2789     2785
+   6          583     2472     1440
+   6          215     1433     2472
+   6         1440     2472     1433
+   6          218     2493     1580
+   6          583     1584     2493
+   6         1580     2493     1584
+   6          583     2493     2472
+   6          218     2468     2493
+   6         2472     2493     2468
+   6          583     4354     1584
+   6          590     1585     4354
+   6         1584     4354     1585
+   6          580     4338     1437
+   6          583     1440     4338
+   6         1437     4338     1440
+   6          583     4338     4354
+   6          580     4341     4338
+   6         4354     4338     4341
+   6          387     2337     1323
+   6          197     1321     2337
+   6         1323     2337     1321
+   6          195     2324     1031
+   6          387     1035     2324
+   6         1031     2324     1035
+   6          387     2324     2337
+   6          195     2321     2324
+   6         2337     2324     2321
+   6          383     2183     1028
+   6          173     1025     2183
+   6         1028     2183     1025
+   6          176     2199     1320
+   6          383     1322     2199
+   6         1320     2199     1322
+   6          383     2199     2183
+   6          176     2181     2199
+   6         2183     2199     2181
+   6          383     3496     1322
+   6          387     1323     3496
+   6         1322     3496     1323
+   6          381     3486     1026
+   6          383     1028     3486
+   6         1026     3486     1028
+   6          383     3486     3496
+   6          381     3489     3486
+   6         3496     3486     3489
+   6          342     2160     1278
+   6          169     1276     2160
+   6         1278     2160     1276
+   6          165     2133      957
+   6          342      961     2133
+   6          957     2133      961
+   6          342     2133     2160
+   6          165     2130     2133
+   6         2160     2133     2130
+   6          347     2317      969
+   6          194      965     2317
+   6          969     2317      965
+   6          196     2331     1277
+   6          347     1279     2331
+   6         1277     2331     1279
+   6          347     2331     2317
+   6          196     2314     2331
+   6         2317     2331     2314
+   6          347     3300     1279
+   6          342     1278     3300
+   6         1279     3300     1278
+   6          339     3285      966
+   6          347      969     3285
+   6          966     3285      969
+   6          347     3285     3300
+   6          339     3282     3285
+   6         3300     3285     3282
+   6          527     2332     1283
+   6          196     1277     2332
+   6         1283     2332     1277
+   6          197     2338     1321
+   6          527     1325     2338
+   6         1321     2338     1325
+   6          527     2338     2332
+   6          197     2328     2338
+   6         2332     2338     2328
+   6          509     2141     1248
+   6          166     1242     2141
+   6         1248     2141     1242
+   6          169     2161     1276
+   6          509     1280     2161
+   6         1276     2161     1280
+   6          509     2161     2141
+   6          169     2137     2161
+   6         2141     2161     2137
+   6          509     4053     1280
+   6          527     1283     4053
+   6         1280     4053     1283
+   6          511     4050     1250
+   6          509     1248     4050
+   6         1250     4050     1248
+   6          509     4050     4053
+   6          511     4061     4050
+   6         4053     4050     4061
diff --git a/src/UnitTests/Meshes/data/triangles/mrizka_1.vtk b/src/UnitTests/Meshes/data/triangles/mrizka_1.vtk
new file mode 100644
index 0000000000000000000000000000000000000000..3235be4ddf567bfa05f9c8c2d23fe22b38699023
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles/mrizka_1.vtk
@@ -0,0 +1,723 @@
+# vtk DataFile Version 2.0
+mrizka_1, Created by Gmsh
+ASCII
+DATASET UNSTRUCTURED_GRID
+POINTS 142 double
+0 0 0
+1 0 0
+1 1 0
+0 1 0
+0.09999999999981467 0 0
+0.1999999999995579 0 0
+0.2999999999992664 0 0
+0.3999999999989749 0 0
+0.4999999999986943 0 0
+0.5999999999989468 0 0
+0.69999999999921 0 0
+0.7999999999994734 0 0
+0.8999999999997368 0 0
+1 0.09999999999981467 0
+1 0.1999999999995579 0
+1 0.2999999999992664 0
+1 0.3999999999989749 0
+1 0.4999999999986943 0
+1 0.5999999999989468 0
+1 0.69999999999921 0
+1 0.7999999999994734 0
+1 0.8999999999997368 0
+0.8999999999995836 1 0
+0.7999999999999998 1 0
+0.7000000000006934 1 0
+0.6000000000013869 1 0
+0.5000000000020587 1 0
+0.4000000000016644 1 0
+0.3000000000012483 1 0
+0.2000000000008322 1 0
+0.100000000000416 1 0
+0 0.8999999999995836 0
+0 0.7999999999999998 0
+0 0.7000000000006934 0
+0 0.6000000000013869 0
+0 0.5000000000020587 0
+0 0.4000000000016644 0
+0 0.3000000000012483 0
+0 0.2000000000008322 0
+0 0.100000000000416 0
+0.4500000000018615 0.9133974596216763 0
+0.09236792741084221 0.4605742807383675 0
+0.5499999999988207 0.08660254037843171 0
+0.9152217186777627 0.5468402906274978 0
+0.6500000000008006 0.9133974596219512 0
+0.08885430207206277 0.6509201999024387 0
+0.9133974596218086 0.3499999999991206 0
+0.3475303635242556 0.08190748804974735 0
+0.9103703875043379 0.7586725654707319 0
+0.2508173017623437 0.9138693290131876 0
+0.7459788032314769 0.07959225689678902 0
+0.0866025403788042 0.2500000000010402 0
+0.09056972474440218 0.8408174380940533 0
+0.8495762630717529 0.9153227954948184 0
+0.1504237369277891 0.08467720450543256 0
+0.9170502595852439 0.150593231699023 0
+0.3501362169617226 0.9134761045201862 0
+0.400022702828373 0.8268080267265582 0
+0.5000037838059157 0.8267971038241978 0
+0.4500044144402654 0.7401949275428756 0
+0.550001366375115 0.740193167742059 0
+0.5000009634704055 0.6535903947466404 0
+0.4001556725867777 0.6531143281569608 0
+0.4503430472096985 0.566725153011282 0
+0.5500573351142912 0.5669436999698718 0
+0.5000667303886402 0.4803338005253144 0
+0.6000000000014443 0.4803847577318124 0
+0.4003852374668766 0.4801495879277082 0
+0.450075327977456 0.3937345295185466 0
+0.3510369880177372 0.3942894617931989 0
+0.6500095558532315 0.5669800317532796 0
+0.7044674125168495 0.4836527537169565 0
+0.6507445687539916 0.3943268833512884 0
+0.3000000000028113 0.4803847577315177 0
+0.4001853860009422 0.3072562697428891 0
+0.3000000000029343 0.3071796769753513 0
+0.5000434523310811 0.3071844944642995 0
+0.4500000000024978 0.2205771365973903 0
+0.7516166973808509 0.5701276397389337 0
+0.7002710422061426 0.6541120177001093 0
+0.7535395641764234 0.3987231651695797 0
+0.7000000000012377 0.3071796769756578 0
+0.8000000000003898 0.6535898384882725 0
+0.7471445386066088 0.7386047262821198 0
+0.550000000002142 0.2205771365975501 0
+0.8109814372419677 0.3047533749256941 0
+0.7487737599745192 0.2215627443409141 0
+0.3001627035928666 0.8268888562054006 0
+0.1994089234451489 0.8296981761689504 0
+0.2499158852568564 0.7399423795286558 0
+0.149492396861092 0.743027350173192 0
+0.1967279003056701 0.6521628070748455 0
+0.1475039555908151 0.5594685643720907 0
+0.2461396475420015 0.5647585225767253 0
+0.2007885125292274 0.4737805524310309 0
+0.1629581819751206 0.3803886475368558 0
+0.2991401254814288 0.6526766329656057 0
+0.6000008583640171 0.8267954148199814 0
+0.8994183955992585 0.6528983889292929 0
+0.6499999999991333 0.08660254037864012 0
+0.9157740970141777 0.4494733817703521 0
+0.8167986354126133 0.4899798535417859 0
+0.4498499977837828 0.08393456559302379 0
+0.5500007736960068 0.9133979063146344 0
+0.2471893802660856 0.08407329706072986 0
+0.1856343100129115 0.1794039491425928 0
+0.9132470455755112 0.2508911011037038 0
+0.600056710503325 0.6536686151296461 0
+0.7499293771789076 0.9137183489341745 0
+0.3492099568452324 0.2288273220822138 0
+0.350000000002115 0.7401923788654271 0
+0.5501550132423814 0.393857357094494 0
+0.6495790860092404 0.7400281434863161 0
+0.6994423100265897 0.8265565020648068 0
+0.6001571723887492 0.307283780846802 0
+0.8150411059704117 0.8183022016898427 0
+0.6500000000016622 0.2205771365975224 0
+0.3506052056236115 0.5660996445862312 0
+0.1530678781040006 0.9178724624825141 0
+0.9167537497766272 0.8508718257779521 0
+0.08296629115975823 0.1498875452108687 0
+0.1890575670470589 0.2940842362159237 0
+0.8440933898604552 0.09385434397709339 0
+0.2506402082624816 0.3883512221139797 0
+0.07972803913573585 0.3493512757062999 0
+0.8380531170040469 0.1999999999995609 0
+0.8406936244151951 0.399278548510347 0
+0.2898266778730385 0.1633996013333093 0
+0.0657832847355114 0.7469529976340754 0
+0.6999999999992161 0.1535898384871374 0
+0.5999999999988376 0.1535898384867515 0
+0.4999999999989004 0.1535898384865982 0
+0.3977361660046179 0.1553726586903804 0
+0.8325961894321569 0.730144284150141 0
+0.06525626353148779 0.5500000000017229 0
+0.8366110894141751 0.5826872022651566 0
+0.261388664636693 0.2359882399069594 0
+0.926794919243098 0.9267949192431389 0
+0.07320508075687601 0.9267949192431241 0
+0.9267949192432314 0.07320508075664824 0
+0.07320508075662228 0.07320508075678339 0
+0.7753798140139428 0.149719836740299 0
+
+CELLS 286 1096
+1 0
+1 1
+1 2
+1 3
+2 0 4
+2 4 5
+2 5 6
+2 6 7
+2 7 8
+2 8 9
+2 9 10
+2 10 11
+2 11 12
+2 12 1
+2 1 13
+2 13 14
+2 14 15
+2 15 16
+2 16 17
+2 17 18
+2 18 19
+2 19 20
+2 20 21
+2 21 2
+2 2 22
+2 22 23
+2 23 24
+2 24 25
+2 25 26
+2 26 27
+2 27 28
+2 28 29
+2 29 30
+2 30 3
+2 3 31
+2 31 32
+2 32 33
+2 33 34
+2 34 35
+2 35 36
+2 36 37
+2 37 38
+2 38 39
+2 39 0
+3 71 80 101
+3 75 123 121
+3 48 119 115
+3 51 120 105
+3 51 105 121
+3 48 115 133
+3 95 121 123
+3 46 85 106
+3 51 121 124
+3 41 94 92
+3 52 90 88
+3 95 124 121
+3 80 126 101
+3 85 125 106
+3 71 101 78
+3 41 92 134
+3 52 128 90
+3 45 91 90
+3 45 92 91
+3 46 126 85
+3 41 95 94
+3 53 115 119
+3 54 105 120
+3 82 98 133
+3 52 88 118
+3 55 125 122
+3 85 86 125
+3 47 132 127
+3 89 96 110
+3 73 117 93
+3 82 135 98
+3 73 93 94
+3 48 133 98
+3 93 117 96
+3 62 110 96
+3 89 91 96
+3 91 92 93
+3 122 125 141
+3 45 90 128
+3 73 94 123
+3 109 127 132
+3 75 121 136
+3 92 94 93
+3 91 93 96
+3 40 56 57
+3 56 87 57
+3 27 56 40
+3 26 27 40
+3 35 36 41
+3 44 103 97
+3 87 89 110
+3 18 98 43
+3 25 103 44
+3 57 87 110
+3 9 99 42
+3 26 40 103
+3 28 49 56
+3 17 18 43
+3 8 9 42
+3 40 57 58
+3 27 28 56
+3 49 87 56
+3 25 26 103
+3 17 43 100
+3 7 102 47
+3 8 42 102
+3 87 88 89
+3 16 100 46
+3 19 48 98
+3 40 58 103
+3 88 90 89
+3 44 97 113
+3 7 8 102
+3 10 50 99
+3 16 17 100
+3 18 19 98
+3 89 90 91
+3 58 97 103
+3 9 10 99
+3 28 29 49
+3 49 88 87
+3 108 113 115
+3 57 110 59
+3 19 20 48
+3 59 110 62
+3 37 38 51
+3 43 101 100
+3 44 113 108
+3 10 11 50
+3 57 59 58
+3 22 23 53
+3 6 7 47
+3 67 73 69
+3 31 32 52
+3 15 16 46
+3 59 62 61
+3 63 67 65
+3 6 47 104
+3 79 83 112
+3 33 34 45
+3 65 67 68
+3 68 74 76
+3 15 46 106
+3 64 66 70
+3 24 25 44
+3 79 82 83
+3 70 78 79
+3 14 15 106
+3 70 71 78
+3 61 62 63
+3 5 6 104
+3 66 71 70
+3 63 65 64
+3 64 65 66
+3 74 77 76
+3 70 79 107
+3 61 63 64
+3 76 77 84
+3 58 60 97
+3 61 64 107
+3 64 70 107
+3 13 14 55
+3 74 109 77
+3 60 112 97
+3 71 72 80
+3 68 69 74
+3 80 81 85
+3 65 68 111
+3 59 61 60
+3 4 5 54
+3 66 72 71
+3 65 111 66
+3 58 59 60
+3 60 61 107
+3 23 108 53
+3 67 69 68
+3 23 24 108
+3 14 106 55
+3 68 76 111
+3 60 107 112
+3 78 82 79
+3 72 81 80
+3 66 111 72
+3 5 104 54
+3 74 75 109
+3 81 86 85
+3 24 44 108
+3 69 75 74
+3 83 113 112
+3 54 104 105
+3 79 112 107
+3 97 112 113
+3 76 114 111
+3 72 111 114
+3 83 115 113
+3 76 84 114
+3 84 116 114
+3 72 114 81
+3 81 114 116
+3 53 108 115
+3 81 116 86
+3 94 95 123
+3 62 96 117
+3 67 117 73
+3 62 117 63
+3 41 124 95
+3 63 117 67
+3 49 118 88
+3 29 30 118
+3 20 21 119
+3 38 39 120
+3 11 12 122
+3 69 123 75
+3 36 124 41
+3 37 51 124
+3 45 134 92
+3 100 101 126
+3 80 85 126
+3 29 118 49
+3 20 119 48
+3 38 120 51
+3 11 122 50
+3 47 127 104
+3 69 73 123
+3 32 128 52
+3 33 45 128
+3 83 133 115
+3 35 41 134
+3 34 134 45
+3 43 98 135
+3 2 22 137
+3 3 31 138
+3 2 137 21
+3 1 13 139
+3 1 139 12
+3 0 4 140
+3 0 140 39
+3 3 138 30
+3 36 37 124
+3 55 106 125
+3 105 136 121
+3 46 100 126
+3 75 136 109
+3 78 101 135
+3 104 127 105
+3 78 135 82
+3 116 130 129
+3 47 102 132
+3 84 131 130
+3 77 131 84
+3 84 130 116
+3 86 116 129
+3 32 33 128
+3 42 99 130
+3 99 129 130
+3 50 129 99
+3 42 130 131
+3 42 131 102
+3 77 109 132
+3 77 132 131
+3 102 131 132
+3 82 133 83
+3 34 35 134
+3 43 135 101
+3 50 122 141
+3 30 138 118
+3 39 140 120
+3 21 137 119
+3 12 139 122
+3 22 53 137
+3 31 52 138
+3 13 55 139
+3 4 54 140
+3 109 136 127
+3 52 118 138
+3 53 119 137
+3 54 120 140
+3 55 122 139
+3 105 127 136
+3 86 141 125
+3 86 129 141
+3 50 141 129
+
+CELL_TYPES 286
+1
+1
+1
+1
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
diff --git a/src/UnitTests/Meshes/data/triangles/mrizka_1.vtu b/src/UnitTests/Meshes/data/triangles/mrizka_1.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..12e9133318194aae973812cf043dc1cf96895ba1
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles/mrizka_1.vtu
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+<UnstructuredGrid>
+<Piece NumberOfPoints="142" NumberOfCells="242">
+<Points>
+<DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary">
+AQAAAAAAAABQDQAAAAAAAFANAAAAAAAA4QYAAAAAAAA=eJyFlnlUU1cQh4OKiAseFWwFFXFDgwUlhCoYRnChIDsKVkTBIKBAxaOIVagbiwJKcaMRCiqIYg+CigtxJ6DEioSAUTAISExCNCUubOVg+uKr776Q1M4fyblfJnPvb2buvEehfM0U8HX+f79TKJs3sDAr0/ALDlBxrgY/prSm0Wh1GjzWW+XfoMFN85WYNWvwGQZYGFqbBs9yDcVMrMHHJqvit2vwFM5jzN7+p07t+hSgXZ8CtOtTgHZ9CtCuTwHa9SlAuz4FaNengIH6Zt4hr1Edf2OR/4/441/I+yGuZJLPR+qHH1SfLRq8zOAkST/iI1JppHwN9Odq8MufeZkG164Pmbo+ZOr6kKnrQ6auD5m6PmTq+gb6a94PdX0Uyp+e1ZgeIXStp3oespMTPOhR1B+RZ69DFcslbeTOJoKbRKt0tsK1oUVJxy2uEZwt4xrsdpGDjJpGv767leA9UlW+RHAmUj3+dvN9teZ3r4Fn0BqWX72I4DlhuF/iLFXeBASXDYv61MEQQE/Ojpy27lJS/1gb3jeTQ7/t1JIRzlKCez8wGhwyigd2NyeJNjmgfVuiIhUGzRJgfFwfNysIxUnfjOuhuahWPIKbvat6etTqOuSd4/X0SmQE/9veIp1t9QaONPfr+bqi+Pk1PhwjRw6Mdx1zL6zoKsGtc225P6+Sw/YbR07kLeMQPIENt06HC2Bohw/D2h7FiU89yu/B6v1dWoCJbQzad5Hvpg49rD8YzhY0UxJPEld4NWN1PPbgydKiYgnBR1dQY7Oxej3P1D1eSOIOgU66g7A461e4h9nKUP71IysOzsxuAP3tyiFeYsQ7qjryI/hCsDa7x82e+orgx0rNn4052QrGYY6TwqYjfujhyXepWHxFo3Ef9/ZLgg8Jxftex7T/au4dxEUWlmHtuQ1QnLnSr5KNOP8o6+6wJ0LYk/fa87016v9GxpNnzFgBRD9qa9JfiHjSktHPWrB+m3PppscV0nlSttg7KFPE4BDRWUT9iOJ3TjVZJuaLYO3qPn4BKY5eL36vlgxXP+fQBHdqHpafklX7aOMvoHtXrGPz2b/resH7+vOIv5K6TgnA8uCnZJq3k3hGHH7veJbdZs32jwkuNn4c4zBKCjaWEu84B3T+CenjanPCxeA5+xffuL9QXY6bj9RRTpRCrjiPejEBnf9DBj53kqvVz+N9Dp9T/eWFC+mkup/eKCjMkkpgSIlOcMEZ1CfdIvy+uy9VP+fM+3X+6R/aQXSp0M1wL4q/ZF4o82OnBGQbdg6yWIP8I5waTzXR6yAheXVOM6lvp00OdLVP4sIZl6S5bWmIe7/tCnHor4FepWl+VhE6z6Do8kkZUzkQ0zJleesDxIN0BzOCLbmQxNY5mPAS6ZqdfFYY3loOblXMHKoEzaXew/OH7N1bAwf8xsXuGYvyXNm0xjT6ChdSBqdeiPAh9Un0BE/eiwrImrvwlMuq5yiOW3fuxBl1II2wNGG/QvtSG/UodKzPf/IIOW9C0pt9ymu8ftVbmKfcOztVhPw9LuJzMshRfa52hRTs1PWQw6ZxVZQ5FUI0J2O9RLbTZEBffiGmPgA9329mzDjr/0gIoS8W+N2KQ/OHm9E7PwurIz20z+EwaQ73FBjyxHk1QLnt31SXiPx3FTvFNJU/hP1ZFmFXux4Q3H0546X3Ajl0OyWlsQzQnDwQFWF2AdPbL03b0kjqq7KgQlGEUgJ2Re6LLRloX8jVvbHtRwFsm8wstXWtJrh9Hz73X9vulp8jz6vwK8UvsTnjcZoS32mD+jwx3MdwNVcExifc9nheRP5l37QI6oPFwFpslDtzK8r/iLpdvDibNujTWZl5kHR/Jy9sNao1lEGLkdeEA1bI30Wv+nNdwhzV+98mvp/nFS2AfdU7KPGTSHNvzuIodiYHlgQOG2u7DukV1N/oHOEnB/ebEw75270h+LaTNKYz4yqsHBcs3G+Fngvf5nNq9WlVMNLJpmQZn0/wR6P0pvMGvQEn4x6WYOgN9L5kzbSLH86DmqfHje42ov5MTCw8YLCxFKwCP22tDEDP04Y+u8oVtTKoHvCeqUNv9OoSy+D32V3ZDw+hPBsuuzMvMY0PL7o/0JxlFWjefkoPmvOsBMpZo3v1JSj//H/fI+mRqvmDdLkPx+e/mK7Ocy/j76m+U9S50DkgZN+2BuAsfeW7qA3xwhVpnFP5MtgyqyzVPxDt22nEjjpTWgLzBfjc+sI3m/+ak1Apg6qGktPrzqJ6Fc5PScxk82DUSB+B0OYJur+K5Fr383LIeod/f+FrY+9tzbh9GYwGcOFHfO34Pf77F/7BCl+7BarzN8zXvu01Utjib6mrS0W6/gFoJeqo
+</DataArray>
+</Points>
+<Cells>
+<DataArray type="Int32" Name="connectivity" format="binary">
+AQAAAAAAAABYCwAAAAAAAFgLAAAAAAAAFAQAAAAAAAA=eJxNlYdTk0EQxc8OIgo2FBvNhhFpARUQgoRQJEoVCL1JlSqgIqGIioH/2X1zP4d8M2++K3tv3+5eiTjnPhgmDa2G74avhmLDhmHVUGbYNMzQnkmy0fyBYZgxrS8ydBtmsdf4luGpYcgwYCg39Bt6WbuFnbRso0ccP+CJMBaFRxy/4NmB67khltQeoF8EZzdrh9ERRL/irCAuxdlhGCOucjSuGyrR8w2uHvovDD8NcUOfYcTw2dBs+GIYhPM3vM2MDZHDA8YHsdf6N3CMwBmjHSOuQXTI/zHx9pOLZrhViwV0/aS+yvEfOIbgifEX/xPDS8Mr/h9p36Gv+Wz6aucbCshrwPDJMMq6PmK4SnzPDLexCcD7EZtUw7ihEP4n2N01lOA7Ey7xpLCmEFtxvUbXXexL4H+J32w4M+GYMFwwTFHDFPimWNdLDBnYah9do2Zj+H0NZy/57yM25WAZ/hQ4LxpKiTMDHRPEdA3OPnhicI/Cn8r6ceK7R3wl+JbeeXyukg/ltQru6+iuYlz766HhkfNnVPmYRE8Annl8pqH7Feul66Yhy/kzdJ44lcO3zu+/sOGBIcf5M3SFmIvgkP8aQy1rQvCIY9rw3tBpWDLkGvKc3+Mh7BtAi+Ed/OLWXVFnqDc0Gm45X/sAnB3wai7K2GXWzzIeYa4GndJ4Dn3TcEewrUVTHQgxL11taGvEz1xSzHXMyaaLnFY7X+8a5uf4N9JOR2sl/AusryZPo+hqcv4ebaAOLfTbnb+3QswtUosaOM4SZwUxNMEXwrYenVXYV7NW2rQXtF+C1CeMjyxqMI/2WfQ3EP8iPHPEEKVG7/HfjvZ6bJvQOI1OxdZKLmTbQ4zyGcBvGBvZqvbL+KqAZwZ/S+gYpb2MxpUk34v0xbOaZNPFuP5rtJv4t4MV5oLoWmV8Dd26j/U26d7Wvhtx/j14y7+ZcbW1h3TnbrGmNslWd4LeK90Luifu09cdcMP5907n/rHz753O9yXn35Mw/pWvAnfybuuuKKOvc6i3V2+I7gvdG9vUqZv2PXyW4Fc+i/G7CVcaPnW36NzHqUeYWKUjx/k3TXdILr53yP8BOcxHozTl8Zed7jTdqXp3Tzt/Zx0azjh/N/1l/JC8nHL+jCVoJ8iLPp2NI9pH5O4MHPfJ1UPyo/2tfa63WXtL763e3SLytU1+Na59GyWHv4k/zrooYzoP2iN7hl1ypfdEb7r22z5zbbS7wJ472VtrrM0hj8qh3rpx7MaZ36Meu+7kPd6Dt5D/FL4W0NDG///cPv0OatRJXfKpzTPimsSX9sAxeVQ+18mv8rxJbVSjDeqRYI3qGWRO9SxnfTo1SFC3CrgWyHkc23Xsg3AfYruJfSV+EtQjzvoe9P6gvUu/lL/6/wCfat7A
+</DataArray>
+<DataArray type="Int32" Name="offsets" format="binary">
+AQAAAAAAAADIAwAAAAAAAMgDAAAAAAAAgwEAAAAAAAA=eJwNwwOMUAEAANB/l3nZtm3btm3bdZdt27Zt21itVqvVarVarVarVe9tL1IQBFGNYWzDTGBik5nSNKY3k1nNYW7zWdAiFreUZa1gZatZ0zrWt5FNbWFr29nRLna3l30d4GCHOdIxjnWCk53mTOc430UudYWrXedGt7jdXe71gIc95knPeN5LXvWGt73nQ5/4zBe+8o3v/OAnv/jNH/7yj/8MDQmCKEY3lnGNbyKTmsLUpjOjWcxuLvNawMIWs6RlLG8lq1rD2tazoU1sbivb2sHOdrOnfezvIIc6wtFGON5JTnWGs53nQpe43FWudYOb3eZO97jfQx71hKc950WveN1b3vWBj33qc1/62re+96Of/ep3f/rbv4aEBkFkoxnTOMYzoUlMbirTmsHMZjOnecxvIYtawtKWs6JVrG4t69rAxjazpW1sbye72sPe9nOgQxzuKMMd50SnON1ZznWBi13mSte43k1udYe73edBj3jcU571gpe95k3veN9H/gcAo3R3
+</DataArray>
+<DataArray type="UInt8" Name="types" format="binary">
+AQAAAAAAAADyAAAAAAAAAPIAAAAAAAAADAAAAAAAAAA=eJxjZR1pAAA/VwS7
+</DataArray>
+</Cells>
+</Piece>
+</UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles/netgen_square.in2d b/src/UnitTests/Meshes/data/triangles/netgen_square.in2d
new file mode 100644
index 0000000000000000000000000000000000000000..0e1f23c90dbca8e3d400240ac852cfaed5424e7a
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles/netgen_square.in2d
@@ -0,0 +1,17 @@
+splinecurves2dv2
+# grading parameter
+5
+
+points
+# number  x_n y_n
+1  0.0 0.0
+2  1.0 0.0
+3  1.0 1.0
+4  0.0 1.0
+
+segments
+# dil dir   line/arc    P_1 P_2     boundary condition
+1 0         2           1   2       --bc=1
+1 0         2           2   3       --bc=1
+1 0         2           3   4       --bc=1
+1 0         2           4   1       --bc=1
diff --git a/src/UnitTests/Meshes/data/triangles/netgen_square.ng b/src/UnitTests/Meshes/data/triangles/netgen_square.ng
new file mode 100644
index 0000000000000000000000000000000000000000..719f31e76cfab31f95542415a5052d7e1cccef45
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles/netgen_square.ng
@@ -0,0 +1,868 @@
+289
+  0.000000  0.000000 
+  1.000000  0.000000 
+  1.000000  1.000000 
+  0.000000  1.000000 
+  0.500000  0.000000 
+  0.500000  0.500000 
+  0.000000  0.500000 
+  1.000000  0.500000 
+  0.500000  1.000000 
+  0.250000  0.000000 
+  0.250000  0.250000 
+  0.000000  0.250000 
+  0.750000  0.000000 
+  1.000000  0.250000 
+  0.750000  0.750000 
+  1.000000  0.750000 
+  0.750000  1.000000 
+  0.000000  0.750000 
+  0.250000  1.000000 
+  0.500000  0.250000 
+  0.750000  0.250000 
+  0.250000  0.500000 
+  0.750000  0.500000 
+  0.500000  0.750000 
+  0.250000  0.750000 
+  0.125000  0.000000 
+  0.125000  0.125000 
+  0.000000  0.125000 
+  0.875000  0.000000 
+  1.000000  0.125000 
+  0.875000  0.875000 
+  1.000000  0.875000 
+  0.875000  1.000000 
+  0.000000  0.875000 
+  0.125000  1.000000 
+  0.375000  0.000000 
+  0.625000  0.000000 
+  0.500000  0.125000 
+  0.625000  0.125000 
+  0.375000  0.375000 
+  0.625000  0.625000 
+  0.500000  0.375000 
+  0.375000  0.500000 
+  0.625000  0.500000 
+  0.500000  0.625000 
+  0.000000  0.375000 
+  0.000000  0.625000 
+  0.125000  0.500000 
+  0.125000  0.625000 
+  1.000000  0.375000 
+  1.000000  0.625000 
+  0.875000  0.375000 
+  0.875000  0.500000 
+  0.625000  1.000000 
+  0.375000  1.000000 
+  0.500000  0.875000 
+  0.375000  0.875000 
+  0.250000  0.125000 
+  0.375000  0.125000 
+  0.125000  0.250000 
+  0.375000  0.250000 
+  0.250000  0.375000 
+  0.125000  0.375000 
+  0.875000  0.125000 
+  0.750000  0.125000 
+  0.875000  0.250000 
+  0.875000  0.750000 
+  0.750000  0.875000 
+  0.750000  0.625000 
+  0.625000  0.750000 
+  0.875000  0.625000 
+  0.625000  0.875000 
+  0.125000  0.875000 
+  0.125000  0.750000 
+  0.250000  0.875000 
+  0.625000  0.250000 
+  0.625000  0.375000 
+  0.750000  0.375000 
+  0.375000  0.625000 
+  0.250000  0.625000 
+  0.375000  0.750000 
+  0.062500  0.000000 
+  0.062500  0.062500 
+  0.000000  0.062500 
+  0.937500  0.000000 
+  1.000000  0.062500 
+  0.937500  0.937500 
+  1.000000  0.937500 
+  0.937500  1.000000 
+  0.000000  0.937500 
+  0.062500  1.000000 
+  0.437500  0.000000 
+  0.562500  0.000000 
+  0.500000  0.062500 
+  0.562500  0.062500 
+  0.437500  0.437500 
+  0.562500  0.562500 
+  0.500000  0.437500 
+  0.437500  0.500000 
+  0.562500  0.500000 
+  0.500000  0.562500 
+  0.000000  0.437500 
+  0.000000  0.562500 
+  0.062500  0.500000 
+  0.062500  0.562500 
+  1.000000  0.437500 
+  1.000000  0.562500 
+  0.937500  0.437500 
+  0.937500  0.500000 
+  0.562500  1.000000 
+  0.437500  1.000000 
+  0.500000  0.937500 
+  0.437500  0.937500 
+  0.187500  0.000000 
+  0.312500  0.000000 
+  0.250000  0.062500 
+  0.312500  0.062500 
+  0.187500  0.187500 
+  0.312500  0.312500 
+  0.250000  0.187500 
+  0.187500  0.250000 
+  0.312500  0.250000 
+  0.250000  0.312500 
+  0.000000  0.187500 
+  0.000000  0.312500 
+  0.062500  0.250000 
+  0.062500  0.312500 
+  0.812500  0.000000 
+  0.687500  0.000000 
+  0.812500  0.062500 
+  0.750000  0.062500 
+  1.000000  0.187500 
+  1.000000  0.312500 
+  0.937500  0.187500 
+  0.937500  0.250000 
+  0.812500  0.812500 
+  0.687500  0.687500 
+  0.812500  0.750000 
+  0.750000  0.812500 
+  0.750000  0.687500 
+  0.687500  0.750000 
+  1.000000  0.812500 
+  1.000000  0.687500 
+  0.937500  0.750000 
+  0.937500  0.687500 
+  0.812500  1.000000 
+  0.687500  1.000000 
+  0.750000  0.937500 
+  0.687500  0.937500 
+  0.000000  0.812500 
+  0.000000  0.687500 
+  0.062500  0.812500 
+  0.062500  0.750000 
+  0.187500  1.000000 
+  0.312500  1.000000 
+  0.187500  0.937500 
+  0.250000  0.937500 
+  0.500000  0.187500 
+  0.500000  0.312500 
+  0.437500  0.187500 
+  0.437500  0.250000 
+  0.562500  0.250000 
+  0.562500  0.312500 
+  0.687500  0.187500 
+  0.812500  0.312500 
+  0.750000  0.187500 
+  0.812500  0.250000 
+  0.687500  0.250000 
+  0.750000  0.312500 
+  0.312500  0.500000 
+  0.187500  0.500000 
+  0.250000  0.437500 
+  0.187500  0.437500 
+  0.312500  0.562500 
+  0.250000  0.562500 
+  0.687500  0.500000 
+  0.812500  0.500000 
+  0.750000  0.562500 
+  0.812500  0.562500 
+  0.687500  0.437500 
+  0.750000  0.437500 
+  0.500000  0.687500 
+  0.500000  0.812500 
+  0.562500  0.750000 
+  0.562500  0.812500 
+  0.437500  0.687500 
+  0.437500  0.750000 
+  0.187500  0.687500 
+  0.312500  0.812500 
+  0.187500  0.750000 
+  0.250000  0.812500 
+  0.250000  0.687500 
+  0.312500  0.750000 
+  0.125000  0.062500 
+  0.187500  0.062500 
+  0.062500  0.125000 
+  0.187500  0.125000 
+  0.125000  0.187500 
+  0.062500  0.187500 
+  0.937500  0.062500 
+  0.875000  0.062500 
+  0.937500  0.125000 
+  0.937500  0.875000 
+  0.875000  0.937500 
+  0.875000  0.812500 
+  0.812500  0.875000 
+  0.937500  0.812500 
+  0.812500  0.937500 
+  0.062500  0.937500 
+  0.062500  0.875000 
+  0.125000  0.937500 
+  0.437500  0.062500 
+  0.375000  0.062500 
+  0.625000  0.062500 
+  0.687500  0.062500 
+  0.562500  0.125000 
+  0.437500  0.125000 
+  0.562500  0.187500 
+  0.687500  0.125000 
+  0.625000  0.187500 
+  0.437500  0.375000 
+  0.375000  0.437500 
+  0.375000  0.312500 
+  0.312500  0.375000 
+  0.625000  0.562500 
+  0.562500  0.625000 
+  0.687500  0.625000 
+  0.625000  0.687500 
+  0.562500  0.437500 
+  0.437500  0.312500 
+  0.562500  0.375000 
+  0.437500  0.562500 
+  0.312500  0.437500 
+  0.375000  0.562500 
+  0.687500  0.562500 
+  0.625000  0.437500 
+  0.562500  0.687500 
+  0.437500  0.625000 
+  0.062500  0.437500 
+  0.062500  0.375000 
+  0.062500  0.625000 
+  0.062500  0.687500 
+  0.125000  0.562500 
+  0.125000  0.437500 
+  0.187500  0.562500 
+  0.125000  0.687500 
+  0.187500  0.625000 
+  0.937500  0.375000 
+  0.937500  0.312500 
+  0.937500  0.562500 
+  0.937500  0.625000 
+  0.875000  0.437500 
+  0.875000  0.312500 
+  0.812500  0.375000 
+  0.875000  0.562500 
+  0.812500  0.437500 
+  0.562500  0.937500 
+  0.625000  0.937500 
+  0.375000  0.937500 
+  0.312500  0.937500 
+  0.437500  0.875000 
+  0.562500  0.875000 
+  0.437500  0.812500 
+  0.312500  0.875000 
+  0.375000  0.812500 
+  0.312500  0.125000 
+  0.312500  0.187500 
+  0.375000  0.187500 
+  0.187500  0.312500 
+  0.125000  0.312500 
+  0.187500  0.375000 
+  0.812500  0.125000 
+  0.875000  0.187500 
+  0.812500  0.187500 
+  0.812500  0.687500 
+  0.875000  0.687500 
+  0.687500  0.812500 
+  0.687500  0.875000 
+  0.812500  0.625000 
+  0.625000  0.812500 
+  0.125000  0.812500 
+  0.187500  0.875000 
+  0.187500  0.812500 
+  0.625000  0.312500 
+  0.687500  0.312500 
+  0.687500  0.375000 
+  0.312500  0.625000 
+  0.375000  0.687500 
+  0.312500  0.687500 
+512
+   1            1       82       83
+   1            1       83       84
+   1            2       86       85
+   1            3       87       88
+   1            5       95       94
+   1            3       89       87
+   1            4       90       91
+   1            6      101       99
+   1            5       94       92
+   1            6       96       98
+   1           10      117      116
+   1            6       99       96
+   1            7      102      104
+   1           11      123      121
+   1            8      108      106
+   1            5       93       95
+   1           14      135      134
+   1            6      100       97
+   1            8      107      109
+   1           15      140      138
+   1            8      109      108
+   1            6       98      100
+   1           21      169      168
+   1            9      112      110
+   1            6       97      101
+   1           17      149      148
+   1            7      105      103
+   1            9      111      113
+   1           18      153      152
+   1            9      113      112
+   1            7      104      105
+   1           24      187      186
+   1           10      116      114
+   1           11      118      120
+   1           26      195      194
+   1           11      121      118
+   1           12      124      126
+   1           27      198      196
+   1           14      134      132
+   1           13      128      130
+   1           30      202      200
+   1           15      138      136
+   1           16      142      144
+   1           31      205      203
+   1           21      168      164
+   1           20      158      162
+   1           39      220      216
+   1           17      148      146
+   1           15      136      139
+   1           33      208      204
+   1           18      152      150
+   1           19      154      156
+   1           34      210      209
+   1           24      186      182
+   1           22      170      174
+   1           45      238      232
+   1           20      160      158
+   1           10      115      117
+   1           38      217      212
+   1           11      122      119
+   1           20      159      161
+   1           40      223      221
+   1           20      161      160
+   1           11      120      122
+   1           59      268      266
+   1           22      172      170
+   1           11      119      123
+   1           43      233      222
+   1           12      127      125
+   1           22      171      173
+   1           46      240      239
+   1           22      173      172
+   1           12      126      127
+   1           62      271      269
+   1           21      167      165
+   1           14      133      135
+   1           52      253      248
+   1           13      131      129
+   1           21      164      166
+   1           37      215      214
+   1           21      166      167
+   1           13      130      131
+   1           66      274      273
+   1           23      178      176
+   1           15      137      140
+   1           44      235      225
+   1           16      145      143
+   1           23      177      179
+   1           51      251      250
+   1           23      179      178
+   1           16      144      145
+   1           69      279      275
+   1           23      181      177
+   1           21      165      169
+   1           53      256      252
+   1           20      163      159
+   1           23      176      180
+   1           42      231      229
+   1           23      180      181
+   1           20      162      163
+   1           78      286      285
+   1           24      185      183
+   1           17      147      149
+   1           56      262      257
+   1           15      141      137
+   1           24      182      184
+   1           41      228      226
+   1           24      184      185
+   1           15      139      141
+   1           72      280      278
+   1           25      190      188
+   1           18      151      153
+   1           49      246      241
+   1           19      157      155
+   1           25      189      191
+   1           55      260      259
+   1           25      191      190
+   1           19      156      157
+   1           74      283      281
+   1           25      193      189
+   1           24      183      187
+   1           57      265      261
+   1           22      175      171
+   1           25      188      192
+   1           48      245      243
+   1           25      192      193
+   1           22      174      175
+   1           81      289      288
+   1           26      194       82
+   1           27       83      194
+   1           82      194       83
+   1           27      196       83
+   1           28       84      196
+   1           83      196       84
+   1           30      200       86
+   1           29       85      200
+   1           86      200       85
+   1           31      203       87
+   1           32       88      203
+   1           87      203       88
+   1           39      216       95
+   1           38       94      216
+   1           95      216       94
+   1           33      204       89
+   1           31       87      204
+   1           89      204       87
+   1           34      209       90
+   1           35       91      209
+   1           90      209       91
+   1           45      232      101
+   1           43       99      232
+   1          101      232       99
+   1           38      212       94
+   1           36       92      212
+   1           94      212       92
+   1           40      221       96
+   1           42       98      221
+   1           96      221       98
+   1           59      266      117
+   1           58      116      266
+   1          117      266      116
+   1           43      222       99
+   1           40       96      222
+   1           99      222       96
+   1           46      239      102
+   1           48      104      239
+   1          102      239      104
+   1           62      269      123
+   1           60      121      269
+   1          123      269      121
+   1           52      248      108
+   1           50      106      248
+   1          108      248      106
+   1           37      214       93
+   1           39       95      214
+   1           93      214       95
+   1           66      273      135
+   1           64      134      273
+   1          135      273      134
+   1           44      225      100
+   1           41       97      225
+   1          100      225       97
+   1           51      250      107
+   1           53      109      250
+   1          107      250      109
+   1           69      275      140
+   1           67      138      275
+   1          140      275      138
+   1           53      252      109
+   1           52      108      252
+   1          109      252      108
+   1           42      229       98
+   1           44      100      229
+   1           98      229      100
+   1           78      285      169
+   1           76      168      285
+   1          169      285      168
+   1           56      257      112
+   1           54      110      257
+   1          112      257      110
+   1           41      226       97
+   1           45      101      226
+   1           97      226      101
+   1           72      278      149
+   1           68      148      278
+   1          149      278      148
+   1           49      241      105
+   1           47      103      241
+   1          105      241      103
+   1           55      259      111
+   1           57      113      259
+   1          111      259      113
+   1           74      281      153
+   1           73      152      281
+   1          153      281      152
+   1           57      261      113
+   1           56      112      261
+   1          113      261      112
+   1           48      243      104
+   1           49      105      243
+   1          104      243      105
+   1           81      288      187
+   1           79      186      288
+   1          187      288      186
+   1           58      195      116
+   1           26      114      195
+   1          116      195      114
+   1           27      197      118
+   1           58      120      197
+   1          118      197      120
+   1           58      197      195
+   1           27      194      197
+   1          195      197      194
+   1           60      198      121
+   1           27      118      198
+   1          121      198      118
+   1           28      199      124
+   1           60      126      199
+   1          124      199      126
+   1           60      199      198
+   1           28      196      199
+   1          198      199      196
+   1           64      202      134
+   1           30      132      202
+   1          134      202      132
+   1           29      201      128
+   1           64      130      201
+   1          128      201      130
+   1           64      201      202
+   1           29      200      201
+   1          202      201      200
+   1           67      205      138
+   1           31      136      205
+   1          138      205      136
+   1           32      207      142
+   1           67      144      207
+   1          142      207      144
+   1           67      207      205
+   1           32      203      207
+   1          205      207      203
+   1           76      220      168
+   1           39      164      220
+   1          168      220      164
+   1           38      218      158
+   1           76      162      218
+   1          158      218      162
+   1           76      218      220
+   1           38      216      218
+   1          220      218      216
+   1           68      208      148
+   1           33      146      208
+   1          148      208      146
+   1           31      206      136
+   1           68      139      206
+   1          136      206      139
+   1           68      206      208
+   1           31      204      206
+   1          208      206      204
+   1           73      210      152
+   1           34      150      210
+   1          152      210      150
+   1           35      211      154
+   1           73      156      211
+   1          154      211      156
+   1           73      211      210
+   1           35      209      211
+   1          210      211      209
+   1           79      238      186
+   1           45      182      238
+   1          186      238      182
+   1           43      234      170
+   1           79      174      234
+   1          170      234      174
+   1           79      234      238
+   1           43      232      234
+   1          238      234      232
+   1           59      217      160
+   1           38      158      217
+   1          160      217      158
+   1           36      213      115
+   1           59      117      213
+   1          115      213      117
+   1           59      213      217
+   1           36      212      213
+   1          217      213      212
+   1           61      223      122
+   1           40      119      223
+   1          122      223      119
+   1           42      230      159
+   1           61      161      230
+   1          159      230      161
+   1           61      230      223
+   1           42      221      230
+   1          223      230      221
+   1           61      268      161
+   1           59      160      268
+   1          161      268      160
+   1           58      267      120
+   1           61      122      267
+   1          120      267      122
+   1           61      267      268
+   1           58      266      267
+   1          268      267      266
+   1           62      233      172
+   1           43      170      233
+   1          172      233      170
+   1           40      224      119
+   1           62      123      224
+   1          119      224      123
+   1           62      224      233
+   1           40      222      224
+   1          233      224      222
+   1           63      240      127
+   1           46      125      240
+   1          127      240      125
+   1           48      244      171
+   1           63      173      244
+   1          171      244      173
+   1           63      244      240
+   1           48      239      244
+   1          240      244      239
+   1           63      271      173
+   1           62      172      271
+   1          173      271      172
+   1           60      270      126
+   1           63      127      270
+   1          126      270      127
+   1           63      270      271
+   1           60      269      270
+   1          271      270      269
+   1           66      253      167
+   1           52      165      253
+   1          167      253      165
+   1           50      249      133
+   1           66      135      249
+   1          133      249      135
+   1           66      249      253
+   1           50      248      249
+   1          253      249      248
+   1           65      215      131
+   1           37      129      215
+   1          131      215      129
+   1           39      219      164
+   1           65      166      219
+   1          164      219      166
+   1           65      219      215
+   1           39      214      219
+   1          215      219      214
+   1           65      274      166
+   1           66      167      274
+   1          166      274      167
+   1           64      272      130
+   1           65      131      272
+   1          130      272      131
+   1           65      272      274
+   1           64      273      272
+   1          274      272      273
+   1           69      235      178
+   1           44      176      235
+   1          178      235      176
+   1           41      227      137
+   1           69      140      227
+   1          137      227      140
+   1           69      227      235
+   1           41      225      227
+   1          235      227      225
+   1           71      251      145
+   1           51      143      251
+   1          145      251      143
+   1           53      255      177
+   1           71      179      255
+   1          177      255      179
+   1           71      255      251
+   1           53      250      255
+   1          251      255      250
+   1           71      279      179
+   1           69      178      279
+   1          179      279      178
+   1           67      276      144
+   1           71      145      276
+   1          144      276      145
+   1           71      276      279
+   1           67      275      276
+   1          279      276      275
+   1           78      256      181
+   1           53      177      256
+   1          181      256      177
+   1           52      254      165
+   1           78      169      254
+   1          165      254      169
+   1           78      254      256
+   1           52      252      254
+   1          256      254      252
+   1           77      231      163
+   1           42      159      231
+   1          163      231      159
+   1           44      236      176
+   1           77      180      236
+   1          176      236      180
+   1           77      236      231
+   1           44      229      236
+   1          231      236      229
+   1           77      286      180
+   1           78      181      286
+   1          180      286      181
+   1           76      284      162
+   1           77      163      284
+   1          162      284      163
+   1           77      284      286
+   1           76      285      284
+   1          286      284      285
+   1           72      262      185
+   1           56      183      262
+   1          185      262      183
+   1           54      258      147
+   1           72      149      258
+   1          147      258      149
+   1           72      258      262
+   1           54      257      258
+   1          262      258      257
+   1           70      228      141
+   1           41      137      228
+   1          141      228      137
+   1           45      237      182
+   1           70      184      237
+   1          182      237      184
+   1           70      237      228
+   1           45      226      237
+   1          228      237      226
+   1           70      280      184
+   1           72      185      280
+   1          184      280      185
+   1           68      277      139
+   1           70      141      277
+   1          139      277      141
+   1           70      277      280
+   1           68      278      277
+   1          280      277      278
+   1           74      246      190
+   1           49      188      246
+   1          190      246      188
+   1           47      242      151
+   1           74      153      242
+   1          151      242      153
+   1           74      242      246
+   1           47      241      242
+   1          246      242      241
+   1           75      260      157
+   1           55      155      260
+   1          157      260      155
+   1           57      264      189
+   1           75      191      264
+   1          189      264      191
+   1           75      264      260
+   1           57      259      264
+   1          260      264      259
+   1           75      283      191
+   1           74      190      283
+   1          191      283      190
+   1           73      282      156
+   1           75      157      282
+   1          156      282      157
+   1           75      282      283
+   1           73      281      282
+   1          283      282      281
+   1           81      265      193
+   1           57      189      265
+   1          193      265      189
+   1           56      263      183
+   1           81      187      263
+   1          183      263      187
+   1           81      263      265
+   1           56      261      263
+   1          265      263      261
+   1           80      245      175
+   1           48      171      245
+   1          175      245      171
+   1           49      247      188
+   1           80      192      247
+   1          188      247      192
+   1           80      247      245
+   1           49      243      247
+   1          245      247      243
+   1           80      289      192
+   1           81      193      289
+   1          192      289      193
+   1           79      287      174
+   1           80      175      287
+   1          174      287      175
+   1           80      287      289
+   1           79      288      287
+   1          289      287      288
+64
+   1            1       82
+   1            2       86
+   1            3       89
+   1            4       90
+   1            5       93
+   1            8      107
+   1            9      111
+   1            7      102
+   1           10      115
+   1           14      133
+   1           17      147
+   1           18      151
+   1           13      128
+   1           16      142
+   1           19      154
+   1           12      124
+   1           26      114
+   1           30      132
+   1           33      146
+   1           34      150
+   1           37      129
+   1           51      143
+   1           55      155
+   1           46      125
+   1           36       92
+   1           50      106
+   1           54      110
+   1           47      103
+   1           29       85
+   1           32       88
+   1           35       91
+   1           28       84
+   1           82       26
+   1           86       30
+   1           89       33
+   1           90       34
+   1           93       37
+   1          107       51
+   1          111       55
+   1          102       46
+   1          115       36
+   1          133       50
+   1          147       54
+   1          151       47
+   1          128       29
+   1          142       32
+   1          154       35
+   1          124       28
+   1          114       10
+   1          132       14
+   1          146       17
+   1          150       18
+   1          129       13
+   1          143       16
+   1          155       19
+   1          125       12
+   1           92        5
+   1          106        8
+   1          110        9
+   1          103        7
+   1           85        2
+   1           88        3
+   1           91        4
+   1           84        1
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/DataFile_version_5.1_exported_from_paraview.vtk b/src/UnitTests/Meshes/data/triangles_2x2x2/DataFile_version_5.1_exported_from_paraview.vtk
new file mode 100644
index 0000000000000000000000000000000000000000..d305f5aa6d28d2e0a2060e9364e717f34ed16c69
Binary files /dev/null and b/src/UnitTests/Meshes/data/triangles_2x2x2/DataFile_version_5.1_exported_from_paraview.vtk differ
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_binary.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_binary.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..814e7f26f855ac0814575d02d0b6425b607df9e7
Binary files /dev/null and b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_binary.vtu differ
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_binary_compressed.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_binary_compressed.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..b8be4feabf78d30fb63c6ccc26341763664c5a3c
Binary files /dev/null and b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_binary_compressed.vtu differ
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_encoded.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_encoded.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..c4818dc23345ebd803baa63c0586f7397a9c5782
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_encoded.vtu
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="9"                    NumberOfCells="8"                   >
+      <PointData>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="70.710678119"         offset="0"                   >
+          <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="156"                 />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="424"                 />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="520"                 >
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _bAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhBAAAAAAAAAAAAAEhCAAAAAAAAAAAAAAAAAADIQQAAAAAAAMhBAADIQQAAAAAAAEhCAADIQQAAAAAAAAAAAABIQgAAAAAAAMhBAABIQgAAAAAAAEhCAABIQgAAAAA=wAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAIAAAAAAAAABQAAAAAAAAABAAAAAAAAAAUAAAAAAAAABAAAAAAAAAADAAAAAAAAAAQAAAAAAAAABwAAAAAAAAADAAAAAAAAAAcAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAUAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAABwAAAAAAAAA=QAAAAAAAAAADAAAAAAAAAAYAAAAAAAAACQAAAAAAAAAMAAAAAAAAAA8AAAAAAAAAEgAAAAAAAAAVAAAAAAAAABgAAAAAAAAACAAAAAAAAAAFBQUFBQUFBQ==
+  </AppendedData>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_encoded_compressed.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_encoded_compressed.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..0ca9a86e80abb01f798e26ab2542112b2cd19c84
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_appended_encoded_compressed.vtu
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="9"                    NumberOfCells="8"                   >
+      <PointData>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="70.710678119"         offset="0"                   >
+          <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="92"                  />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="204"                 />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="288"                 >
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _AQAAAAAAAAAAgAAAAAAAAGwAAAAAAAAAIwAAAAAAAAA=eJxjYEAGJxwRbA8nBqxyIBrGBqnBpgckBmODaAgbAMC5CXM=AQAAAAAAAAAAgAAAAAAAAMAAAAAAAAAAMgAAAAAAAAA=eJxjYIAARijNwoAKYHxmNHVMUJoVTRzGR9cH47OjicP4bGjqYOZwoInD+DB9AB0gAGE=AQAAAAAAAAAAgAAAAAAAAEAAAAAAAAAAHgAAAAAAAAA=eJxjZoAANijNCaV5oDQ/lBaC0qJQWgJKAwALgABtAQAAAAAAAAAAgAAAAAAAAAgAAAAAAAAACwAAAAAAAAA=eJxjZYUAAAC8ACk=
+  </AppendedData>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_ascii.vtk b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_ascii.vtk
new file mode 100644
index 0000000000000000000000000000000000000000..5385dd47b07ab4b806999c6028ff43a824f9996e
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_ascii.vtk
@@ -0,0 +1,34 @@
+# vtk DataFile Version 2.0
+TNL DATA
+ASCII
+DATASET UNSTRUCTURED_GRID
+POINTS 9 float
+0 0 0 
+25 0 0 
+50 0 0 
+0 25 0 
+25 25 0 
+50 25 0 
+0 50 0 
+25 50 0 
+50 50 0 
+
+CELLS 8 32
+3 0 1 4 
+3 0 4 3 
+3 1 2 5 
+3 1 5 4 
+3 3 4 7 
+3 3 7 6 
+3 4 5 8 
+3 4 8 7 
+
+CELL_TYPES 8
+5 
+5 
+5 
+5 
+5 
+5 
+5 
+5 
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_ascii.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_ascii.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..cd99e3cb9a22f40229a55b1dec07433b43f6c39e
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_ascii.vtu
@@ -0,0 +1,51 @@
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="9" NumberOfCells="8">
+      <PointData>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="ascii" RangeMin="0" RangeMax="70.71067811865476">
+          0 0 0 25 0 0
+          50 0 0 0 25 0
+          25 25 0 50 25 0
+          0 50 0 25 50 0
+          50 50 0
+          <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="0" RangeMax="8">
+          0 1 4 0 4 3
+          1 2 5 1 5 4
+          3 4 7 3 7 6
+          4 5 8 4 8 7
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="ascii" RangeMin="3" RangeMax="24">
+          3 6 9 12 15 18
+          21 24
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="ascii" RangeMin="5" RangeMax="5">
+          5 5 5 5 5 5
+          5 5
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_binary.vtk b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_binary.vtk
new file mode 100644
index 0000000000000000000000000000000000000000..b4372d9f4aa53b0b5d2535120209171eeb972c86
Binary files /dev/null and b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_binary.vtk differ
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_compressed_paraview.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_compressed_paraview.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..9c1139ba2f9e6226589c72d8324ab000b42befbc
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_compressed_paraview.vtu
@@ -0,0 +1,42 @@
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="9" NumberOfCells="8">
+      <PointData>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="70.71067811865476">
+          AQAAAAAAAAAAgAAAAAAAAGwAAAAAAAAAIwAAAAAAAAA=eJxjYEAGJxwRbA8nBqxyIBrGBqnBpgckBmODaAgbAMC5CXM=
+          <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="8">
+          AQAAAAAAAAAAgAAAAAAAAMAAAAAAAAAAMgAAAAAAAAA=eJxjYIAARijNwoAKYHxmNHVMUJoVTRzGR9cH47OjicP4bGjqYOZwoInD+DB9AB0gAGE=
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="3" RangeMax="24">
+          AQAAAAAAAAAAgAAAAAAAAEAAAAAAAAAAHgAAAAAAAAA=eJxjZoAANijNCaV5oDQ/lBaC0qJQWgJKAwALgABt
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="5" RangeMax="5">
+          AQAAAAAAAAAAgAAAAAAAAAgAAAAAAAAACwAAAAAAAAA=eJxjZYUAAAC8ACk=
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_compressed_tnl.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_compressed_tnl.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..4decb8ea8439f6ef08b75a624bdaecc298328feb
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_compressed_tnl.vtu
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+<UnstructuredGrid>
+<Piece NumberOfPoints="9" NumberOfCells="8">
+<Points>
+<DataArray type="Float32" Name="Points" NumberOfComponents="3" format="binary">
+AQAAAAAAAABsAAAAAAAAAGwAAAAAAAAAIwAAAAAAAAA=eJxjYEAGJxwRbA8nBqxyIBrGBqnBpgckBmODaAgbAMC5CXM=
+</DataArray>
+</Points>
+<Cells>
+<DataArray type="Int32" Name="connectivity" format="binary">
+AQAAAAAAAABgAAAAAAAAAGAAAAAAAAAALwAAAAAAAAA=eJxjYGBgYARiFgYIANHMUDEmIGaFslmR5EA0O5QNotmgYiA1HFA2B1QOAA6QAGE=
+</DataArray>
+<DataArray type="Int32" Name="offsets" format="binary">
+AQAAAAAAAAAgAAAAAAAAACAAAAAAAAAAHQAAAAAAAAA=eJxjZmBgYANiTiDmAWJ+IBYCYlEglgBiAAXAAG0=
+</DataArray>
+<DataArray type="UInt8" Name="types" format="binary">
+AQAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACwAAAAAAAAA=eJxjZYUAAAC8ACk=
+</DataArray>
+</Cells>
+</Piece>
+</UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_encoded_paraview.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_encoded_paraview.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..1e9e8801a2000a644700ed9606b8e0bf0b91de3a
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_encoded_paraview.vtu
@@ -0,0 +1,42 @@
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="9" NumberOfCells="8">
+      <PointData>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="70.71067811865476">
+          bAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhBAAAAAAAAAAAAAEhCAAAAAAAAAAAAAAAAAADIQQAAAAAAAMhBAADIQQAAAAAAAEhCAADIQQAAAAAAAAAAAABIQgAAAAAAAMhBAABIQgAAAAAAAEhCAABIQgAAAAA=
+          <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              70.710678119
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="8">
+          wAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAIAAAAAAAAABQAAAAAAAAABAAAAAAAAAAUAAAAAAAAABAAAAAAAAAADAAAAAAAAAAQAAAAAAAAABwAAAAAAAAADAAAAAAAAAAcAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAUAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAABwAAAAAAAAA=
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="3" RangeMax="24">
+          QAAAAAAAAAADAAAAAAAAAAYAAAAAAAAACQAAAAAAAAAMAAAAAAAAAA8AAAAAAAAAEgAAAAAAAAAVAAAAAAAAABgAAAAAAAAA
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="5" RangeMax="5">
+          CAAAAAAAAAAFBQUFBQUFBQ==
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_encoded_tnl.vtu b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_encoded_tnl.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..1b8b7e2b0cfe76b1d783690e7d604449925ab4aa
--- /dev/null
+++ b/src/UnitTests/Meshes/data/triangles_2x2x2/minimized_encoded_tnl.vtu
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+<UnstructuredGrid>
+<Piece NumberOfPoints="9" NumberOfCells="8">
+<Points>
+<DataArray type="Float32" Name="Points" NumberOfComponents="3" format="binary">
+bAAAAAAAAAA=AAAAAAAAAAAAAAAAAADIQQAAAAAAAAAAAABIQgAAAAAAAAAAAAAAAAAAyEEAAAAAAADIQQAAyEEAAAAAAABIQgAAyEEAAAAAAAAAAAAASEIAAAAAAADIQQAASEIAAAAAAABIQgAASEIAAAAA
+</DataArray>
+</Points>
+<Cells>
+<DataArray type="Int32" Name="connectivity" format="binary">
+YAAAAAAAAAA=AAAAAAEAAAAEAAAAAAAAAAQAAAADAAAAAQAAAAIAAAAFAAAAAQAAAAUAAAAEAAAAAwAAAAQAAAAHAAAAAwAAAAcAAAAGAAAABAAAAAUAAAAIAAAABAAAAAgAAAAHAAAA
+</DataArray>
+<DataArray type="Int32" Name="offsets" format="binary">
+IAAAAAAAAAA=AwAAAAYAAAAJAAAADAAAAA8AAAASAAAAFQAAABgAAAA=
+</DataArray>
+<DataArray type="UInt8" Name="types" format="binary">
+CAAAAAAAAAA=BQUFBQUFBQU=
+</DataArray>
+</Cells>
+</Piece>
+</UnstructuredGrid>
+</VTKFile>
diff --git a/src/UnitTests/Meshes/data/triangles_2x2x2/original_with_metadata_and_cell_data.vtk b/src/UnitTests/Meshes/data/triangles_2x2x2/original_with_metadata_and_cell_data.vtk
new file mode 100644
index 0000000000000000000000000000000000000000..79ca1dea42223d7dabeca6b267bdcdcff72f3c60
Binary files /dev/null and b/src/UnitTests/Meshes/data/triangles_2x2x2/original_with_metadata_and_cell_data.vtk differ