]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Remove template arguments form internal data structures of Triangulation 10329/head
authorPeter Munch <peterrmuench@gmail.com>
Thu, 30 Apr 2020 10:18:06 +0000 (12:18 +0200)
committerPeter Munch <peterrmuench@gmail.com>
Wed, 27 May 2020 10:33:07 +0000 (12:33 +0200)
15 files changed:
include/deal.II/grid/tria.h
include/deal.II/grid/tria_accessor.h
include/deal.II/grid/tria_accessor.templates.h
include/deal.II/grid/tria_faces.h
include/deal.II/grid/tria_levels.h
include/deal.II/grid/tria_object.h
include/deal.II/grid/tria_objects.h
source/grid/tria.cc
source/grid/tria_accessor.cc
source/grid/tria_faces.cc
source/grid/tria_levels.cc
source/grid/tria_objects.cc
source/grid/tria_objects.inst.in
tests/serialization/triangulation_01.output
tests/serialization/triangulation_02.output

index d5d7652f1c4f37c40fac328b9f7895e9218b7550..0b01ce88d3a30e22f37ef67b613a60231e5a0b51 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <deal.II/grid/tria_description.h>
 #include <deal.II/grid/tria_iterator_selector.h>
+#include <deal.II/grid/tria_levels.h>
 
 #include <boost/serialization/map.hpp>
 #include <boost/serialization/split_member.hpp>
@@ -78,12 +79,8 @@ namespace internal
 {
   namespace TriangulationImplementation
   {
-    template <int dim>
-    class TriaLevel;
-    template <int dim>
     class TriaFaces;
 
-    template <typename>
     class TriaObjects;
 
     /**
@@ -3829,8 +3826,8 @@ private:
    * Array of pointers pointing to the objects storing the cell data on the
    * different levels.
    */
-  std::vector<std::unique_ptr<
-    dealii::internal::TriangulationImplementation::TriaLevel<dim>>>
+  std::vector<
+    std::unique_ptr<dealii::internal::TriangulationImplementation::TriaLevel>>
     levels;
 
   /**
@@ -3838,7 +3835,7 @@ private:
    * in 2D it contains data concerning lines and in 3D quads and lines.  All
    * of these have no level and are therefore treated separately.
    */
-  std::unique_ptr<dealii::internal::TriangulationImplementation::TriaFaces<dim>>
+  std::unique_ptr<dealii::internal::TriangulationImplementation::TriaFaces>
     faces;
 
 
@@ -3937,7 +3934,6 @@ private:
 
   friend struct dealii::internal::TriangulationImplementation::Implementation;
 
-  template <typename>
   friend class dealii::internal::TriangulationImplementation::TriaObjects;
 
   friend class CellId;
@@ -4048,8 +4044,8 @@ Triangulation<dim, spacedim>::save(Archive &ar, const unsigned int) const
 
   unsigned int n_levels = levels.size();
   ar &         n_levels;
-  for (unsigned int i = 0; i < levels.size(); ++i)
-    ar &levels[i];
+  for (const auto &level : levels)
+    ar &level;
 
   // boost dereferences a nullptr when serializing a nullptr
   // at least up to 1.65.1. This causes problems with clang-5.
@@ -4091,12 +4087,11 @@ Triangulation<dim, spacedim>::load(Archive &ar, const unsigned int)
   unsigned int size;
   ar &         size;
   levels.resize(size);
-  for (unsigned int i = 0; i < levels.size(); ++i)
+  for (auto &level_ : levels)
     {
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<dim>>
-          level;
-      ar &level;
-      levels[i] = std::move(level);
+      std::unique_ptr<internal::TriangulationImplementation::TriaLevel> level;
+      ar &                                                              level;
+      level_ = std::move(level);
     }
 
   // Workaround for nullptr, see in save().
@@ -4115,8 +4110,8 @@ Triangulation<dim, spacedim>::load(Archive &ar, const unsigned int)
   // they are easy enough to rebuild upon re-loading data. do
   // this here. don't forget to first resize the fields appropriately
   {
-    for (unsigned int l = 0; l < levels.size(); ++l)
-      levels[l]->active_cell_indices.resize(levels[l]->refine_flags.size());
+    for (auto &level : levels)
+      level->active_cell_indices.resize(level->refine_flags.size());
     reset_active_cell_indices();
   }
 
index db99e0544be698108d38540a3fffef5381c026b9..90bf46d6c512bbd0b7e57791bcc8c02e2bfe88f1 100644 (file)
@@ -54,7 +54,6 @@ namespace internal
   {
     template <int dim>
     class TriaObject;
-    template <typename G>
     class TriaObjects;
     struct Implementation;
   } // namespace TriangulationImplementation
@@ -419,8 +418,7 @@ protected:
   /**
    * Access to the other objects of a Triangulation with same dimension.
    */
-  dealii::internal::TriangulationImplementation::TriaObjects<
-    dealii::internal::TriangulationImplementation::TriaObject<structdim>> &
+  dealii::internal::TriangulationImplementation::TriaObjects &
   objects() const;
 
 public:
index cc42c32c432723b1f8ee8daa0f984a71a13cc929..bbd52503eef40d3f11958496fc97fcd5ba1a5cf4 100644 (file)
@@ -206,14 +206,14 @@ TriaAccessorBase<structdim, dim, spacedim>::operator++()
       // have to set the level, since
       // dim!=1 and the object therefore
       // has no level)
-      if (this->present_index >= static_cast<int>(objects().cells.size()))
+      if (this->present_index >= static_cast<int>(objects().n_objects()))
         this->present_index = -1;
     }
   else
     {
       while (this->present_index >=
              static_cast<int>(
-               this->tria->levels[this->present_level]->cells.cells.size()))
+               this->tria->levels[this->present_level]->cells.n_objects()))
         {
           // no -> go one level up until we find
           // one with more than zero cells
@@ -259,127 +259,29 @@ TriaAccessorBase<structdim, dim, spacedim>::operator--()
             }
           // else
           this->present_index =
-            this->tria->levels[this->present_level]->cells.cells.size() - 1;
+            this->tria->levels[this->present_level]->cells.n_objects() - 1;
         }
     }
 }
 
 
-namespace internal
-{
-  namespace TriaAccessorBaseImplementation
-  {
-    /**
-     * Out of a face object, get the sub-objects of dimensionality given by
-     * the last argument.
-     */
-    template <int dim>
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<1>> *
-    get_objects(
-      dealii::internal::TriangulationImplementation::TriaFaces<dim> *faces,
-      const std::integral_constant<int, 1>)
-    {
-      return &faces->lines;
-    }
-
-
-    template <int dim>
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<2>> *
-    get_objects(
-      dealii::internal::TriangulationImplementation::TriaFaces<dim> *faces,
-      const std::integral_constant<int, 2>)
-    {
-      return &faces->quads;
-    }
-
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<1>> *
-      get_objects(dealii::internal::TriangulationImplementation::TriaFaces<1> *,
-                  const std::integral_constant<int, 1>)
-    {
-      Assert(false, ExcInternalError());
-      return nullptr;
-    }
-
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<2>> *
-      get_objects(dealii::internal::TriangulationImplementation::TriaFaces<2> *,
-                  const std::integral_constant<int, 2>)
-    {
-      Assert(false, ExcInternalError());
-      return nullptr;
-    }
-
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<3>> *
-      get_objects(dealii::internal::TriangulationImplementation::TriaFaces<3> *,
-                  const std::integral_constant<int, 3>)
-    {
-      Assert(false, ExcInternalError());
-      return nullptr;
-    }
-
-    /**
-     * This function should never be used, but we need it for the template
-     * instantiation of TriaAccessorBase<dim,dim,spacedim>::objects() const
-     */
-    template <int dim>
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<3>> *
-    get_objects(dealii::internal::TriangulationImplementation::TriaFaces<dim> *,
-                const std::integral_constant<int, 3>)
-    {
-      Assert(false, ExcInternalError());
-      return nullptr;
-    }
 
-    /**
-     * Copy the above functions for cell objects.
-     */
-    template <int structdim, int dim>
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<structdim>> *
-    get_objects(
-      dealii::internal::TriangulationImplementation::TriaObjects<
-        dealii::internal::TriangulationImplementation::TriaObject<dim>> *,
-      const std::integral_constant<int, structdim>)
-    {
-      Assert(false, ExcInternalError());
-      return nullptr;
-    }
+template <int structdim, int dim, int spacedim>
+inline dealii::internal::TriangulationImplementation::TriaObjects &
+TriaAccessorBase<structdim, dim, spacedim>::objects() const
+{
+  if (structdim == dim)
+    return this->tria->levels[this->present_level]->cells;
 
-    template <int dim>
-    inline dealii::internal::TriangulationImplementation::TriaObjects<
-      dealii::internal::TriangulationImplementation::TriaObject<dim>> *
-    get_objects(
-      dealii::internal::TriangulationImplementation::TriaObjects<
-        dealii::internal::TriangulationImplementation::TriaObject<dim>> *cells,
-      const std::integral_constant<int, dim>)
-    {
-      return cells;
-    }
-  } // namespace TriaAccessorBaseImplementation
-} // namespace internal
+  if (structdim == 1 && dim > 1)
+    return this->tria->faces->lines;
 
+  if (structdim == 2 && dim > 2)
+    return this->tria->faces->quads;
 
+  Assert(false, ExcInternalError());
 
-template <int structdim, int dim, int spacedim>
-inline dealii::internal::TriangulationImplementation::TriaObjects<
-  dealii::internal::TriangulationImplementation::TriaObject<structdim>> &
-TriaAccessorBase<structdim, dim, spacedim>::objects() const
-{
-  if (structdim != dim)
-    // get sub-objects. note that the
-    // current class is only used for
-    // objects that are *not* cells
-    return *dealii::internal::TriaAccessorBaseImplementation::get_objects(
-      this->tria->faces.get(), std::integral_constant<int, structdim>());
-  else
-    return *dealii::internal::TriaAccessorBaseImplementation::get_objects(
-      &this->tria->levels[this->present_level]->cells,
-      std::integral_constant<int, structdim>());
+  return this->tria->levels[this->present_level]->cells;
 }
 
 
@@ -623,7 +525,7 @@ namespace internal
       line_index(const TriaAccessor<2, dim, spacedim> &accessor,
                  const unsigned int                    i)
       {
-        return accessor.objects().cells[accessor.present_index].face(i);
+        return accessor.objects().get_object(accessor.present_index).face(i);
       }
 
 
@@ -668,7 +570,7 @@ namespace internal
                  const unsigned int                    i)
       {
         return accessor.tria->levels[accessor.present_level]
-          ->cells.cells[accessor.present_index]
+          ->cells.get_object(accessor.present_index)
           .face(i);
       }
 
@@ -697,8 +599,10 @@ namespace internal
       face_orientation(const TriaAccessor<3, dim, spacedim> &accessor,
                        const unsigned int                    face)
       {
-        return (accessor.tria->levels[accessor.present_level]
-                  ->cells.face_orientation(accessor.present_index, face));
+        return get_bit(
+          accessor.tria->levels[accessor.present_level]->face_orientations
+            [accessor.present_index * GeometryInfo<3>::faces_per_cell + face],
+          0 /*=orientation_bit*/);
       }
 
 
@@ -766,11 +670,11 @@ namespace internal
         AssertIndexRange(face, GeometryInfo<3>::faces_per_cell);
         Assert(accessor.present_index * GeometryInfo<3>::faces_per_cell + face <
                  accessor.tria->levels[accessor.present_level]
-                   ->cells.face_orientations.size(),
+                   ->face_orientations.size(),
                ExcInternalError());
 
         return get_bit(
-          accessor.tria->levels[accessor.present_level]->cells.face_orientations
+          accessor.tria->levels[accessor.present_level]->face_orientations
             [accessor.present_index * GeometryInfo<3>::faces_per_cell + face],
           1 /*=flip_bit*/);
       }
@@ -803,11 +707,11 @@ namespace internal
         AssertIndexRange(face, GeometryInfo<3>::faces_per_cell);
         Assert(accessor.present_index * GeometryInfo<3>::faces_per_cell + face <
                  accessor.tria->levels[accessor.present_level]
-                   ->cells.face_orientations.size(),
+                   ->face_orientations.size(),
                ExcInternalError());
 
         return get_bit(
-          accessor.tria->levels[accessor.present_level]->cells.face_orientations
+          accessor.tria->levels[accessor.present_level]->face_orientations
             [accessor.present_index * GeometryInfo<3>::faces_per_cell + face],
           2 /*=rotation_bit*/);
       }
@@ -838,12 +742,14 @@ namespace internal
       line_orientation(const TriaAccessor<2, 3, spacedim> &accessor,
                        const unsigned int                  line)
       {
-        // quads as part of 3d hexes can have non-standard orientation
+        Assert(accessor.used(), TriaAccessorExceptions::ExcCellNotUsed());
+        Assert(accessor.present_index * GeometryInfo<3>::lines_per_face + line <
+                 accessor.tria->faces->quads_line_orientations.size(),
+               ExcInternalError());
 
-        // TODO: why is this face_orientation, not line_orientation as in the
-        // setter function?
-        return accessor.tria->faces->quads.face_orientation(
-          accessor.present_index, line);
+        // quads as part of 3d hexes can have non-standard orientation
+        return accessor.tria->faces->quads_line_orientations
+          [accessor.present_index * GeometryInfo<3>::lines_per_face + line];
       }
 
 
@@ -959,10 +865,10 @@ namespace internal
         AssertIndexRange(face, GeometryInfo<3>::faces_per_cell);
         Assert(accessor.present_index * GeometryInfo<3>::faces_per_cell + face <
                  accessor.tria->levels[accessor.present_level]
-                   ->cells.face_orientations.size(),
+                   ->face_orientations.size(),
                ExcInternalError());
         set_bit(
-          accessor.tria->levels[accessor.present_level]->cells.face_orientations
+          accessor.tria->levels[accessor.present_level]->face_orientations
             [accessor.present_index * GeometryInfo<3>::faces_per_cell + face],
           0 /*=orientation_bit*/,
           value);
@@ -992,11 +898,11 @@ namespace internal
         AssertIndexRange(face, GeometryInfo<3>::faces_per_cell);
         Assert(accessor.present_index * GeometryInfo<3>::faces_per_cell + face <
                  accessor.tria->levels[accessor.present_level]
-                   ->cells.face_orientations.size(),
+                   ->face_orientations.size(),
                ExcInternalError());
 
         set_bit(
-          accessor.tria->levels[accessor.present_level]->cells.face_orientations
+          accessor.tria->levels[accessor.present_level]->face_orientations
             [accessor.present_index * GeometryInfo<3>::faces_per_cell + face],
           1 /*=flip_bit*/,
           value);
@@ -1026,11 +932,11 @@ namespace internal
         AssertIndexRange(face, GeometryInfo<3>::faces_per_cell);
         Assert(accessor.present_index * GeometryInfo<3>::faces_per_cell + face <
                  accessor.tria->levels[accessor.present_level]
-                   ->cells.face_orientations.size(),
+                   ->face_orientations.size(),
                ExcInternalError());
 
         set_bit(
-          accessor.tria->levels[accessor.present_level]->cells.face_orientations
+          accessor.tria->levels[accessor.present_level]->face_orientations
             [accessor.present_index * GeometryInfo<3>::faces_per_cell + face],
           2 /*=rotation_bit*/,
           value);
@@ -1070,12 +976,11 @@ namespace internal
         Assert(accessor.used(), TriaAccessorExceptions::ExcCellNotUsed());
         AssertIndexRange(line, GeometryInfo<3>::lines_per_face);
         Assert(accessor.present_index * GeometryInfo<3>::lines_per_face + line <
-                 accessor.tria->faces->quads.line_orientations.size(),
+                 accessor.tria->faces->quads_line_orientations.size(),
                ExcInternalError());
-        // quads as part of 3d hexes
-        // can have non-standard
-        // orientation
-        accessor.tria->faces->quads.line_orientations
+
+        // quads as part of 3d hexes can have non-standard orientation
+        accessor.tria->faces->quads_line_orientations
           [accessor.present_index * GeometryInfo<3>::lines_per_face + line] =
           value;
       }
@@ -1101,7 +1006,9 @@ namespace internal
       vertex_index(const TriaAccessor<1, dim, spacedim> &accessor,
                    const unsigned int                    corner)
       {
-        return accessor.objects().cells[accessor.present_index].face(corner);
+        return accessor.objects()
+          .get_object(accessor.present_index)
+          .face(corner);
       }
 
 
index b286dae3726572aceb103ff83b25629d9baa599f..3a5cc68cb97736afe85edf32f39d2b9bc4be2213 100644 (file)
@@ -29,7 +29,7 @@ namespace internal
   namespace TriangulationImplementation
   {
     /**
-     * General template for information belonging to the faces of a
+     * This class contains information belonging to the faces of a
      * triangulation. These classes are similar to the TriaLevel classes. As
      * cells are organised in a hierarchical structure of levels, each
      * triangulation consists of several such TriaLevels. However the faces of
@@ -40,100 +40,57 @@ namespace internal
      * store the information belonging to the faces of a triangulation
      * separately from the TriaLevel classes.
      *
-     * This general template is only provided to enable a specialization
-     * below.
-     *
      * @author Tobias Leicht, 2006
+     * @author Peter Munch, 2020
      */
-
-    template <int dim>
     class TriaFaces
     {
     public:
       /**
-       * Constructor. This constructor is deleted to prevent the use of this
-       * template, as only the specializations should be used
+       * Constructor.
        */
-      TriaFaces() = delete;
-    };
-
+      TriaFaces(const unsigned int dim);
 
-
-    /**
-     * Faces only have a meaning in <tt>dim@>=1</tt>. In <tt>dim=1</tt> they
-     * are vertices, which are handled differently, so only for
-     * <tt>dim@>=2</tt> the use of TriaFaces is reasonable, for <tt>dim=1</tt>
-     * the class is empty.
-     */
-    template <>
-    class TriaFaces<1>
-    {
-    public:
       /**
-       * Determine an estimate for the memory consumption (in bytes) of this
-       * object. Of course this returns 0.
+       * Default constructor for Boost::serialization.
        */
-      std::size_t
-      memory_consumption() const;
+      TriaFaces() = default;
 
       /**
-       * Read or write the data of this object to or from a stream for the
-       * purpose of serialization
+       * Dimension of the underlying triangulation.
        */
-      template <class Archive>
-      void
-      serialize(Archive &ar, const unsigned int version);
-    };
-
-    /**
-     * In <tt>dim=2</tt> the cells are quads, the faces accordingly are lines.
-     */
-    template <>
-    class TriaFaces<2>
-    {
-    public:
-      /**
-       * The TriaObject containing the data of lines.
-       */
-      TriaObjects<TriaObject<1>> lines;
+      unsigned int dim;
 
-    public:
       /**
-       * Determine an estimate for the memory consumption (in bytes) of this
-       * object.
+       * The TriaObject containing the data of quads.
+       *
+       * @note Used only for dim=3.
        */
-      std::size_t
-      memory_consumption() const;
+      TriaObjects quads;
 
       /**
-       * Read or write the data of this object to or from a stream for the
-       * purpose of serialization
+       * Orientation of each line of each quad.
+       *
+       * @note Used only for dim=3.
        */
-      template <class Archive>
-      void
-      serialize(Archive &ar, const unsigned int version);
-    };
+      std::vector<unsigned char> quads_line_orientations;
 
-    /**
-     * In <tt>dim=3</tt> the cells are hexes, the faces accordingly are quads.
-     * In addition to that we also have to enable the storage of lines.
-     */
-    template <>
-    class TriaFaces<3>
-    {
-    public:
       /**
-       * The TriaObject containing the data of quads.
+       * The TriaObject containing the data of lines.
+       *
+       * @note Used only for dim>1.
        */
-
-      TriaObjectsQuad3D quads;
+      TriaObjects lines;
 
       /**
-       * The TriaObject containing the data of lines.
+       * Reserve space for line_orientations.
+       *
+       * @note Used only for dim=3.
        */
-      TriaObjects<TriaObject<1>> lines;
+      void
+      reserve_space(const unsigned int new_quads_in_pairs,
+                    const unsigned int new_quads_single = 0);
 
-    public:
       /**
        * Determine an estimate for the memory consumption (in bytes) of this
        * object.
@@ -154,25 +111,15 @@ namespace internal
 
     template <class Archive>
     void
-    TriaFaces<1>::serialize(Archive &, const unsigned int)
-    {}
-
-
-
-    template <class Archive>
-    void
-    TriaFaces<2>::serialize(Archive &ar, const unsigned int)
+    TriaFaces::serialize(Archive &ar, const unsigned int)
     {
-      ar &lines;
-    }
-
+      ar &dim;
 
+      if (dim == 2)
+        ar &lines;
 
-    template <class Archive>
-    void
-    TriaFaces<3>::serialize(Archive &ar, const unsigned int)
-    {
-      ar &quads &lines;
+      if (dim == 3)
+        ar &quads &lines &quads_line_orientations;
     }
   } // namespace TriangulationImplementation
 } // namespace internal
index 92d157253263f82f57bb1d6d1ee0cf1ddb6119b5..72e6a88fb36e89f16b1731e5ee5cc13db7a3773f 100644 (file)
@@ -54,10 +54,32 @@ namespace internal
      *
      * @author Wolfgang Bangerth, Guido Kanschat, 1998, 2007
      */
-    template <int dim>
     class TriaLevel
     {
     public:
+      /**
+       * Constructor.
+       *
+       * @param dim Dimension of the Triangulation.
+       */
+      TriaLevel(const unsigned int dim)
+        : dim(dim)
+        , cells(dim)
+      {}
+
+      /**
+       * Default constructor (needed by Boost).
+       */
+      TriaLevel()
+        : dim(numbers::invalid_unsigned_int)
+        , cells(numbers::invalid_unsigned_int)
+      {}
+
+      /**
+       * Dimension of the Triangulation.
+       */
+      unsigned int dim;
+
       /**
        * @p RefinementCase<dim>::Type flags for the cells to be refined with
        * or not (RefinementCase<dim>::no_refinement). The meaning what a cell
@@ -159,8 +181,33 @@ namespace internal
       /**
        * The object containing the data on lines and related functions
        */
-      TriaObjects<TriaObject<dim>> cells;
+      TriaObjects cells;
 
+      /**
+       * For edges, we enforce a standard convention that opposite
+       * edges should be parallel. Now, that's enforceable in most
+       * cases, and we have code that makes sure that if a mesh allows
+       * this to happen, that we have this convention. We also know
+       * that it is always possible to have opposite faces have
+       * parallel normal vectors. (For both things, see the paper by
+       * Agelek, Anderson, Bangerth, Barth in the ACM Transactions on
+       * Mathematical Software mentioned in the documentation of the
+       * GridReordering class.)
+       *
+       * The problem is that we originally had another condition, namely that
+       * faces 0, 2 and 4 have normals that point into the cell, while the
+       * other faces have normals that point outward. It turns out that this
+       * is not always possible. In effect, we have to store whether the
+       * normal vector of each face of each cell follows this convention or
+       * not. If this is so, then this variable stores a @p true value,
+       * otherwise a @p false value.
+       *
+       * In effect, this field has <code>6*n_cells</code> elements, being the
+       * number of cells times the six faces each has.
+       *
+       * @note Only needed for dim=3.
+       */
+      std::vector<unsigned char> face_orientations;
 
       /**
        * Reserve enough space to accommodate @p total_cells cells on this
@@ -211,90 +258,13 @@ namespace internal
                      << ", which is not as expected.");
     };
 
-    // TODO: Replace TriaObjectsHex to avoid this specialization
-
-    /**
-     * Specialization of TriaLevels for 3D. Since we need TriaObjectsHex
-     * instead of TriaObjects. Refer to the documentation of the general class
-     * template for details.
-     */
-    template <>
-    class TriaLevel<3>
-    {
-    public:
-      std::vector<std::uint8_t>        refine_flags;
-      std::vector<bool>                coarsen_flags;
-      std::vector<unsigned int>        active_cell_indices;
-      std::vector<std::pair<int, int>> neighbors;
-      std::vector<types::subdomain_id> subdomain_ids;
-      std::vector<types::subdomain_id> level_subdomain_ids;
-      std::vector<int>                 parents;
-
-      // The following is not used
-      // since we don't support
-      // codim=1 meshes in 3d; only
-      // needed to allow
-      // compilation
-      // TODO[TH]: this is no longer true and might be a bug.
-      std::vector<bool> direction_flags;
-
-      TriaObjectsHex cells;
-
-
-      void
-      reserve_space(const unsigned int total_cells,
-                    const unsigned int dimension,
-                    const unsigned int space_dimension);
-      void
-      monitor_memory(const unsigned int true_dimension) const;
-      std::size_t
-      memory_consumption() const;
-
-      /**
-       * Read or write the data of this object to or from a stream for the
-       * purpose of serialization
-       */
-      template <class Archive>
-      void
-      serialize(Archive &ar, const unsigned int version);
-
-      /**
-       * Exception
-       */
-      DeclException2(ExcMemoryInexact,
-                     int,
-                     int,
-                     << "The containers have sizes " << arg1 << " and " << arg2
-                     << ", which is not as expected.");
-    };
-
-
 
-    template <int dim>
     template <class Archive>
     void
-    TriaLevel<dim>::serialize(Archive &ar, const unsigned int)
+    TriaLevel::serialize(Archive &ar, const unsigned int)
     {
-      ar &refine_flags &coarsen_flags;
-
-      // do not serialize 'active_cell_indices' here. instead of storing them
-      // to the stream and re-reading them again later, we just rebuild them
-      // in Triangulation::load()
+      ar &dim;
 
-      ar &neighbors;
-      ar &subdomain_ids;
-      ar &level_subdomain_ids;
-      ar &parents;
-      ar &direction_flags;
-      ar &cells;
-    }
-
-
-
-    template <class Archive>
-    void
-    TriaLevel<3>::serialize(Archive &ar, const unsigned int)
-    {
       ar &refine_flags &coarsen_flags;
 
       // do not serialize 'active_cell_indices' here. instead of storing them
@@ -307,13 +277,14 @@ namespace internal
       ar &parents;
       ar &direction_flags;
       ar &cells;
+
+      if (dim == 3)
+        ar &face_orientations;
     }
 
   } // namespace TriangulationImplementation
 } // namespace internal
 
-
-
 DEAL_II_NAMESPACE_CLOSE
 
 #endif
index 07a999e04b83472dc94c807f44d4320ba68db40a..339ed868a685ceb34c6019c16ff77c1d894ca42b 100644 (file)
 
 #include <deal.II/base/config.h>
 
+#include <deal.II/base/array_view.h>
 #include <deal.II/base/exceptions.h>
 #include <deal.II/base/geometry_info.h>
 
 DEAL_II_NAMESPACE_OPEN
 
+#ifndef DOXYGEN
+namespace internal
+{
+  namespace TriangulationImplementation
+  {
+    class TriaObjectView;
+  }
+} // namespace internal
+#endif
+
 namespace internal
 {
   namespace TriangulationImplementation
@@ -35,6 +46,9 @@ namespace internal
      * by the (global) indices of their faces, which are cells of dimension
      * <tt>structdim-1</tt> or vertices if <tt>structdim=1</tt>.
      *
+     * @note This class is only used during setup of the Triangulation and its
+     *   content is saved into a single long vector inside of `TriaObjects`.
+     *
      * @author Guido Kanschat, 2007
      */
     template <int structdim>
@@ -104,12 +118,70 @@ namespace internal
       void
       serialize(Archive &ar, const unsigned int version);
 
-    protected:
+    private:
       /**
        * Global indices of the face iterators bounding this cell if dim@>1,
        * and the two vertex indices in 1d.
        */
       int faces[GeometryInfo<structdim>::faces_per_cell];
+
+      friend TriaObjectView;
+    };
+
+    /**
+     * View onto the current geometric object and its faces.
+     *
+     * @note The geometric objects are not saved as separate instances of
+     * TriaObject but in a single vector in TriaObjects.
+     */
+    class TriaObjectView
+    {
+    public:
+      /**
+       * Constructor.
+       *
+       * @param faces ArrayView inside of the vector in TriaObjects.
+       */
+      TriaObjectView(const ArrayView<int> &faces)
+        : faces(faces)
+      {}
+
+      /**
+       * Store the content of @p other in the vector of TriaObjects.
+       */
+      template <int structdim>
+      TriaObjectView &
+      operator=(const TriaObject<structdim> &other)
+      {
+        for (unsigned int i = 0; i < faces.size(); ++i)
+          faces[i] = other.faces[i];
+
+        return *this;
+      }
+
+      /**
+       * Return index of the @p i-th face.
+       */
+      int
+      face(const unsigned int i) const
+      {
+        return faces[i];
+      }
+
+      /**
+       * Set index of the @p i-th face.
+       */
+      void
+      set_face(const unsigned int i, const int index)
+      {
+        faces[i] = index;
+      }
+
+    private:
+      /**
+       * List of face this object is made up.
+       */
+      const ArrayView<int> faces;
     };
 
     //----------------------------------------------------------------------//
index e13eeee8d0fe55a25b2a0f361b026da384a8ff47..21c7166915637ac15ca64be04c150d254bf6239f 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <deal.II/base/config.h>
 
+#include <deal.II/base/array_view.h>
 #include <deal.II/base/exceptions.h>
 #include <deal.II/base/geometry_info.h>
 
 
 DEAL_II_NAMESPACE_OPEN
 
-// TODO: This should all be cleaned up. Currently, only a single
-// function in the library makes use of the odd specializations, and
-// this function is Triangulation::execute_refinement() in 3D. I
-// assume, that the other refinement functions would profit from using
-// next_free_single_object() and next_free_pair_object, but they seem
-// to get around it.
-
-// TODO: The TriaObjects class contains a std::vector<G>. This is only an
-// efficient storage scheme if G is relatively well packed, i.e. it's not a
-// bool and then an integer and then a double, etc. Verify that this is
-// actually the case.
-
 // Forward declarations
 #ifndef DOXYGEN
 template <int dim, int spacedim>
@@ -63,9 +52,8 @@ namespace internal
      * classes.
      *
      * @author Tobias Leicht, Guido Kanschat, 2006, 2007, 2012
+     * @author Peter Munch, 2020
      */
-
-    template <typename G>
     class TriaObjects
     {
     public:
@@ -74,11 +62,32 @@ namespace internal
        */
       TriaObjects();
 
+      /**
+       * Constructor for a specific dimension.
+       */
+      TriaObjects(unsigned int structdim);
+
+    private:
+      unsigned int structdim;
+
       /**
        * Vector of the objects belonging to this level. The index of the
        * object equals the index in this container.
        */
-      std::vector<G> cells;
+      std::vector<int> cells;
+
+    public:
+      /**
+       * Return number of geometric objects stored by this class.
+       */
+      unsigned int
+      n_objects() const;
+
+      /**
+       * Return a view on the @p index-th geometric object.
+       */
+      TriaObjectView
+      get_object(const unsigned int index);
 
       /**
        * Index of the even children of an object. Since when objects are
@@ -98,7 +107,7 @@ namespace internal
        * vector might be replaced by vector<vector<bool> > (dim, vector<bool>
        * (n_cells)) which is more memory efficient.
        */
-      std::vector<RefinementCase<G::dimension>> refinement_cases;
+      std::vector<std::uint8_t> refinement_cases;
 
       /**
        * Vector storing whether an object is used in the @p cells vector.
@@ -202,8 +211,8 @@ namespace internal
        *
        * @todo This function is not instantiated for the codim-one case
        */
-      template <int dim, int spacedim>
-      dealii::TriaRawIterator<dealii::TriaAccessor<G::dimension, dim, spacedim>>
+      template <int structdim, int dim, int spacedim>
+      dealii::TriaRawIterator<dealii::TriaAccessor<structdim, dim, spacedim>>
       next_free_single_object(const Triangulation<dim, spacedim> &tria);
 
       /**
@@ -217,8 +226,8 @@ namespace internal
        *
        * @todo This function is not instantiated for the codim-one case
        */
-      template <int dim, int spacedim>
-      dealii::TriaRawIterator<dealii::TriaAccessor<G::dimension, dim, spacedim>>
+      template <int structdim, int dim, int spacedim>
+      dealii::TriaRawIterator<dealii::TriaAccessor<structdim, dim, spacedim>>
       next_free_pair_object(const Triangulation<dim, spacedim> &tria);
 
       /**
@@ -230,30 +239,6 @@ namespace internal
       next_free_hex(const Triangulation<dim, spacedim> &tria,
                     const unsigned int                  level);
 
-      /**
-       * Clear all the data contained in this object.
-       */
-      void
-      clear();
-
-      /**
-       * The orientation of the face number <code>face</code> of the cell with
-       * number <code>cell</code>. The return value is <code>true</code>, if
-       * the normal vector points the usual way
-       * (GeometryInfo::unit_normal_orientation) and <code>false</code> else.
-       *
-       * The result is always <code>true</code> in this class, but derived
-       * classes will reimplement this.
-       *
-       * @warning There is a bug in the class hierarchy right now. Avoid ever
-       * calling this function through a reference, since you might end up
-       * with the base class function instead of the derived class. Still, we
-       * do not want to make it virtual for efficiency reasons.
-       */
-      bool
-      face_orientation(const unsigned int cell, const unsigned int face) const;
-
-
       /**
        * Access to user pointers.
        */
@@ -415,187 +400,71 @@ namespace internal
       mutable UserDataType user_data_type;
     };
 
-    /**
-     * For hexahedra the data of TriaObjects needs to be extended, as we can
-     * obtain faces (quads) in non-standard-orientation, therefore we declare
-     * a class TriaObjectsHex, which additionally contains a bool-vector of
-     * the face-orientations.
-     */
-    class TriaObjectsHex : public TriaObjects<TriaObject<3>>
-    {
-    public:
-      /**
-       * The orientation of the face number <code>face</code> of the cell with
-       * number <code>cell</code>. The return value is <code>true</code>, if
-       * the normal vector points the usual way
-       * (GeometryInfo::unit_normal_orientation) and <code>false</code> if
-       * they point in opposite direction.
-       */
-      bool
-      face_orientation(const unsigned int cell, const unsigned int face) const;
-
 
-      /**
-       * For edges, we enforce a standard convention that opposite
-       * edges should be parallel. Now, that's enforceable in most
-       * cases, and we have code that makes sure that if a mesh allows
-       * this to happen, that we have this convention. We also know
-       * that it is always possible to have opposite faces have
-       * parallel normal vectors. (For both things, see the paper by
-       * Agelek, Anderson, Bangerth, Barth in the ACM Transactions on
-       * Mathematical Software mentioned in the documentation of the
-       * GridReordering class.)
-       *
-       * The problem is that we originally had another condition, namely that
-       * faces 0, 2 and 6 have normals that point into the cell, while the
-       * other faces have normals that point outward. It turns out that this
-       * is not always possible. In effect, we have to store whether the
-       * normal vector of each face of each cell follows this convention or
-       * not. If this is so, then this variable stores a @p true value,
-       * otherwise a @p false value.
-       *
-       * In effect, this field has <code>6*n_cells</code> elements, being the
-       * number of cells times the six faces each has.
-       *
-       * flip = rotation by 180 degrees
-       *
-       * rotation by 90 degrees
-       */
-      std::vector<unsigned char> face_orientations;
+    //----------------------------------------------------------------------//
 
-      /**
-       * Assert that enough space is allocated to accommodate
-       * <code>new_objs</code> new objects. This function does not only call
-       * <code>vector::reserve()</code>, but does really append the needed
-       * elements.
-       */
-      void
-      reserve_space(const unsigned int new_objs);
+    inline unsigned int
+    TriaObjects::n_objects() const
+    {
+      // assume that each cell has the same number of faces
 
-      /**
-       * Clear all the data contained in this object.
-       */
-      void
-      clear();
+      unsigned int faces_per_cell = 1;
 
-      /**
-       * Check the memory consistency of the different containers. Should only
-       * be called with the preprocessor flag @p DEBUG set. The function
-       * should be called from the functions of the higher TriaLevel classes.
-       */
-      void
-      monitor_memory(const unsigned int true_dimension) const;
+      if (this->structdim == 1)
+        faces_per_cell = GeometryInfo<1>::faces_per_cell;
+      else if (this->structdim == 2)
+        faces_per_cell = GeometryInfo<2>::faces_per_cell;
+      else if (this->structdim == 3)
+        faces_per_cell = GeometryInfo<3>::faces_per_cell;
+      else
+        AssertThrow(false, ExcNotImplemented());
 
-      /**
-       * Determine an estimate for the memory consumption (in bytes) of this
-       * object.
-       */
-      std::size_t
-      memory_consumption() const;
+      return cells.size() / faces_per_cell;
+    }
 
-      /**
-       * Read or write the data of this object to or from a stream for the
-       * purpose of serialization
-       */
-      template <class Archive>
-      void
-      serialize(Archive &ar, const unsigned int version);
-    };
 
 
-    /**
-     * For quadrilaterals in 3D the data of TriaObjects needs to be extended,
-     * as we can obtain faces (quads) with lines in non-standard-orientation,
-     * therefore we declare a class TriaObjectsQuad3D, which additionally
-     * contains a bool-vector of the line-orientations.
-     */
-    class TriaObjectsQuad3D : public TriaObjects<TriaObject<2>>
+    inline TriaObjectView
+    TriaObjects::get_object(const unsigned int index)
     {
-    public:
-      /**
-       * The orientation of the face number <code>face</code> of the cell with
-       * number <code>cell</code>. The return value is <code>true</code>, if
-       * the normal vector points the usual way
-       * (GeometryInfo::unit_normal_orientation) and <code>false</code> if
-       * they point in opposite direction.
-       */
-      bool
-      face_orientation(const unsigned int cell, const unsigned int face) const;
-
-
-      /**
-       * In effect, this field has <code>4*n_quads</code> elements, being the
-       * number of quads times the four lines each has.
-       */
-      std::vector<unsigned char> line_orientations;
+      // assume that each cell has the same number of faces
 
-      /**
-       * Assert that enough space is allocated to accommodate
-       * <code>new_quads_in_pairs</code> new quads, stored in pairs, plus
-       * <code>new_quads_single</code> stored individually. This function does
-       * not only call <code>vector::reserve()</code>, but does really append
-       * the needed elements.
-       */
-      void
-      reserve_space(const unsigned int new_quads_in_pairs,
-                    const unsigned int new_quads_single = 0);
-
-      /**
-       * Clear all the data contained in this object.
-       */
-      void
-      clear();
+      unsigned int faces_per_cell = 1;
 
-      /**
-       * Check the memory consistency of the different containers. Should only
-       * be called with the preprocessor flag @p DEBUG set. The function
-       * should be called from the functions of the higher TriaLevel classes.
-       */
-      void
-      monitor_memory(const unsigned int true_dimension) const;
-
-      /**
-       * Determine an estimate for the memory consumption (in bytes) of this
-       * object.
-       */
-      std::size_t
-      memory_consumption() const;
+      if (this->structdim == 1)
+        faces_per_cell = GeometryInfo<1>::faces_per_cell;
+      else if (this->structdim == 2)
+        faces_per_cell = GeometryInfo<2>::faces_per_cell;
+      else if (this->structdim == 3)
+        faces_per_cell = GeometryInfo<3>::faces_per_cell;
+      else
+        AssertThrow(false, ExcNotImplemented());
 
-      /**
-       * Read or write the data of this object to or from a stream for the
-       * purpose of serialization
-       */
-      template <class Archive>
-      void
-      serialize(Archive &ar, const unsigned int version);
-    };
+      return {
+        ArrayView<int>(cells.data() + index * faces_per_cell, faces_per_cell)};
+    }
 
-    //----------------------------------------------------------------------//
 
 
-    template <typename G>
-    inline TriaObjects<G>::BoundaryOrMaterialId::BoundaryOrMaterialId()
+    inline TriaObjects::BoundaryOrMaterialId::BoundaryOrMaterialId()
     {
       material_id = numbers::invalid_material_id;
     }
 
 
 
-    template <typename G>
-    std::size_t
-    TriaObjects<G>::BoundaryOrMaterialId::memory_consumption()
+    inline std::size_t
+    TriaObjects::BoundaryOrMaterialId::memory_consumption()
     {
       return sizeof(BoundaryOrMaterialId);
     }
 
 
 
-    template <typename G>
     template <class Archive>
     void
-    TriaObjects<G>::BoundaryOrMaterialId::serialize(
-      Archive &ar,
-      const unsigned int /*version*/)
+    TriaObjects::BoundaryOrMaterialId::serialize(Archive &ar,
+                                                 const unsigned int /*version*/)
     {
       // serialize this
       // structure by
@@ -612,18 +481,8 @@ namespace internal
     }
 
 
-    template <typename G>
-    inline bool
-    TriaObjects<G>::face_orientation(const unsigned int,
-                                     const unsigned int) const
-    {
-      return true;
-    }
-
-
-    template <typename G>
     inline void *&
-    TriaObjects<G>::user_pointer(const unsigned int i)
+    TriaObjects::user_pointer(const unsigned int i)
     {
       Assert(user_data_type == data_unknown || user_data_type == data_pointer,
              ExcPointerIndexClash());
@@ -634,9 +493,8 @@ namespace internal
     }
 
 
-    template <typename G>
     inline const void *
-    TriaObjects<G>::user_pointer(const unsigned int i) const
+    TriaObjects::user_pointer(const unsigned int i) const
     {
       Assert(user_data_type == data_unknown || user_data_type == data_pointer,
              ExcPointerIndexClash());
@@ -647,9 +505,8 @@ namespace internal
     }
 
 
-    template <typename G>
     inline unsigned int &
-    TriaObjects<G>::user_index(const unsigned int i)
+    TriaObjects::user_index(const unsigned int i)
     {
       Assert(user_data_type == data_unknown || user_data_type == data_index,
              ExcPointerIndexClash());
@@ -660,27 +517,34 @@ namespace internal
     }
 
 
-    template <typename G>
     inline void
-    TriaObjects<G>::clear_user_data(const unsigned int i)
+    TriaObjects::clear_user_data(const unsigned int i)
     {
       AssertIndexRange(i, user_data.size());
       user_data[i].i = 0;
     }
 
 
-    template <typename G>
-    inline TriaObjects<G>::TriaObjects()
-      : next_free_single(numbers::invalid_unsigned_int)
+    inline TriaObjects::TriaObjects()
+      : structdim(-1)
+      , next_free_single(numbers::invalid_unsigned_int)
+      , next_free_pair(numbers::invalid_unsigned_int)
+      , reverse_order_next_free_single(false)
+      , user_data_type(data_unknown)
+    {}
+
+
+    inline TriaObjects::TriaObjects(const unsigned int structdim)
+      : structdim(structdim)
+      , next_free_single(numbers::invalid_unsigned_int)
       , next_free_pair(numbers::invalid_unsigned_int)
       , reverse_order_next_free_single(false)
       , user_data_type(data_unknown)
     {}
 
 
-    template <typename G>
     inline unsigned int
-    TriaObjects<G>::user_index(const unsigned int i) const
+    TriaObjects::user_index(const unsigned int i) const
     {
       Assert(user_data_type == data_unknown || user_data_type == data_index,
              ExcPointerIndexClash());
@@ -691,28 +555,25 @@ namespace internal
     }
 
 
-    template <typename G>
     inline void
-    TriaObjects<G>::clear_user_data()
+    TriaObjects::clear_user_data()
     {
       user_data_type = data_unknown;
-      for (unsigned int i = 0; i < user_data.size(); ++i)
-        user_data[i].p = nullptr;
+      for (auto &data : user_data)
+        data.p = nullptr;
     }
 
 
-    template <typename G>
     inline void
-    TriaObjects<G>::clear_user_flags()
+    TriaObjects::clear_user_flags()
     {
       user_flags.assign(user_flags.size(), false);
     }
 
 
-    template <typename G>
     template <class Archive>
     void
-    TriaObjects<G>::UserData::serialize(Archive &ar, const unsigned int)
+    TriaObjects::UserData::serialize(Archive &ar, const unsigned int)
     {
       // serialize this as an integer
       ar &i;
@@ -720,11 +581,11 @@ namespace internal
 
 
 
-    template <typename G>
     template <class Archive>
     void
-    TriaObjects<G>::serialize(Archive &ar, const unsigned int)
+    TriaObjects::serialize(Archive &ar, const unsigned int)
     {
+      ar &structdim;
       ar &cells &children;
       ar &       refinement_cases;
       ar &       used;
@@ -736,63 +597,18 @@ namespace internal
     }
 
 
-    template <class Archive>
-    void
-    TriaObjectsHex::serialize(Archive &ar, const unsigned int version)
-    {
-      this->TriaObjects<TriaObject<3>>::serialize(ar, version);
-
-      ar &face_orientations;
-    }
-
-
-    template <class Archive>
-    void
-    TriaObjectsQuad3D::serialize(Archive &ar, const unsigned int version)
-    {
-      this->TriaObjects<TriaObject<2>>::serialize(ar, version);
-
-      ar &line_orientations;
-    }
-
-
-    //----------------------------------------------------------------------//
-
-    inline bool
-    TriaObjectsHex::face_orientation(const unsigned int cell,
-                                     const unsigned int face) const
-    {
-      AssertIndexRange(cell,
-                       face_orientations.size() /
-                         GeometryInfo<3>::faces_per_cell);
-      AssertIndexRange(face, GeometryInfo<3>::faces_per_cell);
-
-      return face_orientations[cell * GeometryInfo<3>::faces_per_cell + face] &
-             1;
-    }
-
-    //----------------------------------------------------------------------//
-
-    inline bool
-    TriaObjectsQuad3D::face_orientation(const unsigned int cell,
-                                        const unsigned int face) const
-    {
-      return line_orientations[cell * GeometryInfo<2>::faces_per_cell + face] &
-             1;
-    }
-
-
     //----------------------------------------------------------------------//
 
-    template <class G>
-    template <int dim, int spacedim>
-    dealii::TriaRawIterator<dealii::TriaAccessor<G::dimension, dim, spacedim>>
-    TriaObjects<G>::next_free_single_object(
+    template <int structdim_, int dim, int spacedim>
+    dealii::TriaRawIterator<dealii::TriaAccessor<structdim_, dim, spacedim>>
+    TriaObjects::next_free_single_object(
       const Triangulation<dim, spacedim> &tria)
     {
       // TODO: Think of a way to ensure that we are using the correct
       // triangulation, i.e. the one containing *this.
 
+      AssertDimension(structdim_, this->structdim);
+
       int pos = next_free_single, last = used.size() - 1;
       if (!reverse_order_next_free_single)
         {
@@ -828,24 +644,24 @@ namespace internal
           else
             // no valid single object anymore
             return dealii::TriaRawIterator<
-              dealii::TriaAccessor<G::dimension, dim, spacedim>>(&tria, -1, -1);
+              dealii::TriaAccessor<structdim_, dim, spacedim>>(&tria, -1, -1);
         }
 
       return dealii::TriaRawIterator<
-        dealii::TriaAccessor<G::dimension, dim, spacedim>>(&tria, 0, pos);
+        dealii::TriaAccessor<structdim_, dim, spacedim>>(&tria, 0, pos);
     }
 
 
 
-    template <class G>
-    template <int dim, int spacedim>
-    dealii::TriaRawIterator<dealii::TriaAccessor<G::dimension, dim, spacedim>>
-    TriaObjects<G>::next_free_pair_object(
-      const Triangulation<dim, spacedim> &tria)
+    template <int structdim_, int dim, int spacedim>
+    dealii::TriaRawIterator<dealii::TriaAccessor<structdim_, dim, spacedim>>
+    TriaObjects::next_free_pair_object(const Triangulation<dim, spacedim> &tria)
     {
       // TODO: Think of a way to ensure that we are using the correct
       // triangulation, i.e. the one containing *this.
 
+      AssertDimension(structdim_, this->structdim);
+
       int pos = next_free_pair, last = used.size() - 1;
       for (; pos < last; ++pos)
         if (!used[pos])
@@ -858,22 +674,13 @@ namespace internal
       if (pos >= last)
         // no free slot
         return dealii::TriaRawIterator<
-          dealii::TriaAccessor<G::dimension, dim, spacedim>>(&tria, -1, -1);
+          dealii::TriaAccessor<structdim_, dim, spacedim>>(&tria, -1, -1);
       else
         next_free_pair = pos + 2;
 
       return dealii::TriaRawIterator<
-        dealii::TriaAccessor<G::dimension, dim, spacedim>>(&tria, 0, pos);
+        dealii::TriaAccessor<structdim_, dim, spacedim>>(&tria, 0, pos);
     }
-
-
-
-    // declaration of explicit specializations
-
-    template <>
-    void
-    TriaObjects<TriaObject<2>>::monitor_memory(const unsigned int) const;
-
   } // namespace TriangulationImplementation
 } // namespace internal
 
index 71a4988d24d39c6f87a1eb30aef37a5bb0dfdbae..8e8857d12c22ceead759a14abc9e57a42ea21d4b 100644 (file)
@@ -1765,8 +1765,8 @@ namespace internal
 
         // reserve enough space
         triangulation.levels.push_back(
-          std::make_unique<
-            internal::TriangulationImplementation::TriaLevel<dim>>());
+          std::make_unique<internal::TriangulationImplementation::TriaLevel>(
+            dim));
         triangulation.levels[0]->reserve_space(cells.size(), dim, spacedim);
         triangulation.levels[0]->cells.reserve_space(0, cells.size());
 
@@ -2035,10 +2035,11 @@ namespace internal
 
         // reserve enough space
         triangulation.levels.push_back(
-          std::make_unique<
-            internal::TriangulationImplementation::TriaLevel<dim>>());
-        triangulation.faces = std::make_unique<
-          internal::TriangulationImplementation::TriaFaces<dim>>();
+          std::make_unique<internal::TriangulationImplementation::TriaLevel>(
+            dim));
+        triangulation.faces =
+          std::make_unique<internal::TriangulationImplementation::TriaFaces>(
+            dim);
         triangulation.levels[0]->reserve_space(cells.size(), dim, spacedim);
         triangulation.faces->lines.reserve_space(0, needed_lines.size());
         triangulation.levels[0]->cells.reserve_space(0, cells.size());
@@ -2415,10 +2416,11 @@ namespace internal
         // for the lines
         // reserve enough space
         triangulation.levels.push_back(
-          std::make_unique<
-            internal::TriangulationImplementation::TriaLevel<dim>>());
-        triangulation.faces = std::make_unique<
-          internal::TriangulationImplementation::TriaFaces<dim>>();
+          std::make_unique<internal::TriangulationImplementation::TriaLevel>(
+            dim));
+        triangulation.faces =
+          std::make_unique<internal::TriangulationImplementation::TriaFaces>(
+            dim);
         triangulation.levels[0]->reserve_space(cells.size(), dim, spacedim);
         triangulation.faces->lines.reserve_space(0, needed_lines.size());
 
@@ -2647,6 +2649,7 @@ namespace internal
         // the arrays of the Triangulation
         //
         // first reserve enough space
+        triangulation.faces->reserve_space(0, needed_quads.size());
         triangulation.faces->quads.reserve_space(0, needed_quads.size());
 
         {
@@ -3905,22 +3908,22 @@ namespace internal
                                    l < triangulation.levels.size();
                                    ++l)
                                 for (unsigned int h = 0;
-                                     h < triangulation.levels[l]
-                                           ->cells.cells.size();
+                                     h <
+                                     triangulation.levels[l]->cells.n_objects();
                                      ++h)
                                   for (const unsigned int q :
                                        GeometryInfo<dim>::face_indices())
                                     {
                                       const int index = triangulation.levels[l]
-                                                          ->cells.cells[h]
+                                                          ->cells.get_object(h)
                                                           .face(q);
                                       if (index == switch_1_index)
                                         triangulation.levels[l]
-                                          ->cells.cells[h]
+                                          ->cells.get_object(h)
                                           .set_face(q, switch_2_index);
                                       else if (index == switch_2_index)
                                         triangulation.levels[l]
-                                          ->cells.cells[h]
+                                          ->cells.get_object(h)
                                           .set_face(q, switch_1_index);
                                     }
                               // now we have to copy
@@ -4653,7 +4656,7 @@ namespace internal
                 {
                   triangulation.levels.push_back(
                     std::make_unique<
-                      internal::TriangulationImplementation::TriaLevel<dim>>());
+                      internal::TriangulationImplementation::TriaLevel>(dim));
                   break;
                 }
         }
@@ -4897,7 +4900,7 @@ namespace internal
                 {
                   triangulation.levels.push_back(
                     std::make_unique<
-                      internal::TriangulationImplementation::TriaLevel<dim>>());
+                      internal::TriangulationImplementation::TriaLevel>(dim));
                   break;
                 }
         }
@@ -5228,7 +5231,7 @@ namespace internal
                 {
                   triangulation.levels.push_back(
                     std::make_unique<
-                      internal::TriangulationImplementation::TriaLevel<dim>>());
+                      internal::TriangulationImplementation::TriaLevel>(dim));
                   break;
                 }
         }
@@ -5469,6 +5472,8 @@ namespace internal
         triangulation.faces->lines.reserve_space(needed_lines_pair,
                                                  needed_lines_single);
         // reserve space for needed_quads new quads stored in pairs
+        triangulation.faces->reserve_space(needed_quads_pair,
+                                           needed_quads_single);
         triangulation.faces->quads.reserve_space(needed_quads_pair,
                                                  needed_quads_single);
 
@@ -5549,7 +5554,7 @@ namespace internal
                 // two child lines (++ takes care of the end of the
                 // vector)
                 next_unused_line =
-                  triangulation.faces->lines.next_free_pair_object(
+                  triangulation.faces->lines.template next_free_pair_object<1>(
                     triangulation);
                 Assert(next_unused_line.state() == IteratorState::valid,
                        ExcInternalError());
@@ -5677,8 +5682,8 @@ namespace internal
                       new_line;
 
                     new_line =
-                      triangulation.faces->lines.next_free_single_object(
-                        triangulation);
+                      triangulation.faces->lines
+                        .template next_free_single_object<1>(triangulation);
                     Assert(
                       new_line->used() == false,
                       ExcMessage(
@@ -5739,8 +5744,8 @@ namespace internal
                       new_quads[2];
 
                     next_unused_quad =
-                      triangulation.faces->quads.next_free_pair_object(
-                        triangulation);
+                      triangulation.faces->quads
+                        .template next_free_pair_object<2>(triangulation);
                     new_quads[0] = next_unused_quad;
                     Assert(
                       new_quads[0]->used() == false,
@@ -5897,8 +5902,9 @@ namespace internal
                               new_child[2];
 
                             new_child[0] = new_child[1] =
-                              triangulation.faces->lines.next_free_pair_object(
-                                triangulation);
+                              triangulation.faces->lines
+                                .template next_free_pair_object<1>(
+                                  triangulation);
                             ++new_child[1];
 
                             new_child[0]->set_used_flag();
@@ -5912,19 +5918,20 @@ namespace internal
                             // loop over all quads and replace the old
                             // lines
                             for (unsigned int q = 0;
-                                 q < triangulation.faces->quads.cells.size();
+                                 q < triangulation.faces->quads.n_objects();
                                  ++q)
                               for (unsigned int l = 0;
                                    l < GeometryInfo<dim>::lines_per_face;
                                    ++l)
                                 {
                                   const int this_index =
-                                    triangulation.faces->quads.cells[q].face(l);
+                                    triangulation.faces->quads.get_object(q)
+                                      .face(l);
                                   if (this_index == old_index_0)
-                                    triangulation.faces->quads.cells[q]
+                                    triangulation.faces->quads.get_object(q)
                                       .set_face(l, new_index_0);
                                   else if (this_index == old_index_1)
-                                    triangulation.faces->quads.cells[q]
+                                    triangulation.faces->quads.get_object(q)
                                       .set_face(l, new_index_1);
                                 }
                             // now we have to copy all information of
@@ -6012,22 +6019,22 @@ namespace internal
                                  ++l)
                               for (unsigned int h = 0;
                                    h <
-                                   triangulation.levels[l]->cells.cells.size();
+                                   triangulation.levels[l]->cells.n_objects();
                                    ++h)
                                 for (const unsigned int q :
                                      GeometryInfo<dim>::face_indices())
                                   {
                                     const int face_index =
                                       triangulation.levels[l]
-                                        ->cells.cells[h]
+                                        ->cells.get_object(h)
                                         .face(q);
                                     if (face_index == switch_1_index)
                                       triangulation.levels[l]
-                                        ->cells.cells[h]
+                                        ->cells.get_object(h)
                                         .set_face(q, switch_2_index);
                                     else if (face_index == switch_2_index)
                                       triangulation.levels[l]
-                                        ->cells.cells[h]
+                                        ->cells.get_object(h)
                                         .set_face(q, switch_1_index);
                                   }
                             // now we have to copy all information of
@@ -6222,8 +6229,9 @@ namespace internal
                             // now search a slot for the two
                             // child lines
                             next_unused_line =
-                              triangulation.faces->lines.next_free_pair_object(
-                                triangulation);
+                              triangulation.faces->lines
+                                .template next_free_pair_object<1>(
+                                  triangulation);
 
                             // set the child pointer of the present
                             // line
@@ -6328,8 +6336,8 @@ namespace internal
                           // anisotropically and the two lines end up
                           // as children of new line
                           next_unused_line =
-                            triangulation.faces->lines.next_free_pair_object(
-                              triangulation);
+                            triangulation.faces->lines
+                              .template next_free_pair_object<1>(triangulation);
 
                         new_lines[i] = next_unused_line;
                         ++next_unused_line;
@@ -6444,8 +6452,8 @@ namespace internal
                       new_quads[4];
 
                     next_unused_quad =
-                      triangulation.faces->quads.next_free_pair_object(
-                        triangulation);
+                      triangulation.faces->quads
+                        .template next_free_pair_object<2>(triangulation);
 
                     new_quads[0] = next_unused_quad;
                     Assert(
@@ -6461,8 +6469,8 @@ namespace internal
                         "Internal error: We want to use a cell during refinement that should be unused, but turns out not to be."));
 
                     next_unused_quad =
-                      triangulation.faces->quads.next_free_pair_object(
-                        triangulation);
+                      triangulation.faces->quads
+                        .template next_free_pair_object<2>(triangulation);
                     new_quads[2] = next_unused_quad;
                     Assert(
                       new_quads[2]->used() == false,
@@ -6634,8 +6642,8 @@ namespace internal
                   for (unsigned int i = 0; i < n_new_lines; ++i)
                     {
                       new_lines[i] =
-                        triangulation.faces->lines.next_free_single_object(
-                          triangulation);
+                        triangulation.faces->lines
+                          .template next_free_single_object<1>(triangulation);
 
                       Assert(
                         new_lines[i]->used() == false,
@@ -6661,8 +6669,8 @@ namespace internal
                   for (unsigned int i = 0; i < n_new_quads; ++i)
                     {
                       new_quads[i] =
-                        triangulation.faces->quads.next_free_single_object(
-                          triangulation);
+                        triangulation.faces->quads
+                          .template next_free_single_object<2>(triangulation);
 
                       Assert(
                         new_quads[i]->used() == false,
@@ -10409,9 +10417,8 @@ Triangulation<dim, spacedim>::copy_triangulation(
   smooth_grid            = other_tria.smooth_grid;
 
   if (dim > 1)
-    faces =
-      std::make_unique<internal::TriangulationImplementation::TriaFaces<dim>>(
-        *other_tria.faces);
+    faces = std::make_unique<internal::TriangulationImplementation::TriaFaces>(
+      *other_tria.faces);
 
   auto bdry_iterator = other_tria.manifold.begin();
   for (; bdry_iterator != other_tria.manifold.end(); ++bdry_iterator)
@@ -10421,7 +10428,7 @@ Triangulation<dim, spacedim>::copy_triangulation(
   levels.reserve(other_tria.levels.size());
   for (unsigned int level = 0; level < other_tria.levels.size(); ++level)
     levels.push_back(
-      std::make_unique<internal::TriangulationImplementation::TriaLevel<dim>>(
+      std::make_unique<internal::TriangulationImplementation::TriaLevel>(
         *other_tria.levels[level]));
 
   number_cache = other_tria.number_cache;
@@ -10962,37 +10969,30 @@ Triangulation<dim, spacedim>::get_anisotropic_refinement_flag() const
 namespace
 {
   // clear user data of cells
-  template <int dim>
   void
-  clear_user_data(
-    std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<dim>>>
-      &levels)
+  clear_user_data(std::vector<std::unique_ptr<
+                    internal::TriangulationImplementation::TriaLevel>> &levels)
   {
-    for (unsigned int level = 0; level < levels.size(); ++level)
-      levels[level]->cells.clear_user_data();
+    for (auto &level : levels)
+      level->cells.clear_user_data();
   }
 
 
   // clear user data of faces
-  void clear_user_data(internal::TriangulationImplementation::TriaFaces<1> *)
-  {
-    // nothing to do in 1d
-  }
-
-
   void
-    clear_user_data(internal::TriangulationImplementation::TriaFaces<2> *faces)
+  clear_user_data(internal::TriangulationImplementation::TriaFaces *faces)
   {
-    faces->lines.clear_user_data();
-  }
+    if (faces->dim == 2)
+      {
+        faces->lines.clear_user_data();
+      }
 
 
-  void
-    clear_user_data(internal::TriangulationImplementation::TriaFaces<3> *faces)
-  {
-    faces->lines.clear_user_data();
-    faces->quads.clear_user_data();
+    if (faces->dim == 3)
+      {
+        faces->lines.clear_user_data();
+        faces->quads.clear_user_data();
+      }
   }
 } // namespace
 
@@ -11010,24 +11010,27 @@ Triangulation<dim, spacedim>::clear_user_data()
 
 namespace
 {
-  void clear_user_flags_line(
-    std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<1>>>
-      &levels,
-    internal::TriangulationImplementation::TriaFaces<1> *)
-  {
-    for (const auto &level : levels)
-      level->cells.clear_user_flags();
-  }
-
-  template <int dim>
   void
   clear_user_flags_line(
+    unsigned int dim,
     std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<dim>>> &,
-    internal::TriangulationImplementation::TriaFaces<dim> *faces)
+      std::unique_ptr<internal::TriangulationImplementation::TriaLevel>>
+      &                                               levels,
+    internal::TriangulationImplementation::TriaFaces *faces)
   {
-    faces->lines.clear_user_flags();
+    if (dim == 1)
+      {
+        for (const auto &level : levels)
+          level->cells.clear_user_flags();
+      }
+    else if (dim == 2 || dim == 3)
+      {
+        faces->lines.clear_user_flags();
+      }
+    else
+      {
+        Assert(false, ExcNotImplemented())
+      }
   }
 } // namespace
 
@@ -11036,39 +11039,38 @@ template <int dim, int spacedim>
 void
 Triangulation<dim, spacedim>::clear_user_flags_line()
 {
-  dealii::clear_user_flags_line(levels, faces.get());
+  dealii::clear_user_flags_line(dim, levels, faces.get());
 }
 
 
 
 namespace
 {
-  void clear_user_flags_quad(
-    std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<1>>> &,
-    internal::TriangulationImplementation::TriaFaces<1> *)
-  {
-    // nothing to do in 1d
-  }
-
-  void clear_user_flags_quad(
-    std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<2>>>
-      &levels,
-    internal::TriangulationImplementation::TriaFaces<2> *)
-  {
-    for (const auto &level : levels)
-      level->cells.clear_user_flags();
-  }
-
-  template <int dim>
   void
   clear_user_flags_quad(
+    unsigned int dim,
     std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<dim>>> &,
-    internal::TriangulationImplementation::TriaFaces<dim> *faces)
+      std::unique_ptr<internal::TriangulationImplementation::TriaLevel>>
+      &                                               levels,
+    internal::TriangulationImplementation::TriaFaces *faces)
   {
-    faces->quads.clear_user_flags();
+    if (dim == 1)
+      {
+        // nothing to do in 1d
+      }
+    else if (dim == 2)
+      {
+        for (const auto &level : levels)
+          level->cells.clear_user_flags();
+      }
+    else if (dim == 3)
+      {
+        faces->quads.clear_user_flags();
+      }
+    else
+      {
+        Assert(false, ExcNotImplemented())
+      }
   }
 } // namespace
 
@@ -11077,38 +11079,38 @@ template <int dim, int spacedim>
 void
 Triangulation<dim, spacedim>::clear_user_flags_quad()
 {
-  dealii::clear_user_flags_quad(levels, faces.get());
+  dealii::clear_user_flags_quad(dim, levels, faces.get());
 }
 
 
 
 namespace
 {
-  void clear_user_flags_hex(
-    std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<1>>> &,
-    internal::TriangulationImplementation::TriaFaces<1> *)
-  {
-    // nothing to do in 1d
-  }
-
-
-  void clear_user_flags_hex(
-    std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<2>>> &,
-    internal::TriangulationImplementation::TriaFaces<2> *)
-  {
-    // nothing to do in 2d
-  }
-
-  void clear_user_flags_hex(
+  void
+  clear_user_flags_hex(
+    unsigned int dim,
     std::vector<
-      std::unique_ptr<internal::TriangulationImplementation::TriaLevel<3>>>
+      std::unique_ptr<internal::TriangulationImplementation::TriaLevel>>
       &levels,
-    internal::TriangulationImplementation::TriaFaces<3> *)
+    internal::TriangulationImplementation::TriaFaces *)
   {
-    for (const auto &level : levels)
-      level->cells.clear_user_flags();
+    if (dim == 1)
+      {
+        // nothing to do in 1d
+      }
+    else if (dim == 2)
+      {
+        // nothing to do in 2d
+      }
+    else if (dim == 3)
+      {
+        for (const auto &level : levels)
+          level->cells.clear_user_flags();
+      }
+    else
+      {
+        Assert(false, ExcNotImplemented())
+      }
   }
 } // namespace
 
@@ -11117,7 +11119,7 @@ template <int dim, int spacedim>
 void
 Triangulation<dim, spacedim>::clear_user_flags_hex()
 {
-  dealii::clear_user_flags_hex(levels, faces.get());
+  dealii::clear_user_flags_hex(dim, levels, faces.get());
 }
 
 
@@ -11986,14 +11988,14 @@ typename Triangulation<dim, spacedim>::cell_iterator
 Triangulation<dim, spacedim>::last() const
 {
   const unsigned int level = levels.size() - 1;
-  if (levels[level]->cells.cells.size() == 0)
+  if (levels[level]->cells.n_objects() == 0)
     return end(level);
 
   // find the last raw iterator on
   // this level
   raw_cell_iterator ri(const_cast<Triangulation<dim, spacedim> *>(this),
                        level,
-                       levels[level]->cells.cells.size() - 1);
+                       levels[level]->cells.n_objects() - 1);
 
   // then move to the last used one
   if (ri->used() == true)
@@ -12312,7 +12314,7 @@ Triangulation<dim, spacedim>::begin_raw_line(const unsigned int level) const
         // triangulation.
         Assert(level < levels.size(), ExcInvalidLevel(level, levels.size()));
 
-        if (level >= levels.size() || levels[level]->cells.cells.size() == 0)
+        if (level >= levels.size() || levels[level]->cells.n_objects() == 0)
           return end_line();
 
         return raw_line_iterator(
@@ -12402,7 +12404,7 @@ Triangulation<dim, spacedim>::begin_raw_quad(const unsigned int level) const
           // triangulation.
           Assert(level < levels.size(), ExcInvalidLevel(level, levels.size()));
 
-          if (level >= levels.size() || levels[level]->cells.cells.size() == 0)
+          if (level >= levels.size() || levels[level]->cells.n_objects() == 0)
             return end_quad();
 
           return raw_quad_iterator(
@@ -12502,7 +12504,7 @@ Triangulation<dim, spacedim>::begin_raw_hex(const unsigned int level) const
           // triangulation.
           Assert(level < levels.size(), ExcInvalidLevel(level, levels.size()));
 
-          if (level >= levels.size() || levels[level]->cells.cells.size() == 0)
+          if (level >= levels.size() || levels[level]->cells.n_objects() == 0)
             return end_hex();
 
           return raw_hex_iterator(
@@ -12781,7 +12783,7 @@ unsigned int
 Triangulation<1, 1>::n_raw_lines(const unsigned int level) const
 {
   AssertIndexRange(level, n_levels());
-  return levels[level]->cells.cells.size();
+  return levels[level]->cells.n_objects();
 }
 
 
@@ -12800,7 +12802,7 @@ unsigned int
 Triangulation<1, 2>::n_raw_lines(const unsigned int level) const
 {
   AssertIndexRange(level, n_levels());
-  return levels[level]->cells.cells.size();
+  return levels[level]->cells.n_objects();
 }
 
 
@@ -12818,7 +12820,7 @@ unsigned int
 Triangulation<1, 3>::n_raw_lines(const unsigned int level) const
 {
   AssertIndexRange(level, n_levels());
-  return levels[level]->cells.cells.size();
+  return levels[level]->cells.n_objects();
 }
 
 template <>
@@ -12844,7 +12846,7 @@ template <int dim, int spacedim>
 unsigned int
 Triangulation<dim, spacedim>::n_raw_lines() const
 {
-  return faces->lines.cells.size();
+  return faces->lines.n_objects();
 }
 
 
@@ -13047,7 +13049,7 @@ unsigned int
 Triangulation<2, 2>::n_raw_quads(const unsigned int level) const
 {
   AssertIndexRange(level, n_levels());
-  return levels[level]->cells.cells.size();
+  return levels[level]->cells.n_objects();
 }
 
 
@@ -13057,7 +13059,7 @@ unsigned int
 Triangulation<2, 3>::n_raw_quads(const unsigned int level) const
 {
   AssertIndexRange(level, n_levels());
-  return levels[level]->cells.cells.size();
+  return levels[level]->cells.n_objects();
 }
 
 
@@ -13085,7 +13087,7 @@ template <>
 unsigned int
 Triangulation<3, 3>::n_raw_quads() const
 {
-  return faces->quads.cells.size();
+  return faces->quads.n_objects();
 }
 
 
@@ -13177,7 +13179,7 @@ unsigned int
 Triangulation<3, 3>::n_raw_hexs(const unsigned int level) const
 {
   AssertIndexRange(level, n_levels());
-  return levels[level]->cells.cells.size();
+  return levels[level]->cells.n_objects();
 }
 
 
@@ -13486,8 +13488,8 @@ Triangulation<dim, spacedim>::execute_refinement()
     *this, levels.size(), number_cache);
 
 #ifdef DEBUG
-  for (unsigned int level = 0; level < levels.size(); ++level)
-    levels[level]->cells.monitor_memory(dim);
+  for (const auto &level : levels)
+    level->cells.monitor_memory(dim);
 
   // check whether really all refinement flags are reset (also of
   // previously non-active cells which we may not have touched. If the
@@ -15111,8 +15113,8 @@ Triangulation<dim, spacedim>::memory_consumption() const
 {
   std::size_t mem = 0;
   mem += MemoryConsumption::memory_consumption(levels);
-  for (unsigned int i = 0; i < levels.size(); ++i)
-    mem += MemoryConsumption::memory_consumption(*levels[i]);
+  for (const auto &level : levels)
+    mem += MemoryConsumption::memory_consumption(*level);
   mem += MemoryConsumption::memory_consumption(vertices);
   mem += MemoryConsumption::memory_consumption(vertices_used);
   mem += sizeof(manifold);
index 0e584aef30cd1602fc32c081c29bcf1c13ed64dc..13654488ab62bf4705fac20316d9ddda29cf0c20 100644 (file)
@@ -1494,7 +1494,7 @@ TriaAccessor<structdim, dim, spacedim>::set(
   const internal::TriangulationImplementation::TriaObject<structdim> &object)
   const
 {
-  this->objects().cells[this->present_index] = object;
+  this->objects().get_object(this->present_index) = object;
 }
 
 
index 1dd6e930ac4bc5204a5f7b23059bcd101a673878..1f547367d4af8ff6ee0d9c204a8b9dbd2f6619c4 100644 (file)
@@ -25,25 +25,87 @@ namespace internal
 {
   namespace TriangulationImplementation
   {
+    TriaFaces::TriaFaces(const unsigned int dim)
+      : dim(dim)
+      , quads(2)
+      , lines(1)
+    {}
+
     std::size_t
-    TriaFaces<1>::memory_consumption() const
+    TriaFaces::memory_consumption() const
     {
+      if (dim == 2)
+        return MemoryConsumption::memory_consumption(lines);
+      if (dim == 3)
+        return (MemoryConsumption::memory_consumption(quads) +
+                MemoryConsumption::memory_consumption(lines));
+
       return 0;
     }
 
-
-    std::size_t
-    TriaFaces<2>::memory_consumption() const
+    void
+    TriaFaces::reserve_space(const unsigned int new_quads_in_pairs,
+                             const unsigned int new_quads_single)
     {
-      return MemoryConsumption::memory_consumption(lines);
-    }
+      AssertDimension(this->dim, 3);
 
+      Assert(new_quads_in_pairs % 2 == 0, ExcInternalError());
 
-    std::size_t
-    TriaFaces<3>::memory_consumption() const
-    {
-      return (MemoryConsumption::memory_consumption(quads) +
-              MemoryConsumption::memory_consumption(lines));
+      unsigned int next_free_single = 0;
+      unsigned int next_free_pair   = 0;
+
+      // count the number of objects, of unused single objects and of
+      // unused pairs of objects
+      unsigned int n_quads          = 0;
+      unsigned int n_unused_pairs   = 0;
+      unsigned int n_unused_singles = 0;
+      for (unsigned int i = 0; i < quads.used.size(); ++i)
+        {
+          if (quads.used[i])
+            ++n_quads;
+          else if (i + 1 < quads.used.size())
+            {
+              if (quads.used[i + 1])
+                {
+                  ++n_unused_singles;
+                  if (next_free_single == 0)
+                    next_free_single = i;
+                }
+              else
+                {
+                  ++n_unused_pairs;
+                  if (next_free_pair == 0)
+                    next_free_pair = i;
+                  ++i;
+                }
+            }
+          else
+            ++n_unused_singles;
+        }
+      Assert(n_quads + 2 * n_unused_pairs + n_unused_singles ==
+               quads.used.size(),
+             ExcInternalError());
+
+      // how many single quads are needed in addition to n_unused_quads?
+      const int additional_single_quads = new_quads_single - n_unused_singles;
+
+      unsigned int new_size =
+        quads.used.size() + new_quads_in_pairs - 2 * n_unused_pairs;
+      if (additional_single_quads > 0)
+        new_size += additional_single_quads;
+
+      // see above...
+      if (new_size > quads.n_objects())
+        {
+          // reserve the field of the derived class
+          quads_line_orientations.reserve(new_size *
+                                          GeometryInfo<2>::lines_per_cell);
+          quads_line_orientations.insert(quads_line_orientations.end(),
+                                         new_size *
+                                             GeometryInfo<2>::lines_per_cell -
+                                           quads_line_orientations.size(),
+                                         true);
+        }
     }
   } // namespace TriangulationImplementation
 } // namespace internal
index 9932ae4a0bf6738e7af615877644b0cd86e48f84..8ce78dfc9fb39d2f691a2a16099959930d3aac52 100644 (file)
@@ -24,11 +24,10 @@ namespace internal
 {
   namespace TriangulationImplementation
   {
-    template <int dim>
     void
-    TriaLevel<dim>::reserve_space(const unsigned int total_cells,
-                                  const unsigned int dimension,
-                                  const unsigned int space_dimension)
+    TriaLevel::reserve_space(const unsigned int total_cells,
+                             const unsigned int dimension,
+                             const unsigned int space_dimension)
     {
       // we need space for total_cells cells. Maybe we have more already
       // with those cells which are unused, so only allocate new space if
@@ -41,7 +40,7 @@ namespace internal
           refine_flags.reserve(total_cells);
           refine_flags.insert(refine_flags.end(),
                               total_cells - refine_flags.size(),
-                              RefinementCase<dim>::no_refinement);
+                              /*RefinementCase::no_refinement=*/0);
 
           coarsen_flags.reserve(total_cells);
           coarsen_flags.insert(coarsen_flags.end(),
@@ -82,104 +81,24 @@ namespace internal
           neighbors.insert(neighbors.end(),
                            total_cells * (2 * dimension) - neighbors.size(),
                            std::make_pair(-1, -1));
-        }
-    }
-
-
-    template <int dim>
-    void
-    TriaLevel<dim>::monitor_memory(const unsigned int true_dimension) const
-    {
-      (void)true_dimension;
-      Assert(2 * true_dimension * refine_flags.size() == neighbors.size(),
-             ExcMemoryInexact(refine_flags.size(), neighbors.size()));
-      Assert(2 * true_dimension * coarsen_flags.size() == neighbors.size(),
-             ExcMemoryInexact(coarsen_flags.size(), neighbors.size()));
-    }
-
-
-    template <int dim>
-    std::size_t
-    TriaLevel<dim>::memory_consumption() const
-    {
-      return (MemoryConsumption::memory_consumption(refine_flags) +
-              MemoryConsumption::memory_consumption(coarsen_flags) +
-              MemoryConsumption::memory_consumption(active_cell_indices) +
-              MemoryConsumption::memory_consumption(neighbors) +
-              MemoryConsumption::memory_consumption(subdomain_ids) +
-              MemoryConsumption::memory_consumption(level_subdomain_ids) +
-              MemoryConsumption::memory_consumption(parents) +
-              MemoryConsumption::memory_consumption(direction_flags) +
-              MemoryConsumption::memory_consumption(cells));
-    }
 
-    // This specialization should be only temporary, until the TriaObjects
-    // classes are straightened out.
 
-    void
-    TriaLevel<3>::reserve_space(const unsigned int total_cells,
-                                const unsigned int dimension,
-                                const unsigned int space_dimension)
-    {
-      // we need space for total_cells
-      // cells. Maybe we have more already
-      // with those cells which are unused,
-      // so only allocate new space if needed.
-      //
-      // note that all arrays should have equal
-      // sizes (checked by @p{monitor_memory}
-      if (total_cells > refine_flags.size())
-        {
-          refine_flags.reserve(total_cells);
-          refine_flags.insert(refine_flags.end(),
-                              total_cells - refine_flags.size(),
-                              RefinementCase<3>::no_refinement);
-
-          coarsen_flags.reserve(total_cells);
-          coarsen_flags.insert(coarsen_flags.end(),
-                               total_cells - coarsen_flags.size(),
-                               false);
-
-          active_cell_indices.reserve(total_cells);
-          active_cell_indices.insert(active_cell_indices.end(),
-                                     total_cells - active_cell_indices.size(),
-                                     numbers::invalid_unsigned_int);
-
-          subdomain_ids.reserve(total_cells);
-          subdomain_ids.insert(subdomain_ids.end(),
-                               total_cells - subdomain_ids.size(),
-                               0);
-
-          level_subdomain_ids.reserve(total_cells);
-          level_subdomain_ids.insert(level_subdomain_ids.end(),
-                                     total_cells - level_subdomain_ids.size(),
-                                     0);
-
-          if (dimension < space_dimension)
+          if (dim == 3)
             {
-              direction_flags.reserve(total_cells);
-              direction_flags.insert(direction_flags.end(),
-                                     total_cells - direction_flags.size(),
-                                     true);
+              face_orientations.reserve(total_cells *
+                                        GeometryInfo<3>::faces_per_cell);
+              face_orientations.insert(face_orientations.end(),
+                                       total_cells *
+                                           GeometryInfo<3>::faces_per_cell -
+                                         face_orientations.size(),
+                                       true);
             }
-          else
-            direction_flags.clear();
-
-          parents.reserve((total_cells + 1) / 2);
-          parents.insert(parents.end(),
-                         (total_cells + 1) / 2 - parents.size(),
-                         -1);
-
-          neighbors.reserve(total_cells * (2 * dimension));
-          neighbors.insert(neighbors.end(),
-                           total_cells * (2 * dimension) - neighbors.size(),
-                           std::make_pair(-1, -1));
         }
     }
 
 
     void
-    TriaLevel<3>::monitor_memory(const unsigned int true_dimension) const
+    TriaLevel::monitor_memory(const unsigned int true_dimension) const
     {
       (void)true_dimension;
       Assert(2 * true_dimension * refine_flags.size() == neighbors.size(),
@@ -190,13 +109,14 @@ namespace internal
 
 
     std::size_t
-    TriaLevel<3>::memory_consumption() const
+    TriaLevel::memory_consumption() const
     {
       return (MemoryConsumption::memory_consumption(refine_flags) +
               MemoryConsumption::memory_consumption(coarsen_flags) +
               MemoryConsumption::memory_consumption(active_cell_indices) +
               MemoryConsumption::memory_consumption(neighbors) +
               MemoryConsumption::memory_consumption(subdomain_ids) +
+              MemoryConsumption::memory_consumption(level_subdomain_ids) +
               MemoryConsumption::memory_consumption(parents) +
               MemoryConsumption::memory_consumption(direction_flags) +
               MemoryConsumption::memory_consumption(cells));
@@ -204,8 +124,4 @@ namespace internal
   } // namespace TriangulationImplementation
 } // namespace internal
 
-
-template class internal::TriangulationImplementation::TriaLevel<1>;
-template class internal::TriangulationImplementation::TriaLevel<2>;
-
 DEAL_II_NAMESPACE_CLOSE
index 05800a2042af19ee7fd47fbe7103ad3ca7c72f6a..d21a5e72c9a68c00b2a634de047b1b65b114e77f 100644 (file)
@@ -31,117 +31,202 @@ namespace internal
 {
   namespace TriangulationImplementation
   {
-    template <class G>
     void
-    TriaObjects<G>::reserve_space(const unsigned int new_objects_in_pairs,
-                                  const unsigned int new_objects_single)
+    TriaObjects::reserve_space(const unsigned int new_objects_in_pairs,
+                               const unsigned int new_objects_single)
     {
-      Assert(new_objects_in_pairs % 2 == 0, ExcInternalError());
-
-      next_free_single               = 0;
-      next_free_pair                 = 0;
-      reverse_order_next_free_single = false;
-
-      // count the number of objects, of unused single objects and of
-      // unused pairs of objects
-      unsigned int n_objects        = 0;
-      unsigned int n_unused_pairs   = 0;
-      unsigned int n_unused_singles = 0;
-      for (unsigned int i = 0; i < used.size(); ++i)
+      if (structdim <= 2)
         {
-          if (used[i])
-            ++n_objects;
-          else if (i + 1 < used.size())
+          Assert(new_objects_in_pairs % 2 == 0, ExcInternalError());
+
+          next_free_single               = 0;
+          next_free_pair                 = 0;
+          reverse_order_next_free_single = false;
+
+          // count the number of objects, of unused single objects and of
+          // unused pairs of objects
+          unsigned int n_objects        = 0;
+          unsigned int n_unused_pairs   = 0;
+          unsigned int n_unused_singles = 0;
+          for (unsigned int i = 0; i < used.size(); ++i)
             {
-              if (used[i + 1])
+              if (used[i])
+                ++n_objects;
+              else if (i + 1 < used.size())
                 {
-                  ++n_unused_singles;
-                  if (next_free_single == 0)
-                    next_free_single = i;
+                  if (used[i + 1])
+                    {
+                      ++n_unused_singles;
+                      if (next_free_single == 0)
+                        next_free_single = i;
+                    }
+                  else
+                    {
+                      ++n_unused_pairs;
+                      if (next_free_pair == 0)
+                        next_free_pair = i;
+                      ++i;
+                    }
                 }
               else
-                {
-                  ++n_unused_pairs;
-                  if (next_free_pair == 0)
-                    next_free_pair = i;
-                  ++i;
-                }
+                ++n_unused_singles;
             }
-          else
-            ++n_unused_singles;
-        }
-      Assert(n_objects + 2 * n_unused_pairs + n_unused_singles == used.size(),
-             ExcInternalError());
+          Assert(n_objects + 2 * n_unused_pairs + n_unused_singles ==
+                   used.size(),
+                 ExcInternalError());
+
+          // how many single objects are needed in addition to
+          // n_unused_objects?
+          const int additional_single_objects =
+            new_objects_single - n_unused_singles;
+
+          unsigned int new_size =
+            used.size() + new_objects_in_pairs - 2 * n_unused_pairs;
+          if (additional_single_objects > 0)
+            new_size += additional_single_objects;
+
+          // only allocate space if necessary
+          if (new_size > this->n_objects())
+            {
+              unsigned int faces_per_cell        = 1;
+              unsigned int max_children_per_cell = 1;
+
+              if (this->structdim == 1)
+                faces_per_cell = GeometryInfo<1>::faces_per_cell;
+              else if (this->structdim == 2)
+                faces_per_cell = GeometryInfo<2>::faces_per_cell;
+              else if (this->structdim == 3)
+                faces_per_cell = GeometryInfo<3>::faces_per_cell;
+              else
+                AssertThrow(false, ExcNotImplemented());
+
+              if (this->structdim == 1)
+                max_children_per_cell = GeometryInfo<1>::max_children_per_cell;
+              else if (this->structdim == 2)
+                max_children_per_cell = GeometryInfo<2>::max_children_per_cell;
+              else if (this->structdim == 3)
+                max_children_per_cell = GeometryInfo<3>::max_children_per_cell;
+              else
+                AssertThrow(false, ExcNotImplemented());
 
-      // how many single objects are needed in addition to
-      // n_unused_objects?
-      const int additional_single_objects =
-        new_objects_single - n_unused_singles;
+              cells.reserve(new_size * faces_per_cell);
+              cells.insert(cells.end(),
+                           (new_size - this->n_objects()) * faces_per_cell,
+                           -1);
 
-      unsigned int new_size =
-        used.size() + new_objects_in_pairs - 2 * n_unused_pairs;
-      if (additional_single_objects > 0)
-        new_size += additional_single_objects;
+              used.reserve(new_size);
+              used.insert(used.end(), new_size - used.size(), false);
 
-      // only allocate space if necessary
-      if (new_size > cells.size())
-        {
-          cells.reserve(new_size);
-          cells.insert(cells.end(), new_size - cells.size(), G());
+              user_flags.reserve(new_size);
+              user_flags.insert(user_flags.end(),
+                                new_size - user_flags.size(),
+                                false);
+
+              const unsigned int factor = max_children_per_cell / 2;
+              children.reserve(factor * new_size);
+              children.insert(children.end(),
+                              factor * new_size - children.size(),
+                              -1);
+
+              if (structdim > 1)
+                {
+                  refinement_cases.reserve(new_size);
+                  refinement_cases.insert(refinement_cases.end(),
+                                          new_size - refinement_cases.size(),
+                                          /*RefinementCase::no_refinement=*/0);
+                }
 
-          used.reserve(new_size);
-          used.insert(used.end(), new_size - used.size(), false);
+              // first reserve, then resize. Otherwise the std library can
+              // decide to allocate more entries.
+              boundary_or_material_id.reserve(new_size);
+              boundary_or_material_id.resize(new_size);
 
-          user_flags.reserve(new_size);
-          user_flags.insert(user_flags.end(),
-                            new_size - user_flags.size(),
-                            false);
+              user_data.reserve(new_size);
+              user_data.resize(new_size);
 
-          const unsigned int factor =
-            GeometryInfo<G::dimension>::max_children_per_cell / 2;
-          children.reserve(factor * new_size);
-          children.insert(children.end(),
-                          factor * new_size - children.size(),
-                          -1);
+              manifold_id.reserve(new_size);
+              manifold_id.insert(manifold_id.end(),
+                                 new_size - manifold_id.size(),
+                                 numbers::flat_manifold_id);
+            }
 
-          if (G::dimension > 1)
+          if (n_unused_singles == 0)
             {
-              refinement_cases.reserve(new_size);
-              refinement_cases.insert(
-                refinement_cases.end(),
-                new_size - refinement_cases.size(),
-                RefinementCase<G::dimension>::no_refinement);
+              next_free_single               = new_size - 1;
+              reverse_order_next_free_single = true;
             }
+        }
+      else
+        {
+          const unsigned int new_hexes = new_objects_in_pairs;
+
+          const unsigned int new_size =
+            new_hexes + std::count(used.begin(), used.end(), true);
+
+          // see above...
+          if (new_size > n_objects())
+            {
+              unsigned int faces_per_cell = 1;
+
+              if (this->structdim == 1)
+                faces_per_cell = GeometryInfo<1>::faces_per_cell;
+              else if (this->structdim == 2)
+                faces_per_cell = GeometryInfo<2>::faces_per_cell;
+              else if (this->structdim == 3)
+                faces_per_cell = GeometryInfo<3>::faces_per_cell;
+              else
+                AssertThrow(false, ExcNotImplemented());
 
-          // first reserve, then resize. Otherwise the std library can decide to
-          // allocate more entries.
-          boundary_or_material_id.reserve(new_size);
-          boundary_or_material_id.resize(new_size);
+              cells.reserve(new_size * faces_per_cell);
+              cells.insert(cells.end(),
+                           (new_size - n_objects()) * faces_per_cell,
+                           -1);
 
-          user_data.reserve(new_size);
-          user_data.resize(new_size);
+              used.reserve(new_size);
+              used.insert(used.end(), new_size - used.size(), false);
 
-          manifold_id.reserve(new_size);
-          manifold_id.insert(manifold_id.end(),
-                             new_size - manifold_id.size(),
-                             numbers::flat_manifold_id);
-        }
+              user_flags.reserve(new_size);
+              user_flags.insert(user_flags.end(),
+                                new_size - user_flags.size(),
+                                false);
 
-      if (n_unused_singles == 0)
-        {
-          next_free_single               = new_size - 1;
-          reverse_order_next_free_single = true;
+              children.reserve(4 * new_size);
+              children.insert(children.end(),
+                              4 * new_size - children.size(),
+                              -1);
+
+              // for the following fields, we know exactly how many elements
+              // we need, so first reserve then resize (resize itself, at least
+              // with some compiler libraries, appears to round up the size it
+              // actually reserves)
+              boundary_or_material_id.reserve(new_size);
+              boundary_or_material_id.resize(new_size);
+
+              manifold_id.reserve(new_size);
+              manifold_id.insert(manifold_id.end(),
+                                 new_size - manifold_id.size(),
+                                 numbers::flat_manifold_id);
+
+              user_data.reserve(new_size);
+              user_data.resize(new_size);
+
+              refinement_cases.reserve(new_size);
+              refinement_cases.insert(refinement_cases.end(),
+                                      new_size - refinement_cases.size(),
+                                      /*RefinementCase::no_refinement=*/0);
+            }
+          next_free_single = next_free_pair = 0;
         }
     }
 
 
-    template <>
     template <int dim, int spacedim>
     typename dealii::Triangulation<dim, spacedim>::raw_hex_iterator
-    TriaObjects<TriaObject<3>>::next_free_hex(
-      const dealii::Triangulation<dim, spacedim> &tria,
-      const unsigned int                          level)
+    TriaObjects::next_free_hex(const dealii::Triangulation<dim, spacedim> &tria,
+                               const unsigned int level)
     {
+      AssertDimension(this->structdim, 3);
+
       // TODO: Think of a way to ensure that we are using the correct
       // triangulation, i.e. the one containing *this.
 
@@ -167,240 +252,60 @@ namespace internal
 
 
     void
-    TriaObjectsHex::reserve_space(const unsigned int new_hexes)
+    TriaObjects::monitor_memory(const unsigned int) const
     {
-      const unsigned int new_size =
-        new_hexes + std::count(used.begin(), used.end(), true);
-
-      // see above...
-      if (new_size > cells.size())
+      if (this->structdim == 1)
         {
-          cells.reserve(new_size);
-          cells.insert(cells.end(), new_size - cells.size(), TriaObject<3>());
-
-          used.reserve(new_size);
-          used.insert(used.end(), new_size - used.size(), false);
-
-          user_flags.reserve(new_size);
-          user_flags.insert(user_flags.end(),
-                            new_size - user_flags.size(),
-                            false);
-
-          children.reserve(4 * new_size);
-          children.insert(children.end(), 4 * new_size - children.size(), -1);
-
-          // for the following fields, we know exactly how many elements
-          // we need, so first reserve then resize (resize itself, at least
-          // with some compiler libraries, appears to round up the size it
-          // actually reserves)
-          boundary_or_material_id.reserve(new_size);
-          boundary_or_material_id.resize(new_size);
-
-          manifold_id.reserve(new_size);
-          manifold_id.insert(manifold_id.end(),
-                             new_size - manifold_id.size(),
-                             numbers::flat_manifold_id);
-
-          user_data.reserve(new_size);
-          user_data.resize(new_size);
-
-          face_orientations.reserve(new_size * GeometryInfo<3>::faces_per_cell);
-          face_orientations.insert(face_orientations.end(),
-                                   new_size * GeometryInfo<3>::faces_per_cell -
-                                     face_orientations.size(),
-                                   true);
-
-          refinement_cases.reserve(new_size);
-          refinement_cases.insert(refinement_cases.end(),
-                                  new_size - refinement_cases.size(),
-                                  RefinementCase<3>::no_refinement);
+          Assert(n_objects() == used.size(),
+                 ExcMemoryInexact(n_objects(), used.size()));
+          Assert(n_objects() == user_flags.size(),
+                 ExcMemoryInexact(n_objects(), user_flags.size()));
+          Assert(n_objects() == children.size(),
+                 ExcMemoryInexact(n_objects(), children.size()));
+          Assert(n_objects() == boundary_or_material_id.size(),
+                 ExcMemoryInexact(n_objects(), boundary_or_material_id.size()));
+          Assert(n_objects() == manifold_id.size(),
+                 ExcMemoryInexact(n_objects(), manifold_id.size()));
+          Assert(n_objects() == user_data.size(),
+                 ExcMemoryInexact(n_objects(), user_data.size()));
         }
-      next_free_single = next_free_pair = 0;
-    }
-
-
-    void
-    TriaObjectsQuad3D::reserve_space(const unsigned int new_quads_in_pairs,
-                                     const unsigned int new_quads_single)
-    {
-      Assert(new_quads_in_pairs % 2 == 0, ExcInternalError());
-
-      next_free_single               = 0;
-      next_free_pair                 = 0;
-      reverse_order_next_free_single = false;
-
-      // count the number of objects, of unused single objects and of
-      // unused pairs of objects
-      unsigned int n_quads          = 0;
-      unsigned int n_unused_pairs   = 0;
-      unsigned int n_unused_singles = 0;
-      for (unsigned int i = 0; i < used.size(); ++i)
-        {
-          if (used[i])
-            ++n_quads;
-          else if (i + 1 < used.size())
-            {
-              if (used[i + 1])
-                {
-                  ++n_unused_singles;
-                  if (next_free_single == 0)
-                    next_free_single = i;
-                }
-              else
-                {
-                  ++n_unused_pairs;
-                  if (next_free_pair == 0)
-                    next_free_pair = i;
-                  ++i;
-                }
-            }
-          else
-            ++n_unused_singles;
-        }
-      Assert(n_quads + 2 * n_unused_pairs + n_unused_singles == used.size(),
-             ExcInternalError());
-
-      // how many single quads are needed in addition to n_unused_quads?
-      const int additional_single_quads = new_quads_single - n_unused_singles;
-
-      unsigned int new_size =
-        used.size() + new_quads_in_pairs - 2 * n_unused_pairs;
-      if (additional_single_quads > 0)
-        new_size += additional_single_quads;
-
-      // see above...
-      if (new_size > cells.size())
+      else if (this->structdim == 2)
         {
-          // reseve space for the base class
-          TriaObjects<TriaObject<2>>::reserve_space(new_quads_in_pairs,
-                                                    new_quads_single);
-          // reserve the field of the derived class
-          line_orientations.reserve(new_size * GeometryInfo<2>::lines_per_cell);
-          line_orientations.insert(line_orientations.end(),
-                                   new_size * GeometryInfo<2>::lines_per_cell -
-                                     line_orientations.size(),
-                                   true);
+          Assert(n_objects() == used.size(),
+                 ExcMemoryInexact(n_objects(), used.size()));
+          Assert(n_objects() == user_flags.size(),
+                 ExcMemoryInexact(n_objects(), user_flags.size()));
+          Assert(2 * n_objects() == children.size(),
+                 ExcMemoryInexact(n_objects(), children.size()));
+          Assert(n_objects() == refinement_cases.size(),
+                 ExcMemoryInexact(n_objects(), refinement_cases.size()));
+          Assert(n_objects() == boundary_or_material_id.size(),
+                 ExcMemoryInexact(n_objects(), boundary_or_material_id.size()));
+          Assert(n_objects() == manifold_id.size(),
+                 ExcMemoryInexact(n_objects(), manifold_id.size()));
+          Assert(n_objects() == user_data.size(),
+                 ExcMemoryInexact(n_objects(), user_data.size()));
         }
-
-      if (n_unused_singles == 0)
+      else if (this->structdim == 3)
         {
-          next_free_single               = new_size - 1;
-          reverse_order_next_free_single = true;
+          Assert(n_objects() == used.size(),
+                 ExcMemoryInexact(n_objects(), used.size()));
+          Assert(n_objects() == user_flags.size(),
+                 ExcMemoryInexact(n_objects(), user_flags.size()));
+          Assert(4 * n_objects() == children.size(),
+                 ExcMemoryInexact(n_objects(), children.size()));
+          Assert(n_objects() == boundary_or_material_id.size(),
+                 ExcMemoryInexact(n_objects(), boundary_or_material_id.size()));
+          Assert(n_objects() == manifold_id.size(),
+                 ExcMemoryInexact(n_objects(), manifold_id.size()));
+          Assert(n_objects() == user_data.size(),
+                 ExcMemoryInexact(n_objects(), user_data.size()));
         }
     }
 
 
-    template <>
-    void
-    TriaObjects<TriaObject<1>>::monitor_memory(const unsigned int) const
-    {
-      Assert(cells.size() == used.size(),
-             ExcMemoryInexact(cells.size(), used.size()));
-      Assert(cells.size() == user_flags.size(),
-             ExcMemoryInexact(cells.size(), user_flags.size()));
-      Assert(cells.size() == children.size(),
-             ExcMemoryInexact(cells.size(), children.size()));
-      Assert(cells.size() == boundary_or_material_id.size(),
-             ExcMemoryInexact(cells.size(), boundary_or_material_id.size()));
-      Assert(cells.size() == manifold_id.size(),
-             ExcMemoryInexact(cells.size(), manifold_id.size()));
-      Assert(cells.size() == user_data.size(),
-             ExcMemoryInexact(cells.size(), user_data.size()));
-    }
-
-
-    template <>
-    void
-    TriaObjects<TriaObject<2>>::monitor_memory(const unsigned int) const
-    {
-      Assert(cells.size() == used.size(),
-             ExcMemoryInexact(cells.size(), used.size()));
-      Assert(cells.size() == user_flags.size(),
-             ExcMemoryInexact(cells.size(), user_flags.size()));
-      Assert(2 * cells.size() == children.size(),
-             ExcMemoryInexact(cells.size(), children.size()));
-      Assert(cells.size() == refinement_cases.size(),
-             ExcMemoryInexact(cells.size(), refinement_cases.size()));
-      Assert(cells.size() == boundary_or_material_id.size(),
-             ExcMemoryInexact(cells.size(), boundary_or_material_id.size()));
-      Assert(cells.size() == manifold_id.size(),
-             ExcMemoryInexact(cells.size(), manifold_id.size()));
-      Assert(cells.size() == user_data.size(),
-             ExcMemoryInexact(cells.size(), user_data.size()));
-    }
-
-
-    void
-    TriaObjectsHex::monitor_memory(const unsigned int) const
-    {
-      Assert(cells.size() == used.size(),
-             ExcMemoryInexact(cells.size(), used.size()));
-      Assert(cells.size() == user_flags.size(),
-             ExcMemoryInexact(cells.size(), user_flags.size()));
-      Assert(4 * cells.size() == children.size(),
-             ExcMemoryInexact(cells.size(), children.size()));
-      Assert(cells.size() == boundary_or_material_id.size(),
-             ExcMemoryInexact(cells.size(), boundary_or_material_id.size()));
-      Assert(cells.size() == manifold_id.size(),
-             ExcMemoryInexact(cells.size(), manifold_id.size()));
-      Assert(cells.size() == user_data.size(),
-             ExcMemoryInexact(cells.size(), user_data.size()));
-      Assert(cells.size() * GeometryInfo<3>::faces_per_cell ==
-               face_orientations.size(),
-             ExcMemoryInexact(cells.size() * GeometryInfo<3>::faces_per_cell,
-                              face_orientations.size()));
-    }
-
-
-    void
-    TriaObjectsQuad3D::monitor_memory(const unsigned int) const
-    {
-      // check that we have not allocated too much memory. note that bool
-      // vectors allocate their memory in chunks of whole integers, so they
-      // may over-allocate by up to as many elements as an integer has bits
-      Assert(cells.size() * GeometryInfo<2>::lines_per_cell ==
-               line_orientations.size(),
-             ExcMemoryInexact(cells.size() * GeometryInfo<2>::lines_per_cell,
-                              line_orientations.size()));
-      TriaObjects<TriaObject<2>>::monitor_memory(3);
-    }
-
-
-    template <typename G>
-    void
-    TriaObjects<G>::clear()
-    {
-      cells.clear();
-      children.clear();
-      refinement_cases.clear();
-      used.clear();
-      user_flags.clear();
-      boundary_or_material_id.clear();
-      manifold_id.clear();
-      user_data.clear();
-      user_data_type = data_unknown;
-    }
-
-
-    void
-    TriaObjectsHex::clear()
-    {
-      TriaObjects<TriaObject<3>>::clear();
-      face_orientations.clear();
-    }
-
-
-    void
-    TriaObjectsQuad3D::clear()
-    {
-      TriaObjects<TriaObject<2>>::clear();
-      line_orientations.clear();
-    }
-
-
-    template <typename G>
     std::size_t
-    TriaObjects<G>::memory_consumption() const
+    TriaObjects::memory_consumption() const
     {
       return (MemoryConsumption::memory_consumption(cells) +
               MemoryConsumption::memory_consumption(children) +
@@ -413,28 +318,9 @@ namespace internal
     }
 
 
-    std::size_t
-    TriaObjectsHex::memory_consumption() const
-    {
-      return (MemoryConsumption::memory_consumption(face_orientations) +
-              TriaObjects<TriaObject<3>>::memory_consumption());
-    }
-
-
-    std::size_t
-    TriaObjectsQuad3D::memory_consumption() const
-    {
-      return (MemoryConsumption::memory_consumption(line_orientations) +
-              this->TriaObjects<TriaObject<2>>::memory_consumption());
-    }
-
-
 
     // explicit instantiations
 #ifndef DOXYGEN
-    template class TriaObjects<TriaObject<1>>;
-    template class TriaObjects<TriaObject<2>>;
-
 #  include "tria_objects.inst"
 #endif
   } // namespace TriangulationImplementation
index bc4c5eccc0f665f6af6c02ed96b776578c740f56..3460342fe870237740bcac5833dcf60f62fcf2c1 100644 (file)
@@ -18,7 +18,7 @@ for (deal_II_dimension : DIMENSIONS)
   {
 #if deal_II_dimension >= 3
     template dealii::Triangulation<deal_II_dimension>::raw_hex_iterator
-    TriaObjects<TriaObject<3>>::next_free_hex(
-      const dealii::Triangulation<deal_II_dimension> &, const unsigned int);
+    TriaObjects::next_free_hex(const dealii::Triangulation<deal_II_dimension> &,
+                               const unsigned int);
 #endif
   }
index 48e3dcf7f30c4d20784cadf1beb28a0fd0b3097b..7dfec284a1fb2f936d6cf76f96005efabee40123 100644 (file)
@@ -1,34 +1,34 @@
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 2 0 0 0 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 0 2 0 0 0 1 0 0 0 2 0 2 0 2 2 2 1 2 0 0 2 0 0 2 1 1 2 0 0 2 0 0 0 2 0 4294967295 4294967295 1 0 1 2 0 0 0 0 2
-2 4 0 1 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 2 2 2 1 2 3 2 2 -1 -1 4 0 1 0 0 0 4 0 4 0 0 0 2 0 0 1 0 4 0 2 0 3 2 3 2 2 2 4 2 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 1 1 4 1 0 0 0 4 0 2 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 3 0 0 0 2 1 0 0 5 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 5.00000000000000000e-01 1 2.50000000000000000e-01 1 7.50000000000000000e-01 5 1 1 1 1 1 0 0 0 3 7 3 0 1 2 4 4 3 0 0 0 4 0 0 0 23 1 0
-3 2 0 0 0 0 0 1 1 23
+0 1 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 1 2 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 1 2 0 0 0 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 0 2 0 0 0 1 0 0 0 1 4 0 0 2 2 1 2 0 0 2 0 0 2 1 1 2 0 0 2 0 0 0 2 0 4294967295 4294967295 1 0 1 2 0 0 0 0 2
+2 1 4 0 1 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 2 2 2 1 2 3 2 2 -1 -1 4 0 1 0 0 0 4 0 4 0 0 0 2 0 0 1 0 1 8 0 0 3 3 2 2 4 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 1 1 4 1 0 0 0 4 0 2 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 3 0 0 0 2 1 0 0 5 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 5.00000000000000000e-01 1 2.50000000000000000e-01 1 7.50000000000000000e-01 5 1 1 1 1 1 0 0 0 3 7 3 0 1 2 4 4 3 0 0 0 4 0 0 0 20 1 0
+3 2 0 0 0 0 0 1 1 20
 4 5 0 0 4294967295 1 4294967295 2 4294967295 3 4294967295 4 4294967295
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 2 0 0 0 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 0 2 0 0 0 1 0 0 2 1 1 2 0 2 0 2 2 2 1 2 0 0 2 0 0 2 1 1 2 0 0 2 0 0 0 2 0 4294967295 4294967295 1 0 1 2 0 0 0 0 2
-2 4 0 1 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 2 2 2 1 2 3 2 2 -1 -1 4 0 1 0 0 0 4 0 4 0 0 0 2 0 0 1 4 1 1 1 1 4 0 2 0 3 2 3 2 2 2 4 2 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 1 1 4 1 0 0 0 4 0 2 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 3 0 0 0 2 1 0 0 5 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 2.50000000000000000e-01 0.00000000000000000e+00 2 7.50000000000000000e-01 0.00000000000000000e+00 5 1 1 1 1 1 0 0 0 3 7 3 0 1 2 4 4 3 0 0 0 4 0 0 0 23 1 0
-3 2 0 0 0 0 0 1 1 23
+0 1 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 1 2 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 1 2 0 0 0 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 0 2 0 0 0 1 0 0 2 1 1 1 4 0 0 2 2 1 2 0 0 2 0 0 2 1 1 2 0 0 2 0 0 0 2 0 4294967295 4294967295 1 0 1 2 0 0 0 0 2
+2 1 4 0 1 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 2 2 2 1 2 3 2 2 -1 -1 4 0 1 0 0 0 4 0 4 0 0 0 2 0 0 1 4 1 1 1 1 1 8 0 0 3 3 2 2 4 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 1 1 4 1 0 0 0 4 0 2 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 3 0 0 0 2 1 0 0 5 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 2.50000000000000000e-01 0.00000000000000000e+00 2 7.50000000000000000e-01 0.00000000000000000e+00 5 1 1 1 1 1 0 0 0 3 7 3 0 1 2 4 4 3 0 0 0 4 0 0 0 20 1 0
+3 2 0 0 0 0 0 1 1 20
 4 5 0 0 4294967295 1 4294967295 2 4294967295 3 4294967295 4 4294967295
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 0 0 1 0 0 0 4 1 2 0 3 2 0 0 2 0 0 1 0 0 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 4 0 0 0 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 0 0 4 0 4 6 12 4 14 4 12 8 5 15 4 7 13 14 10 4 13 9 15 11 8 0 0 2 4 6 8 10 12 14 4 0 3 3 3 3 4 1 1 1 1 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 0 0 0 0 2
-2 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 2 4 -1 -1 2 3 -1 -1 2 3 2 0 2 8 2 2 2 6 2 1 2 9 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 0 16 0 4 20 40 16 42 4 40 32 17 43 4 21 41 42 36 4 41 33 43 37 4 32 44 18 46 4 44 24 19 47 4 33 45 46 38 4 45 25 47 39 4 22 48 36 50 4 48 34 37 51 4 23 49 50 28 4 49 35 51 29 4 34 52 38 54 4 52 26 39 55 4 35 53 54 30 4 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 15 0 1 16 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 19 1 0
-3 0 0 0 0 56 0 0 0 2 0 1 2 0 2 2 1 3 2 2 3 2 0 4 2 4 1 2 0 5 2 5 2 2 1 6 2 6 3 2 2 7 2 7 3 2 4 8 2 8 7 2 5 8 2 8 6 2 0 9 2 9 4 2 4 10 2 10 1 2 0 11 2 11 5 2 5 12 2 12 2 2 1 13 2 13 6 2 6 14 2 14 3 2 2 15 2 15 7 2 7 16 2 16 3 2 4 17 2 17 8 2 8 18 2 18 7 2 5 19 2 19 8 2 8 20 2 20 6 2 9 21 2 21 19 2 11 21 2 21 17 2 10 22 2 22 20 2 17 22 2 22 13 2 19 23 2 23 15 2 12 23 2 23 18 2 20 24 2 24 16 2 18 24 2 24 14 56 0 4 6 8 10 16 18 20 22 24 26 28 30 32 34 36 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 55 0 1 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 5.00000000000000000e-01 2 1.00000000000000000e+00 5.00000000000000000e-01 2 5.00000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 0.00000000000000000e+00 2 7.50000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 2.50000000000000000e-01 2 0.00000000000000000e+00 7.50000000000000000e-01 2 1.00000000000000000e+00 2.50000000000000000e-01 2 1.00000000000000000e+00 7.50000000000000000e-01 2 2.50000000000000000e-01 1.00000000000000000e+00 2 7.50000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 2.50000000000000000e-01 2 5.00000000000000000e-01 7.50000000000000000e-01 2 2.50000000000000000e-01 5.00000000000000000e-01 2 7.50000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 2.50000000000000000e-01 2 7.50000000000000000e-01 2.50000000000000000e-01 2 2.50000000000000000e-01 7.50000000000000000e-01 2 7.50000000000000000e-01 7.50000000000000000e-01 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 3 56 0 0 40 0 0 21 3 0 1 4 16 16 3 0 0 0 16 0
+0 2 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 2 4 0 1 2 0 3 2 0 0 2 1 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 2 4 0 0 0 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 0 0 2 16 0 6 12 4 14 12 8 5 15 7 13 14 10 13 9 15 11 8 0 0 2 4 6 8 10 12 14 4 0 3 3 3 3 4 1 1 1 1 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 0 0 0 0 2
+2 2 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 2 4 -1 -1 2 3 -1 -1 2 3 2 0 2 8 2 2 2 6 2 1 2 9 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 0 2 64 0 20 40 16 42 40 32 17 43 21 41 42 36 41 33 43 37 32 44 18 46 44 24 19 47 33 45 46 38 45 25 47 39 22 48 36 50 48 34 37 51 23 49 50 28 49 35 51 29 34 52 38 54 52 26 39 55 35 53 54 30 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 15 0 1 16 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 15 1 0
+3 2 1 112 0 0 1 0 2 1 3 2 3 0 4 4 1 0 5 5 2 1 6 6 3 2 7 7 3 4 8 8 7 5 8 8 6 0 9 9 4 4 10 10 1 0 11 11 5 5 12 12 2 1 13 13 6 6 14 14 3 2 15 15 7 7 16 16 3 4 17 17 8 8 18 18 7 5 19 19 8 8 20 20 6 9 21 21 19 11 21 21 17 10 22 22 20 17 22 22 13 19 23 23 15 12 23 23 18 20 24 24 16 18 24 24 14 56 0 4 6 8 10 16 18 20 22 24 26 28 30 32 34 36 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 55 0 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 5.00000000000000000e-01 2 1.00000000000000000e+00 5.00000000000000000e-01 2 5.00000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 0.00000000000000000e+00 2 7.50000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 2.50000000000000000e-01 2 0.00000000000000000e+00 7.50000000000000000e-01 2 1.00000000000000000e+00 2.50000000000000000e-01 2 1.00000000000000000e+00 7.50000000000000000e-01 2 2.50000000000000000e-01 1.00000000000000000e+00 2 7.50000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 2.50000000000000000e-01 2 5.00000000000000000e-01 7.50000000000000000e-01 2 2.50000000000000000e-01 5.00000000000000000e-01 2 7.50000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 2.50000000000000000e-01 2 7.50000000000000000e-01 2.50000000000000000e-01 2 2.50000000000000000e-01 7.50000000000000000e-01 2 7.50000000000000000e-01 7.50000000000000000e-01 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 3 56 0 0 40 0 0 21 3 0 1 4 16 16 3 0 0 0 16 0
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 0 0 1 0 0 0 4 1 2 0 3 2 0 0 2 0 0 1 0 0 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 4 0 0 0 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 0 4 1 1 1 1 4 0 4 6 12 4 14 4 12 8 5 15 4 7 13 14 10 4 13 9 15 11 8 0 0 2 4 6 8 10 12 14 4 0 3 3 3 3 4 1 1 1 1 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 0 0 0 0 2
-2 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 2 4 -1 -1 2 3 -1 -1 2 3 2 0 2 8 2 2 2 6 2 1 2 9 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 0 4 20 40 16 42 4 40 32 17 43 4 21 41 42 36 4 41 33 43 37 4 32 44 18 46 4 44 24 19 47 4 33 45 46 38 4 45 25 47 39 4 22 48 36 50 4 48 34 37 51 4 23 49 50 28 4 49 35 51 29 4 34 52 38 54 4 52 26 39 55 4 35 53 54 30 4 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 15 0 1 16 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 19 1 0
-3 0 0 0 0 56 0 0 0 2 0 1 2 0 2 2 1 3 2 2 3 2 0 4 2 4 1 2 0 5 2 5 2 2 1 6 2 6 3 2 2 7 2 7 3 2 4 8 2 8 7 2 5 8 2 8 6 2 0 9 2 9 4 2 4 10 2 10 1 2 0 11 2 11 5 2 5 12 2 12 2 2 1 13 2 13 6 2 6 14 2 14 3 2 2 15 2 15 7 2 7 16 2 16 3 2 4 17 2 17 8 2 8 18 2 18 7 2 5 19 2 19 8 2 8 20 2 20 6 2 9 21 2 21 19 2 11 21 2 21 17 2 10 22 2 22 20 2 17 22 2 22 13 2 19 23 2 23 15 2 12 23 2 23 18 2 20 24 2 24 16 2 18 24 2 24 14 56 0 4 6 8 10 16 18 20 22 24 26 28 30 32 34 36 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 55 0 1 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 3 56 0 0 40 0 0 21 3 0 1 4 16 16 3 0 0 0 16 0
+0 2 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 2 4 0 1 2 0 3 2 0 0 2 1 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 2 4 0 0 0 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 0 4 1 1 1 1 2 16 0 6 12 4 14 12 8 5 15 7 13 14 10 13 9 15 11 8 0 0 2 4 6 8 10 12 14 4 0 3 3 3 3 4 1 1 1 1 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 0 0 0 0 2
+2 2 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 2 4 -1 -1 2 3 -1 -1 2 3 2 0 2 8 2 2 2 6 2 1 2 9 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 64 0 20 40 16 42 40 32 17 43 21 41 42 36 41 33 43 37 32 44 18 46 44 24 19 47 33 45 46 38 45 25 47 39 22 48 36 50 48 34 37 51 23 49 50 28 49 35 51 29 34 52 38 54 52 26 39 55 35 53 54 30 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 15 0 1 16 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 15 1 0
+3 2 1 112 0 0 1 0 2 1 3 2 3 0 4 4 1 0 5 5 2 1 6 6 3 2 7 7 3 4 8 8 7 5 8 8 6 0 9 9 4 4 10 10 1 0 11 11 5 5 12 12 2 1 13 13 6 6 14 14 3 2 15 15 7 7 16 16 3 4 17 17 8 8 18 18 7 5 19 19 8 8 20 20 6 9 21 21 19 11 21 21 17 10 22 22 20 17 22 22 13 19 23 23 15 12 23 23 18 20 24 24 16 18 24 24 14 56 0 4 6 8 10 16 18 20 22 24 26 28 30 32 34 36 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 55 0 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 3 56 0 0 40 0 0 21 3 0 1 4 16 16 3 0 0 0 16 0
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 6 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 0 0 1 0 0 0 6 2 3 0 4 1 5 4 0 0 2 4 6 0 0 1 0 0 0 7 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 0 0 0 1 0 0 0 0 0 6 0 1 1 1 1 1 1 2
-1 8 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 48 0 -1 -1 1 1 -1 -1 1 2 -1 -1 1 4 1 0 -1 -1 -1 -1 1 3 -1 -1 1 5 -1 -1 1 3 1 0 -1 -1 -1 -1 1 6 1 2 -1 -1 1 1 -1 -1 -1 -1 1 7 -1 -1 1 5 -1 -1 1 6 1 0 -1 -1 1 4 -1 -1 -1 -1 1 7 1 1 -1 -1 -1 -1 1 7 1 4 -1 -1 1 2 -1 -1 1 6 -1 -1 1 5 -1 -1 1 3 -1 -1 8 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 8 0 6 14 41 6 37 10 33 6 41 18 8 35 11 32 6 15 40 37 22 12 31 6 40 19 35 24 13 30 6 16 39 7 36 33 26 6 39 20 9 34 32 27 6 17 38 36 23 31 28 6 38 21 34 25 30 29 32 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 8 0 7 7 7 7 7 7 7 7 8 1 1 1 1 1 1 1 1 8 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 8 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 8 0 0 0 0 0 0 0 0 0 0 48 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
-2 64 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 0 -1 -1 2 1 -1 -1 2 2 -1 -1 2 4 2 0 2 8 -1 -1 2 3 -1 -1 2 5 -1 -1 2 3 2 0 2 16 -1 -1 2 6 2 2 2 10 2 1 2 17 -1 -1 2 7 -1 -1 2 5 -1 -1 2 6 2 0 2 32 2 4 2 12 -1 -1 2 7 2 1 2 33 -1 -1 2 7 2 4 2 20 2 2 2 34 2 6 2 14 2 5 2 21 2 3 2 35 2 1 2 9 -1 -1 2 10 -1 -1 2 12 2 8 -1 -1 -1 -1 2 11 -1 -1 2 13 2 3 2 11 2 8 2 24 -1 -1 2 14 2 10 -1 -1 2 9 2 25 -1 -1 2 15 2 5 2 13 -1 -1 2 14 2 8 2 40 2 12 -1 -1 -1 -1 2 15 2 9 2 41 2 7 2 15 2 12 2 28 2 10 2 42 2 14 -1 -1 2 13 2 29 2 11 2 43 -1 -1 2 17 2 2 2 18 -1 -1 2 20 2 16 2 24 2 3 2 19 -1 -1 2 21 -1 -1 2 19 2 16 -1 -1 -1 -1 2 22 2 18 2 26 2 17 -1 -1 -1 -1 2 23 -1 -1 2 21 2 6 2 22 2 16 2 48 2 20 2 28 2 7 2 23 2 17 2 49 -1 -1 2 23 2 20 -1 -1 2 18 2 50 2 22 2 30 2 21 -1 -1 2 19 2 51 2 17 2 25 2 10 2 26 -1 -1 2 28 2 24 -1 -1 2 11 2 27 -1 -1 2 29 2 19 2 27 2 24 -1 -1 -1 -1 2 30 2 26 -1 -1 2 25 -1 -1 -1 -1 2 31 2 21 2 29 2 14 2 30 2 24 2 56 2 28 -1 -1 2 15 2 31 2 25 2 57 2 23 2 31 2 28 -1 -1 2 26 2 58 2 30 -1 -1 2 29 -1 -1 2 27 2 59 -1 -1 2 33 -1 -1 2 34 2 4 2 36 2 32 2 40 -1 -1 2 35 2 5 2 37 -1 -1 2 35 2 32 2 48 2 6 2 38 2 34 2 42 2 33 2 49 2 7 2 39 -1 -1 2 37 -1 -1 2 38 2 32 -1 -1 2 36 2 44 -1 -1 2 39 2 33 -1 -1 -1 -1 2 39 2 36 2 52 2 34 -1 -1 2 38 2 46 2 37 2 53 2 35 -1 -1 2 33 2 41 -1 -1 2 42 2 12 2 44 2 40 -1 -1 -1 -1 2 43 2 13 2 45 2 35 2 43 2 40 2 56 2 14 2 46 2 42 -1 -1 2 41 2 57 2 15 2 47 2 37 2 45 -1 -1 2 46 2 40 -1 -1 2 44 -1 -1 -1 -1 2 47 2 41 -1 -1 2 39 2 47 2 44 2 60 2 42 -1 -1 2 46 -1 -1 2 45 2 61 2 43 -1 -1 -1 -1 2 49 2 34 2 50 2 20 2 52 2 48 2 56 2 35 2 51 2 21 2 53 -1 -1 2 51 2 48 -1 -1 2 22 2 54 2 50 2 58 2 49 -1 -1 2 23 2 55 -1 -1 2 53 2 38 2 54 2 48 -1 -1 2 52 2 60 2 39 2 55 2 49 -1 -1 -1 -1 2 55 2 52 -1 -1 2 50 -1 -1 2 54 2 62 2 53 -1 -1 2 51 -1 -1 2 49 2 57 2 42 2 58 2 28 2 60 2 56 -1 -1 2 43 2 59 2 29 2 61 2 51 2 59 2 56 -1 -1 2 30 2 62 2 58 -1 -1 2 57 -1 -1 2 31 2 63 2 53 2 61 2 46 2 62 2 56 -1 -1 2 60 -1 -1 2 47 2 63 2 57 -1 -1 2 55 2 63 2 60 -1 -1 2 58 -1 -1 2 62 -1 -1 2 61 -1 -1 2 59 -1 -1 64 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 0 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 0 64 0 6 74 281 42 277 58 273 6 281 182 44 275 59 272 6 75 280 277 166 60 271 6 280 183 275 168 61 270 6 76 279 43 276 273 150 6 279 184 45 274 272 151 6 77 278 276 167 271 152 6 278 185 274 169 270 153 6 182 269 50 265 62 261 6 269 90 52 263 63 260 6 183 268 265 158 64 259 6 268 91 263 160 65 258 6 184 267 51 264 261 146 6 267 92 53 262 260 147 6 185 266 264 159 259 148 6 266 93 262 161 258 149 6 78 257 166 253 66 249 6 257 178 168 251 67 248 6 79 256 253 106 68 247 6 256 179 251 108 69 246 6 80 255 167 252 249 142 6 255 180 169 250 248 143 6 81 254 252 107 247 144 6 254 181 250 109 246 145 6 178 245 158 241 70 237 6 245 94 160 239 71 236 6 179 244 241 114 72 235 6 244 95 239 116 73 234 6 180 243 159 240 237 138 6 243 96 161 238 236 139 6 181 242 240 115 235 140 6 242 97 238 117 234 141 6 82 233 46 229 150 225 6 233 174 48 227 151 224 6 83 232 229 162 152 223 6 232 175 227 164 153 222 6 84 231 47 228 225 122 6 231 176 49 226 224 123 6 85 230 228 163 223 124 6 230 177 226 165 222 125 6 174 221 54 217 146 213 6 221 98 56 215 147 212 6 175 220 217 154 148 211 6 220 99 215 156 149 210 6 176 219 55 216 213 126 6 219 100 57 214 212 127 6 177 218 216 155 211 128 6 218 101 214 157 210 129 6 86 209 162 205 142 201 6 209 170 164 203 143 200 6 87 208 205 110 144 199 6 208 171 203 112 145 198 6 88 207 163 204 201 130 6 207 172 165 202 200 131 6 89 206 204 111 199 132 6 206 173 202 113 198 133 6 170 197 154 193 138 189 6 197 102 156 191 139 188 6 171 196 193 118 140 187 6 196 103 191 120 141 186 6 172 195 155 192 189 134 6 195 104 157 190 188 135 6 173 194 192 119 187 136 6 194 105 190 121 186 137 256 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 64 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 64 0 64 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 384 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 19 1 0
-3 0 0 0 0 282 0 0 0 4 0 8 2 4 4 1 3 0 5 4 2 6 1 9 4 4 7 3 10 4 5 11 6 7 4 9 10 8 11 4 12 36 16 38 4 36 28 17 39 4 13 37 38 20 4 37 29 39 21 4 14 40 12 42 4 40 18 13 43 4 15 41 42 22 4 41 19 43 23 4 16 44 14 46 4 44 24 15 47 4 17 45 46 30 4 45 25 47 31 4 20 48 18 50 4 48 26 19 51 4 21 49 50 32 4 49 27 51 33 4 22 52 24 54 4 52 34 25 55 4 23 53 54 26 4 53 35 55 27 4 30 56 28 58 4 56 32 29 59 4 31 57 58 34 4 57 33 59 35 4 64 51 62 53 4 47 64 63 52 4 65 50 37 62 4 46 65 36 63 4 62 59 60 49 4 43 62 61 48 4 63 58 45 60 4 42 63 44 61 4 60 55 64 57 4 39 60 65 56 4 61 54 41 64 4 38 61 40 65 4 66 174 74 176 4 174 114 75 177 4 67 175 176 118 4 175 115 177 119 4 114 178 76 180 4 178 98 77 181 4 115 179 180 120 4 179 99 181 121 4 68 182 118 184 4 182 116 119 185 4 69 183 184 82 4 183 117 185 83 4 116 186 120 188 4 186 100 121 189 4 117 187 188 84 4 187 101 189 85 4 70 190 66 192 4 190 122 67 193 4 71 191 192 126 4 191 123 193 127 4 122 194 68 196 4 194 78 69 197 4 123 195 196 128 4 195 79 197 129 4 72 198 126 200 4 198 124 127 201 4 73 199 200 86 4 199 125 201 87 4 124 202 128 204 4 202 80 129 205 4 125 203 204 88 4 203 81 205 89 4 74 206 70 208 4 206 130 71 209 4 75 207 208 134 4 207 131 209 135 4 130 210 72 212 4 210 90 73 213 4 131 211 212 136 4 211 91 213 137 4 76 214 134 216 4 214 132 135 217 4 77 215 216 102 4 215 133 217 103 4 132 218 136 220 4 218 92 137 221 4 133 219 220 104 4 219 93 221 105 4 82 222 78 224 4 222 138 79 225 4 83 223 224 142 4 223 139 225 143 4 138 226 80 228 4 226 94 81 229 4 139 227 228 144 4 227 95 229 145 4 84 230 142 232 4 230 140 143 233 4 85 231 232 106 4 231 141 233 107 4 140 234 144 236 4 234 96 145 237 4 141 235 236 108 4 235 97 237 109 4 86 238 90 240 4 238 146 91 241 4 87 239 240 150 4 239 147 241 151 4 146 242 92 244 4 242 110 93 245 4 147 243 244 152 4 243 111 245 153 4 88 246 150 248 4 246 148 151 249 4 89 247 248 94 4 247 149 249 95 4 148 250 152 252 4 250 112 153 253 4 149 251 252 96 4 251 113 253 97 4 102 254 98 256 4 254 154 99 257 4 103 255 256 158 4 255 155 257 159 4 154 258 100 260 4 258 106 101 261 4 155 259 260 160 4 259 107 261 161 4 104 262 158 264 4 262 156 159 265 4 105 263 264 110 4 263 157 265 111 4 156 266 160 268 4 266 108 161 269 4 157 267 268 112 4 267 109 269 113 4 170 270 166 272 4 270 144 167 273 4 171 271 272 148 4 271 145 273 149 4 136 274 168 276 4 274 170 169 277 4 137 275 276 146 4 275 171 277 147 4 172 278 116 280 4 278 142 117 281 4 173 279 280 166 4 279 143 281 167 4 134 282 114 284 4 282 172 115 285 4 135 283 284 168 4 283 173 285 169 4 166 286 162 288 4 286 160 163 289 4 167 287 288 140 4 287 161 289 141 4 128 290 164 292 4 290 166 165 293 4 129 291 292 138 4 291 167 293 139 4 168 294 132 296 4 294 158 133 297 4 169 295 296 162 4 295 159 297 163 4 126 298 130 300 4 298 168 131 301 4 127 299 300 164 4 299 169 301 165 4 162 302 170 304 4 302 152 171 305 4 163 303 304 156 4 303 153 305 157 4 120 306 172 308 4 306 162 173 309 4 121 307 308 154 4 307 163 309 155 4 164 310 124 312 4 310 150 125 313 4 165 311 312 170 4 311 151 313 171 4 118 314 122 316 4 314 164 123 317 4 119 315 316 172 4 315 165 317 173 4 322 237 320 251 4 305 322 321 250 4 323 236 287 320 4 304 323 286 321 4 320 269 318 235 4 273 320 319 234 4 321 268 303 318 4 272 321 302 319 4 318 253 322 267 4 289 318 323 266 4 319 252 271 322 4 288 319 270 323 4 328 305 326 243 4 221 328 327 242 4 329 304 295 326 4 220 329 294 327 4 326 265 324 303 4 277 326 325 302 4 327 264 219 324 4 276 327 218 325 4 324 245 328 263 4 297 324 329 262 4 325 244 275 328 4 296 325 274 329 4 334 233 332 287 4 309 334 333 286 4 335 232 187 332 4 308 335 186 333 4 332 261 330 231 4 281 332 331 230 4 333 260 307 330 4 280 333 306 331 4 330 289 334 259 4 189 330 335 258 4 331 288 279 334 4 188 331 278 335 4 340 309 338 295 4 217 340 339 294 4 341 308 179 338 4 216 341 178 339 4 338 257 336 307 4 285 338 337 306 4 339 256 215 336 4 284 339 214 337 4 336 297 340 255 4 181 336 341 254 4 337 296 283 340 4 180 337 282 341 4 346 229 344 247 4 313 346 345 246 4 347 228 291 344 4 312 347 290 345 4 344 273 342 227 4 205 344 343 226 4 345 272 311 342 4 204 345 310 343 4 342 249 346 271 4 293 342 347 270 4 343 248 203 346 4 292 343 202 347 4 352 313 350 239 4 213 352 351 238 4 353 312 299 350 4 212 353 298 351 4 350 277 348 311 4 201 350 349 310 4 351 276 211 348 4 200 351 210 349 4 348 241 352 275 4 301 348 353 274 4 349 240 199 352 4 300 349 198 353 4 358 225 356 291 4 317 358 357 290 4 359 224 183 356 4 316 359 182 357 4 356 281 354 223 4 197 356 355 222 4 357 280 315 354 4 196 357 314 355 4 354 293 358 279 4 185 354 359 278 4 355 292 195 358 4 184 355 194 359 4 364 317 362 299 4 209 364 363 298 4 365 316 175 362 4 208 365 174 363 4 362 285 360 315 4 193 362 361 314 4 363 284 207 360 4 192 363 206 361 4 360 301 364 283 4 177 360 365 282 4 361 300 191 364 4 176 361 190 365 564 0 6 8 10 12 14 16 18 20 22 24 26 28 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 282 0 0 0 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 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 0 0 0 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 282 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 185 186 1 0 0 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1128 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 366 0 0 0 2 0 1 2 0 2 2 0 4 2 1 3 2 1 5 2 2 3 2 2 6 2 3 7 2 4 5 2 4 6 2 5 7 2 6 7 2 0 8 2 8 1 2 0 9 2 9 2 2 0 10 2 10 4 2 1 11 2 11 3 2 1 12 2 12 5 2 2 13 2 13 3 2 2 14 2 14 6 2 3 15 2 15 7 2 4 16 2 16 5 2 4 17 2 17 6 2 5 18 2 18 7 2 6 19 2 19 7 2 10 20 2 20 12 2 8 20 2 20 16 2 8 21 2 21 13 2 9 21 2 21 11 2 9 22 2 22 17 2 10 22 2 22 14 2 11 23 2 23 18 2 12 23 2 23 15 2 14 24 2 24 15 2 13 24 2 24 19 2 16 25 2 25 19 2 17 25 2 25 18 2 26 25 2 21 26 2 26 23 2 22 26 2 26 24 2 20 26 2 0 27 2 27 8 2 8 28 2 28 1 2 0 29 2 29 9 2 9 30 2 30 2 2 0 31 2 31 10 2 10 32 2 32 4 2 1 33 2 33 11 2 11 34 2 34 3 2 1 35 2 35 12 2 12 36 2 36 5 2 2 37 2 37 13 2 13 38 2 38 3 2 2 39 2 39 14 2 14 40 2 40 6 2 3 41 2 41 15 2 15 42 2 42 7 2 4 43 2 43 16 2 16 44 2 44 5 2 4 45 2 45 17 2 17 46 2 46 6 2 5 47 2 47 18 2 18 48 2 48 7 2 6 49 2 49 19 2 19 50 2 50 7 2 10 51 2 51 20 2 20 52 2 52 12 2 8 53 2 53 20 2 20 54 2 54 16 2 8 55 2 55 21 2 21 56 2 56 13 2 9 57 2 57 21 2 21 58 2 58 11 2 9 59 2 59 22 2 22 60 2 60 17 2 10 61 2 61 22 2 22 62 2 62 14 2 11 63 2 63 23 2 23 64 2 64 18 2 12 65 2 65 23 2 23 66 2 66 15 2 14 67 2 67 24 2 24 68 2 68 15 2 13 69 2 69 24 2 24 70 2 70 19 2 16 71 2 71 25 2 25 72 2 72 19 2 17 73 2 73 25 2 25 74 2 74 18 2 26 75 2 75 25 2 21 76 2 76 26 2 26 77 2 77 23 2 22 78 2 78 26 2 26 79 2 79 24 2 20 80 2 80 26 2 31 81 2 81 53 2 27 81 2 81 51 2 32 82 2 82 54 2 51 82 2 82 43 2 53 83 2 83 35 2 28 83 2 83 52 2 54 84 2 84 36 2 52 84 2 84 44 2 27 85 2 85 57 2 29 85 2 85 55 2 28 86 2 86 58 2 55 86 2 86 33 2 57 87 2 87 37 2 30 87 2 87 56 2 58 88 2 88 38 2 56 88 2 88 34 2 29 89 2 89 61 2 31 89 2 89 59 2 30 90 2 90 62 2 59 90 2 90 39 2 61 91 2 91 45 2 32 91 2 91 60 2 62 92 2 92 46 2 60 92 2 92 40 2 33 93 2 93 65 2 35 93 2 93 63 2 34 94 2 94 66 2 63 94 2 94 41 2 65 95 2 95 47 2 36 95 2 95 64 2 66 96 2 96 48 2 64 96 2 96 42 2 39 97 2 97 69 2 37 97 2 97 67 2 40 98 2 98 70 2 67 98 2 98 49 2 69 99 2 99 41 2 38 99 2 99 68 2 70 100 2 100 42 2 68 100 2 100 50 2 43 101 2 101 73 2 45 101 2 101 71 2 44 102 2 102 74 2 71 102 2 102 47 2 73 103 2 103 49 2 46 103 2 103 72 2 74 104 2 104 50 2 72 104 2 104 48 2 77 105 2 105 68 2 79 105 2 105 66 2 78 106 2 106 67 2 62 106 2 106 79 2 52 107 2 107 77 2 80 107 2 107 65 2 51 108 2 108 78 2 61 108 2 108 80 2 75 109 2 109 64 2 77 109 2 109 74 2 76 110 2 110 63 2 58 110 2 110 77 2 60 111 2 111 75 2 78 111 2 111 73 2 59 112 2 112 76 2 57 112 2 112 78 2 79 113 2 113 72 2 75 113 2 113 70 2 80 114 2 114 71 2 54 114 2 114 75 2 56 115 2 115 79 2 76 115 2 115 69 2 55 116 2 116 80 2 53 116 2 116 76 2 124 104 2 105 124 2 124 96 2 113 124 2 124 100 2 109 124 2 123 103 2 106 123 2 123 113 2 92 123 2 123 98 2 111 123 2 122 102 2 107 122 2 122 95 2 114 122 2 122 109 2 84 122 2 121 101 2 108 121 2 121 114 2 91 121 2 121 111 2 82 121 2 120 105 2 88 120 2 120 94 2 115 120 2 120 99 2 110 120 2 119 106 2 87 119 2 119 115 2 90 119 2 119 97 2 112 119 2 118 107 2 86 118 2 118 93 2 116 118 2 118 110 2 83 118 2 117 108 2 85 117 2 117 116 2 89 117 2 117 112 2 81 117 366 0 12 14 16 18 20 22 24 26 28 30 32 34 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 366 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 366 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 317 318 1 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 2.50000000000000000e-01 3 0.00000000000000000e+00 0.00000000000000000e+00 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 2.50000000000000000e-01 3 1.00000000000000000e+00 0.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 2.50000000000000000e-01 3 0.00000000000000000e+00 1.00000000000000000e+00 7.50000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 2.50000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 7.50000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 1.00000000000000000e+00 3 0.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 2.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 125 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 3 366 0 0 300 0 0 282 0 0 240 0 0 73 3 0 1 8 64 64 3 0 0 0 64 0
+0 3 1 0 0 1 0 0 0 6 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 3 6 0 2 3 0 4 1 5 4 0 0 2 4 6 1 0 7 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 0 0 0 1 0 0 0 0 0 6 0 1 1 1 1 1 1 2
+1 3 8 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 48 0 -1 -1 1 1 -1 -1 1 2 -1 -1 1 4 1 0 -1 -1 -1 -1 1 3 -1 -1 1 5 -1 -1 1 3 1 0 -1 -1 -1 -1 1 6 1 2 -1 -1 1 1 -1 -1 -1 -1 1 7 -1 -1 1 5 -1 -1 1 6 1 0 -1 -1 1 4 -1 -1 -1 -1 1 7 1 1 -1 -1 -1 -1 1 7 1 4 -1 -1 1 2 -1 -1 1 6 -1 -1 1 5 -1 -1 1 3 -1 -1 8 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 3 48 0 14 41 6 37 10 33 41 18 8 35 11 32 15 40 37 22 12 31 40 19 35 24 13 30 16 39 7 36 33 26 39 20 9 34 32 27 17 38 36 23 31 28 38 21 34 25 30 29 32 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 8 0 7 7 7 7 7 7 7 7 8 1 1 1 1 1 1 1 1 8 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 8 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 8 0 0 0 0 0 0 0 0 0 0 48 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
+2 3 64 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 0 -1 -1 2 1 -1 -1 2 2 -1 -1 2 4 2 0 2 8 -1 -1 2 3 -1 -1 2 5 -1 -1 2 3 2 0 2 16 -1 -1 2 6 2 2 2 10 2 1 2 17 -1 -1 2 7 -1 -1 2 5 -1 -1 2 6 2 0 2 32 2 4 2 12 -1 -1 2 7 2 1 2 33 -1 -1 2 7 2 4 2 20 2 2 2 34 2 6 2 14 2 5 2 21 2 3 2 35 2 1 2 9 -1 -1 2 10 -1 -1 2 12 2 8 -1 -1 -1 -1 2 11 -1 -1 2 13 2 3 2 11 2 8 2 24 -1 -1 2 14 2 10 -1 -1 2 9 2 25 -1 -1 2 15 2 5 2 13 -1 -1 2 14 2 8 2 40 2 12 -1 -1 -1 -1 2 15 2 9 2 41 2 7 2 15 2 12 2 28 2 10 2 42 2 14 -1 -1 2 13 2 29 2 11 2 43 -1 -1 2 17 2 2 2 18 -1 -1 2 20 2 16 2 24 2 3 2 19 -1 -1 2 21 -1 -1 2 19 2 16 -1 -1 -1 -1 2 22 2 18 2 26 2 17 -1 -1 -1 -1 2 23 -1 -1 2 21 2 6 2 22 2 16 2 48 2 20 2 28 2 7 2 23 2 17 2 49 -1 -1 2 23 2 20 -1 -1 2 18 2 50 2 22 2 30 2 21 -1 -1 2 19 2 51 2 17 2 25 2 10 2 26 -1 -1 2 28 2 24 -1 -1 2 11 2 27 -1 -1 2 29 2 19 2 27 2 24 -1 -1 -1 -1 2 30 2 26 -1 -1 2 25 -1 -1 -1 -1 2 31 2 21 2 29 2 14 2 30 2 24 2 56 2 28 -1 -1 2 15 2 31 2 25 2 57 2 23 2 31 2 28 -1 -1 2 26 2 58 2 30 -1 -1 2 29 -1 -1 2 27 2 59 -1 -1 2 33 -1 -1 2 34 2 4 2 36 2 32 2 40 -1 -1 2 35 2 5 2 37 -1 -1 2 35 2 32 2 48 2 6 2 38 2 34 2 42 2 33 2 49 2 7 2 39 -1 -1 2 37 -1 -1 2 38 2 32 -1 -1 2 36 2 44 -1 -1 2 39 2 33 -1 -1 -1 -1 2 39 2 36 2 52 2 34 -1 -1 2 38 2 46 2 37 2 53 2 35 -1 -1 2 33 2 41 -1 -1 2 42 2 12 2 44 2 40 -1 -1 -1 -1 2 43 2 13 2 45 2 35 2 43 2 40 2 56 2 14 2 46 2 42 -1 -1 2 41 2 57 2 15 2 47 2 37 2 45 -1 -1 2 46 2 40 -1 -1 2 44 -1 -1 -1 -1 2 47 2 41 -1 -1 2 39 2 47 2 44 2 60 2 42 -1 -1 2 46 -1 -1 2 45 2 61 2 43 -1 -1 -1 -1 2 49 2 34 2 50 2 20 2 52 2 48 2 56 2 35 2 51 2 21 2 53 -1 -1 2 51 2 48 -1 -1 2 22 2 54 2 50 2 58 2 49 -1 -1 2 23 2 55 -1 -1 2 53 2 38 2 54 2 48 -1 -1 2 52 2 60 2 39 2 55 2 49 -1 -1 -1 -1 2 55 2 52 -1 -1 2 50 -1 -1 2 54 2 62 2 53 -1 -1 2 51 -1 -1 2 49 2 57 2 42 2 58 2 28 2 60 2 56 -1 -1 2 43 2 59 2 29 2 61 2 51 2 59 2 56 -1 -1 2 30 2 62 2 58 -1 -1 2 57 -1 -1 2 31 2 63 2 53 2 61 2 46 2 62 2 56 -1 -1 2 60 -1 -1 2 47 2 63 2 57 -1 -1 2 55 2 63 2 60 -1 -1 2 58 -1 -1 2 62 -1 -1 2 61 -1 -1 2 59 -1 -1 64 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 0 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 0 3 384 0 74 281 42 277 58 273 281 182 44 275 59 272 75 280 277 166 60 271 280 183 275 168 61 270 76 279 43 276 273 150 279 184 45 274 272 151 77 278 276 167 271 152 278 185 274 169 270 153 182 269 50 265 62 261 269 90 52 263 63 260 183 268 265 158 64 259 268 91 263 160 65 258 184 267 51 264 261 146 267 92 53 262 260 147 185 266 264 159 259 148 266 93 262 161 258 149 78 257 166 253 66 249 257 178 168 251 67 248 79 256 253 106 68 247 256 179 251 108 69 246 80 255 167 252 249 142 255 180 169 250 248 143 81 254 252 107 247 144 254 181 250 109 246 145 178 245 158 241 70 237 245 94 160 239 71 236 179 244 241 114 72 235 244 95 239 116 73 234 180 243 159 240 237 138 243 96 161 238 236 139 181 242 240 115 235 140 242 97 238 117 234 141 82 233 46 229 150 225 233 174 48 227 151 224 83 232 229 162 152 223 232 175 227 164 153 222 84 231 47 228 225 122 231 176 49 226 224 123 85 230 228 163 223 124 230 177 226 165 222 125 174 221 54 217 146 213 221 98 56 215 147 212 175 220 217 154 148 211 220 99 215 156 149 210 176 219 55 216 213 126 219 100 57 214 212 127 177 218 216 155 211 128 218 101 214 157 210 129 86 209 162 205 142 201 209 170 164 203 143 200 87 208 205 110 144 199 208 171 203 112 145 198 88 207 163 204 201 130 207 172 165 202 200 131 89 206 204 111 199 132 206 173 202 113 198 133 170 197 154 193 138 189 197 102 156 191 139 188 171 196 193 118 140 187 196 103 191 120 141 186 172 195 155 192 189 134 195 104 157 190 188 135 173 194 192 119 187 136 194 105 190 121 186 137 256 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 64 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 64 0 64 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 384 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 15 1 0
+3 3 2 1128 0 0 8 2 4 1 3 0 5 2 6 1 9 4 7 3 10 5 11 6 7 9 10 8 11 12 36 16 38 36 28 17 39 13 37 38 20 37 29 39 21 14 40 12 42 40 18 13 43 15 41 42 22 41 19 43 23 16 44 14 46 44 24 15 47 17 45 46 30 45 25 47 31 20 48 18 50 48 26 19 51 21 49 50 32 49 27 51 33 22 52 24 54 52 34 25 55 23 53 54 26 53 35 55 27 30 56 28 58 56 32 29 59 31 57 58 34 57 33 59 35 64 51 62 53 47 64 63 52 65 50 37 62 46 65 36 63 62 59 60 49 43 62 61 48 63 58 45 60 42 63 44 61 60 55 64 57 39 60 65 56 61 54 41 64 38 61 40 65 66 174 74 176 174 114 75 177 67 175 176 118 175 115 177 119 114 178 76 180 178 98 77 181 115 179 180 120 179 99 181 121 68 182 118 184 182 116 119 185 69 183 184 82 183 117 185 83 116 186 120 188 186 100 121 189 117 187 188 84 187 101 189 85 70 190 66 192 190 122 67 193 71 191 192 126 191 123 193 127 122 194 68 196 194 78 69 197 123 195 196 128 195 79 197 129 72 198 126 200 198 124 127 201 73 199 200 86 199 125 201 87 124 202 128 204 202 80 129 205 125 203 204 88 203 81 205 89 74 206 70 208 206 130 71 209 75 207 208 134 207 131 209 135 130 210 72 212 210 90 73 213 131 211 212 136 211 91 213 137 76 214 134 216 214 132 135 217 77 215 216 102 215 133 217 103 132 218 136 220 218 92 137 221 133 219 220 104 219 93 221 105 82 222 78 224 222 138 79 225 83 223 224 142 223 139 225 143 138 226 80 228 226 94 81 229 139 227 228 144 227 95 229 145 84 230 142 232 230 140 143 233 85 231 232 106 231 141 233 107 140 234 144 236 234 96 145 237 141 235 236 108 235 97 237 109 86 238 90 240 238 146 91 241 87 239 240 150 239 147 241 151 146 242 92 244 242 110 93 245 147 243 244 152 243 111 245 153 88 246 150 248 246 148 151 249 89 247 248 94 247 149 249 95 148 250 152 252 250 112 153 253 149 251 252 96 251 113 253 97 102 254 98 256 254 154 99 257 103 255 256 158 255 155 257 159 154 258 100 260 258 106 101 261 155 259 260 160 259 107 261 161 104 262 158 264 262 156 159 265 105 263 264 110 263 157 265 111 156 266 160 268 266 108 161 269 157 267 268 112 267 109 269 113 170 270 166 272 270 144 167 273 171 271 272 148 271 145 273 149 136 274 168 276 274 170 169 277 137 275 276 146 275 171 277 147 172 278 116 280 278 142 117 281 173 279 280 166 279 143 281 167 134 282 114 284 282 172 115 285 135 283 284 168 283 173 285 169 166 286 162 288 286 160 163 289 167 287 288 140 287 161 289 141 128 290 164 292 290 166 165 293 129 291 292 138 291 167 293 139 168 294 132 296 294 158 133 297 169 295 296 162 295 159 297 163 126 298 130 300 298 168 131 301 127 299 300 164 299 169 301 165 162 302 170 304 302 152 171 305 163 303 304 156 303 153 305 157 120 306 172 308 306 162 173 309 121 307 308 154 307 163 309 155 164 310 124 312 310 150 125 313 165 311 312 170 311 151 313 171 118 314 122 316 314 164 123 317 119 315 316 172 315 165 317 173 322 237 320 251 305 322 321 250 323 236 287 320 304 323 286 321 320 269 318 235 273 320 319 234 321 268 303 318 272 321 302 319 318 253 322 267 289 318 323 266 319 252 271 322 288 319 270 323 328 305 326 243 221 328 327 242 329 304 295 326 220 329 294 327 326 265 324 303 277 326 325 302 327 264 219 324 276 327 218 325 324 245 328 263 297 324 329 262 325 244 275 328 296 325 274 329 334 233 332 287 309 334 333 286 335 232 187 332 308 335 186 333 332 261 330 231 281 332 331 230 333 260 307 330 280 333 306 331 330 289 334 259 189 330 335 258 331 288 279 334 188 331 278 335 340 309 338 295 217 340 339 294 341 308 179 338 216 341 178 339 338 257 336 307 285 338 337 306 339 256 215 336 284 339 214 337 336 297 340 255 181 336 341 254 337 296 283 340 180 337 282 341 346 229 344 247 313 346 345 246 347 228 291 344 312 347 290 345 344 273 342 227 205 344 343 226 345 272 311 342 204 345 310 343 342 249 346 271 293 342 347 270 343 248 203 346 292 343 202 347 352 313 350 239 213 352 351 238 353 312 299 350 212 353 298 351 350 277 348 311 201 350 349 310 351 276 211 348 200 351 210 349 348 241 352 275 301 348 353 274 349 240 199 352 300 349 198 353 358 225 356 291 317 358 357 290 359 224 183 356 316 359 182 357 356 281 354 223 197 356 355 222 357 280 315 354 196 357 314 355 354 293 358 279 185 354 359 278 355 292 195 358 184 355 194 359 364 317 362 299 209 364 363 298 365 316 175 362 208 365 174 363 362 285 360 315 193 362 361 314 363 284 207 360 192 363 206 361 360 301 364 283 177 360 365 282 361 300 191 364 176 361 190 365 564 0 6 8 10 12 14 16 18 20 22 24 26 28 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 282 0 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 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 0 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 282 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 185 186 1 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 732 0 0 1 0 2 0 4 1 3 1 5 2 3 2 6 3 7 4 5 4 6 5 7 6 7 0 8 8 1 0 9 9 2 0 10 10 4 1 11 11 3 1 12 12 5 2 13 13 3 2 14 14 6 3 15 15 7 4 16 16 5 4 17 17 6 5 18 18 7 6 19 19 7 10 20 20 12 8 20 20 16 8 21 21 13 9 21 21 11 9 22 22 17 10 22 22 14 11 23 23 18 12 23 23 15 14 24 24 15 13 24 24 19 16 25 25 19 17 25 25 18 26 25 21 26 26 23 22 26 26 24 20 26 0 27 27 8 8 28 28 1 0 29 29 9 9 30 30 2 0 31 31 10 10 32 32 4 1 33 33 11 11 34 34 3 1 35 35 12 12 36 36 5 2 37 37 13 13 38 38 3 2 39 39 14 14 40 40 6 3 41 41 15 15 42 42 7 4 43 43 16 16 44 44 5 4 45 45 17 17 46 46 6 5 47 47 18 18 48 48 7 6 49 49 19 19 50 50 7 10 51 51 20 20 52 52 12 8 53 53 20 20 54 54 16 8 55 55 21 21 56 56 13 9 57 57 21 21 58 58 11 9 59 59 22 22 60 60 17 10 61 61 22 22 62 62 14 11 63 63 23 23 64 64 18 12 65 65 23 23 66 66 15 14 67 67 24 24 68 68 15 13 69 69 24 24 70 70 19 16 71 71 25 25 72 72 19 17 73 73 25 25 74 74 18 26 75 75 25 21 76 76 26 26 77 77 23 22 78 78 26 26 79 79 24 20 80 80 26 31 81 81 53 27 81 81 51 32 82 82 54 51 82 82 43 53 83 83 35 28 83 83 52 54 84 84 36 52 84 84 44 27 85 85 57 29 85 85 55 28 86 86 58 55 86 86 33 57 87 87 37 30 87 87 56 58 88 88 38 56 88 88 34 29 89 89 61 31 89 89 59 30 90 90 62 59 90 90 39 61 91 91 45 32 91 91 60 62 92 92 46 60 92 92 40 33 93 93 65 35 93 93 63 34 94 94 66 63 94 94 41 65 95 95 47 36 95 95 64 66 96 96 48 64 96 96 42 39 97 97 69 37 97 97 67 40 98 98 70 67 98 98 49 69 99 99 41 38 99 99 68 70 100 100 42 68 100 100 50 43 101 101 73 45 101 101 71 44 102 102 74 71 102 102 47 73 103 103 49 46 103 103 72 74 104 104 50 72 104 104 48 77 105 105 68 79 105 105 66 78 106 106 67 62 106 106 79 52 107 107 77 80 107 107 65 51 108 108 78 61 108 108 80 75 109 109 64 77 109 109 74 76 110 110 63 58 110 110 77 60 111 111 75 78 111 111 73 59 112 112 76 57 112 112 78 79 113 113 72 75 113 113 70 80 114 114 71 54 114 114 75 56 115 115 79 76 115 115 69 55 116 116 80 53 116 116 76 124 104 105 124 124 96 113 124 124 100 109 124 123 103 106 123 123 113 92 123 123 98 111 123 122 102 107 122 122 95 114 122 122 109 84 122 121 101 108 121 121 114 91 121 121 111 82 121 120 105 88 120 120 94 115 120 120 99 110 120 119 106 87 119 119 115 90 119 119 97 112 119 118 107 86 118 118 93 116 118 118 110 83 118 117 108 85 117 117 116 89 117 117 112 81 117 366 0 12 14 16 18 20 22 24 26 28 30 32 34 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 366 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 366 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 317 318 1 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1128 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 125 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 2.50000000000000000e-01 3 0.00000000000000000e+00 0.00000000000000000e+00 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 2.50000000000000000e-01 3 1.00000000000000000e+00 0.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 2.50000000000000000e-01 3 0.00000000000000000e+00 1.00000000000000000e+00 7.50000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 2.50000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 7.50000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 1.00000000000000000e+00 3 0.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 2.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 125 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 3 366 0 0 300 0 0 282 0 0 240 0 0 73 3 0 1 8 64 64 3 0 0 0 64 0
 
 DEAL::OK
index c27cb7c205bd46e621c96d6333b1fae9d9223401..2b5e5d46999254e40fb772fea02745c8bdbd1403 100644 (file)
@@ -1,34 +1,34 @@
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 2 0 0 1 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 1 2 0 0 4 1 0 0 0 2 0 2 0 2 2 2 1 2 0 0 -1 0 0 2 1 1 2 0 1 2 0 0 2 2 0 4294967295 4294967295 1 0 1 2 0 0 3 2 2
-2 4 0 0 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 1 1 2 1 2 3 2 2 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 1 0 4 0 2 0 3 2 3 2 2 2 4 2 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 0 0 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 1 2 1 4 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 5.00000000000000000e-01 1 2.50000000000000000e-01 1 7.50000000000000000e-01 5 1 1 1 1 0 0 0 0 3 5 3 0 1 2 2 3 3 0 0 1 2 0 0 0 23 1 0
-3 2 0 0 0 0 0 1 1 23
+0 1 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 1 2 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 1 2 0 0 1 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 1 2 0 0 4 1 0 0 0 1 4 0 0 2 2 1 2 0 0 -1 0 0 2 1 1 2 0 1 2 0 0 2 2 0 4294967295 4294967295 1 0 1 2 0 0 3 2 2
+2 1 4 0 0 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 1 1 2 1 2 3 2 2 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 1 0 1 8 0 0 3 3 2 2 4 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 0 0 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 1 2 1 4 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 5.00000000000000000e-01 1 2.50000000000000000e-01 1 7.50000000000000000e-01 5 1 1 1 1 0 0 0 0 3 5 3 0 1 2 2 3 3 0 0 1 2 0 0 0 20 1 0
+3 2 0 0 0 0 0 1 1 20
 4 5 0 0 4294967295 1 4294967295 2 4294967295 3 4294967295 4 4294967295
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 2 0 0 1 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 1 2 0 0 4 1 0 0 2 1 1 2 0 2 0 2 2 2 1 2 0 0 -1 0 0 2 1 1 2 0 1 2 0 0 2 2 0 4294967295 4294967295 1 0 1 2 0 0 3 2 2
-2 4 0 0 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 1 1 2 1 2 3 2 2 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 1 4 1 1 1 1 4 0 2 0 3 2 3 2 2 2 4 2 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 0 0 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 1 2 1 4 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 2.50000000000000000e-01 0.00000000000000000e+00 2 7.50000000000000000e-01 0.00000000000000000e+00 5 1 1 1 1 0 0 0 0 3 5 3 0 1 2 2 3 3 0 0 1 2 0 0 0 23 1 0
-3 2 0 0 0 0 0 1 1 23
+0 1 1 0 0 1 0 0 0 2 0 0 0 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 1 2 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 1 2 0 0 1 2 0 0 4 0 -1 -1 1 1 1 0 -1 -1 2 0 0 1 2 0 0 4 1 0 0 2 1 1 1 4 0 0 2 2 1 2 0 0 -1 0 0 2 1 1 2 0 1 2 0 0 2 2 0 4294967295 4294967295 1 0 1 2 0 0 3 2 2
+2 1 4 0 0 0 0 0 4 0 0 0 0 8 0 -1 -1 2 1 2 0 1 1 2 1 2 3 2 2 -1 -1 4 0 0 0 0 0 4 0 0 0 0 0 2 0 0 1 4 1 1 1 1 1 8 0 0 3 3 2 2 4 4 1 4 0 -1 -1 -1 -1 0 0 4 1 1 0 0 4 0 0 0 0 4 0 0 0 0 0 4 0 4294967295 4294967295 4294967295 4294967295 1 2 1 4 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 2.50000000000000000e-01 0.00000000000000000e+00 2 7.50000000000000000e-01 0.00000000000000000e+00 5 1 1 1 1 0 0 0 0 3 5 3 0 1 2 2 3 3 0 0 1 2 0 0 0 20 1 0
+3 2 0 0 0 0 0 1 1 20
 4 5 0 0 4294967295 1 4294967295 2 4294967295 3 4294967295 4 4294967295
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 0 0 1 0 0 0 4 1 2 0 3 2 0 0 2 0 0 1 0 0 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 4 0 0 1 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 1 0 0 4 0 0 4 0 0 2 0 0 0 0 4 0 4 6 12 4 14 4 12 8 5 15 4 7 13 14 10 4 13 9 15 11 8 0 0 2 -1 -1 -1 -1 -1 -1 4 0 3 0 0 0 4 1 1 1 1 4 0 1 0 0 4 0 0 2 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 3 0 0 2 2
-2 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 1 1 -1 -1 2 3 -1 -1 2 3 2 0 1 2 2 2 1 1 2 1 1 2 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 0 16 0 4 18 24 16 26 4 24 20 17 27 4 19 25 26 22 4 25 21 27 23 4 32 44 18 46 4 44 24 19 47 4 33 45 46 38 4 45 25 47 39 4 22 48 36 50 4 48 34 37 51 4 23 49 50 28 4 49 35 51 29 4 34 52 38 54 4 52 26 39 55 4 35 53 54 30 4 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 2 1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 1 0
-3 0 0 0 0 56 0 0 0 2 0 1 2 0 2 2 1 3 2 2 3 2 0 4 2 4 1 2 0 5 2 5 2 2 1 6 2 6 3 2 2 7 2 7 3 2 4 8 2 8 7 2 5 8 2 8 6 2 0 9 2 9 4 2 0 10 2 10 5 2 4 11 2 11 8 2 5 12 2 12 8 2 9 13 2 13 12 2 10 13 2 13 11 2 2 15 2 15 7 2 7 16 2 16 3 2 4 17 2 17 8 2 8 18 2 18 7 2 5 19 2 19 8 2 8 20 2 20 6 2 9 21 2 21 19 2 11 21 2 21 17 2 10 22 2 22 20 2 17 22 2 22 13 2 19 23 2 23 15 2 12 23 2 23 18 2 20 24 2 24 16 2 18 24 2 24 14 56 0 4 6 8 10 16 -1 18 -1 -1 -1 -1 -1 20 -1 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 27 24 1 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 5.00000000000000000e-01 2 1.00000000000000000e+00 5.00000000000000000e-01 2 5.00000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 2.50000000000000000e-01 2 5.00000000000000000e-01 2.50000000000000000e-01 2 2.50000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 2.50000000000000000e-01 2 1.00000000000000000e+00 7.50000000000000000e-01 2 2.50000000000000000e-01 1.00000000000000000e+00 2 7.50000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 2.50000000000000000e-01 2 5.00000000000000000e-01 7.50000000000000000e-01 2 2.50000000000000000e-01 5.00000000000000000e-01 2 7.50000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 2.50000000000000000e-01 2 7.50000000000000000e-01 2.50000000000000000e-01 2 2.50000000000000000e-01 7.50000000000000000e-01 2 7.50000000000000000e-01 7.50000000000000000e-01 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 28 0 0 20 0 0 9 3 0 1 4 4 7 3 0 0 3 4 0
+0 2 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 2 4 0 1 2 0 3 2 0 0 2 1 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 2 4 0 0 1 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 1 0 0 4 0 0 4 0 0 2 0 0 0 0 2 16 0 6 12 4 14 12 8 5 15 7 13 14 10 13 9 15 11 8 0 0 2 -1 -1 -1 -1 -1 -1 4 0 3 0 0 0 4 1 1 1 1 4 0 1 0 0 4 0 0 2 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 3 0 0 2 2
+2 2 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 1 1 -1 -1 2 3 -1 -1 2 3 2 0 1 2 2 2 1 1 2 1 1 2 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 0 2 64 0 18 24 16 26 24 20 17 27 19 25 26 22 25 21 27 23 32 44 18 46 44 24 19 47 33 45 46 38 45 25 47 39 22 48 36 50 48 34 37 51 23 49 50 28 49 35 51 29 34 52 38 54 52 26 39 55 35 53 54 30 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 2 1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 1 0
+3 2 1 112 0 0 1 0 2 1 3 2 3 0 4 4 1 0 5 5 2 1 6 6 3 2 7 7 3 4 8 8 7 5 8 8 6 0 9 9 4 0 10 10 5 4 11 11 8 5 12 12 8 9 13 13 12 10 13 13 11 2 15 15 7 7 16 16 3 4 17 17 8 8 18 18 7 5 19 19 8 8 20 20 6 9 21 21 19 11 21 21 17 10 22 22 20 17 22 22 13 19 23 23 15 12 23 23 18 20 24 24 16 18 24 24 14 56 0 4 6 8 10 16 -1 18 -1 -1 -1 -1 -1 20 -1 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 27 24 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 2 5.00000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 5.00000000000000000e-01 2 1.00000000000000000e+00 5.00000000000000000e-01 2 5.00000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 0.00000000000000000e+00 2 0.00000000000000000e+00 2.50000000000000000e-01 2 5.00000000000000000e-01 2.50000000000000000e-01 2 2.50000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 2.50000000000000000e-01 2 1.00000000000000000e+00 7.50000000000000000e-01 2 2.50000000000000000e-01 1.00000000000000000e+00 2 7.50000000000000000e-01 1.00000000000000000e+00 2 5.00000000000000000e-01 2.50000000000000000e-01 2 5.00000000000000000e-01 7.50000000000000000e-01 2 2.50000000000000000e-01 5.00000000000000000e-01 2 7.50000000000000000e-01 5.00000000000000000e-01 2 2.50000000000000000e-01 2.50000000000000000e-01 2 7.50000000000000000e-01 2.50000000000000000e-01 2 2.50000000000000000e-01 7.50000000000000000e-01 2 7.50000000000000000e-01 7.50000000000000000e-01 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 28 0 0 20 0 0 9 3 0 1 4 4 7 3 0 0 3 4 0
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 0 0 1 0 0 0 4 1 2 0 3 2 0 0 2 0 0 1 0 0 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
-1 4 0 0 1 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 1 0 0 4 0 0 4 0 0 2 0 0 0 4 1 1 1 1 4 0 4 6 12 4 14 4 12 8 5 15 4 7 13 14 10 4 13 9 15 11 8 0 0 2 -1 -1 -1 -1 -1 -1 4 0 3 0 0 0 4 1 1 1 1 4 0 1 0 0 4 0 0 2 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 3 0 0 2 2
-2 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 1 1 -1 -1 2 3 -1 -1 2 3 2 0 1 2 2 2 1 1 2 1 1 2 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 0 4 18 24 16 26 4 24 20 17 27 4 19 25 26 22 4 25 21 27 23 4 32 44 18 46 4 44 24 19 47 4 33 45 46 38 4 45 25 47 39 4 22 48 36 50 4 48 34 37 51 4 23 49 50 28 4 49 35 51 29 4 34 52 38 54 4 52 26 39 55 4 35 53 54 30 4 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 2 1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 1 0
-3 0 0 0 0 56 0 0 0 2 0 1 2 0 2 2 1 3 2 2 3 2 0 4 2 4 1 2 0 5 2 5 2 2 1 6 2 6 3 2 2 7 2 7 3 2 4 8 2 8 7 2 5 8 2 8 6 2 0 9 2 9 4 2 0 10 2 10 5 2 4 11 2 11 8 2 5 12 2 12 8 2 9 13 2 13 12 2 10 13 2 13 11 2 2 15 2 15 7 2 7 16 2 16 3 2 4 17 2 17 8 2 8 18 2 18 7 2 5 19 2 19 8 2 8 20 2 20 6 2 9 21 2 21 19 2 11 21 2 21 17 2 10 22 2 22 20 2 17 22 2 22 13 2 19 23 2 23 15 2 12 23 2 23 18 2 20 24 2 24 16 2 18 24 2 24 14 56 0 4 6 8 10 16 -1 18 -1 -1 -1 -1 -1 20 -1 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 27 24 1 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 28 0 0 20 0 0 9 3 0 1 4 4 7 3 0 0 3 4 0
+0 2 1 0 0 1 0 0 0 4 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 1 1 0 0 2 4 0 1 2 0 3 2 0 0 2 1 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 1 0 0 1 0 0 0 0 0 2
+1 2 4 0 0 1 0 0 4 0 0 0 0 16 0 -1 -1 1 1 -1 -1 1 2 1 0 -1 -1 -1 -1 1 3 -1 -1 1 3 1 0 -1 -1 1 2 -1 -1 1 1 -1 -1 4 0 0 1 0 0 4 0 0 4 0 0 2 0 0 0 4 1 1 1 1 2 16 0 6 12 4 14 12 8 5 15 7 13 14 10 13 9 15 11 8 0 0 2 -1 -1 -1 -1 -1 -1 4 0 3 0 0 0 4 1 1 1 1 4 0 1 0 0 4 0 0 2 0 0 4 0 4294967295 4294967295 4294967295 4294967295 3 0 1 4 0 0 3 0 0 2 2
+2 2 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 -1 -1 2 1 -1 -1 2 2 2 0 1 1 -1 -1 2 3 -1 -1 2 3 2 0 1 2 2 2 1 1 2 1 1 2 2 1 2 5 -1 -1 2 6 2 4 -1 -1 -1 -1 2 7 2 3 2 7 2 4 2 12 2 6 -1 -1 2 5 2 13 -1 -1 2 9 2 2 2 10 2 8 2 12 2 3 2 11 -1 -1 2 11 2 8 -1 -1 2 10 2 14 2 9 -1 -1 2 9 2 13 2 6 2 14 2 12 -1 -1 2 7 2 15 2 11 2 15 2 12 -1 -1 2 14 -1 -1 2 13 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 2 2 3 3 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 64 0 18 24 16 26 24 20 17 27 19 25 26 22 25 21 27 23 32 44 18 46 44 24 19 47 33 45 46 38 45 25 47 39 22 48 36 50 48 34 37 51 23 49 50 28 49 35 51 29 34 52 38 54 52 26 39 55 35 53 54 30 53 27 55 31 32 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 2 1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 1 0
+3 2 1 112 0 0 1 0 2 1 3 2 3 0 4 4 1 0 5 5 2 1 6 6 3 2 7 7 3 4 8 8 7 5 8 8 6 0 9 9 4 0 10 10 5 4 11 11 8 5 12 12 8 9 13 13 12 10 13 13 11 2 15 15 7 7 16 16 3 4 17 17 8 8 18 18 7 5 19 19 8 8 20 20 6 9 21 21 19 11 21 21 17 10 22 22 20 17 22 22 13 19 23 23 15 12 23 23 18 20 24 24 16 18 24 24 14 56 0 4 6 8 10 16 -1 18 -1 -1 -1 -1 -1 20 -1 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 56 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 56 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 27 24 1 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 28 0 0 20 0 0 9 3 0 1 4 4 7 3 0 0 3 4 0
 
 DEAL::0 0 0 3 0 0 2 1 0
-0 1 0 0 1 0 0 0 6 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 0 0 1 0 0 0 6 2 3 0 4 1 5 4 0 0 2 4 6 0 0 1 0 0 0 7 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 0 0 0 1 0 0 0 0 0 6 0 1 1 1 1 1 1 2
-1 8 0 0 1 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 48 0 -1 -1 1 1 -1 -1 1 2 -1 -1 1 4 1 0 -1 -1 -1 -1 1 3 -1 -1 1 5 -1 -1 1 3 1 0 -1 -1 -1 -1 1 6 1 2 -1 -1 1 1 -1 -1 -1 -1 1 7 -1 -1 1 5 -1 -1 1 6 1 0 -1 -1 1 4 -1 -1 -1 -1 1 7 1 1 -1 -1 -1 -1 1 7 1 4 -1 -1 1 2 -1 -1 1 6 -1 -1 1 5 -1 -1 1 3 -1 -1 8 0 0 1 0 0 0 0 0 0 8 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 8 0 6 14 41 6 37 10 33 6 41 18 8 35 11 32 6 15 40 37 22 12 31 6 40 19 35 24 13 30 6 16 39 7 36 33 26 6 39 20 9 34 32 27 6 17 38 36 23 31 28 6 38 21 34 25 30 29 32 0 0 2 4 6 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 0 7 0 0 0 0 0 0 0 8 1 1 1 1 1 1 1 1 8 0 1 0 0 0 0 0 0 8 0 0 2 0 0 0 0 0 0 8 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 8 0 0 3 0 0 0 0 0 0 2 48 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
-2 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 0 -1 -1 2 1 -1 -1 2 2 -1 -1 2 4 2 0 1 1 -1 -1 2 3 -1 -1 2 5 -1 -1 2 3 2 0 1 2 -1 -1 2 6 2 2 1 1 2 1 1 2 -1 -1 2 7 -1 -1 2 5 -1 -1 2 6 2 0 1 4 2 4 1 1 -1 -1 2 7 2 1 1 4 -1 -1 2 7 2 4 1 2 2 2 1 4 2 6 1 1 2 5 1 2 2 3 1 4 2 1 2 9 -1 -1 2 10 -1 -1 2 12 2 8 -1 -1 -1 -1 2 11 -1 -1 2 13 2 3 2 11 2 8 2 24 -1 -1 2 14 2 10 -1 -1 2 9 2 25 -1 -1 2 15 2 5 2 13 -1 -1 2 14 2 8 2 40 2 12 -1 -1 -1 -1 2 15 2 9 2 41 2 7 2 15 2 12 2 28 2 10 2 42 2 14 -1 -1 2 13 2 29 2 11 2 43 -1 -1 2 17 2 2 2 18 -1 -1 2 20 2 16 2 24 2 3 2 19 -1 -1 2 21 -1 -1 2 19 2 16 -1 -1 -1 -1 2 22 2 18 2 26 2 17 -1 -1 -1 -1 2 23 -1 -1 2 21 2 6 2 22 2 16 2 48 2 20 2 28 2 7 2 23 2 17 2 49 -1 -1 2 23 2 20 -1 -1 2 18 2 50 2 22 2 30 2 21 -1 -1 2 19 2 51 2 17 2 25 2 10 2 26 -1 -1 2 28 2 24 -1 -1 2 11 2 27 -1 -1 2 29 2 19 2 27 2 24 -1 -1 -1 -1 2 30 2 26 -1 -1 2 25 -1 -1 -1 -1 2 31 2 21 2 29 2 14 2 30 2 24 2 56 2 28 -1 -1 2 15 2 31 2 25 2 57 2 23 2 31 2 28 -1 -1 2 26 2 58 2 30 -1 -1 2 29 -1 -1 2 27 2 59 -1 -1 2 33 -1 -1 2 34 2 4 2 36 2 32 2 40 -1 -1 2 35 2 5 2 37 -1 -1 2 35 2 32 2 48 2 6 2 38 2 34 2 42 2 33 2 49 2 7 2 39 -1 -1 2 37 -1 -1 2 38 2 32 -1 -1 2 36 2 44 -1 -1 2 39 2 33 -1 -1 -1 -1 2 39 2 36 2 52 2 34 -1 -1 2 38 2 46 2 37 2 53 2 35 -1 -1 2 33 2 41 -1 -1 2 42 2 12 2 44 2 40 -1 -1 -1 -1 2 43 2 13 2 45 2 35 2 43 2 40 2 56 2 14 2 46 2 42 -1 -1 2 41 2 57 2 15 2 47 2 37 2 45 -1 -1 2 46 2 40 -1 -1 2 44 -1 -1 -1 -1 2 47 2 41 -1 -1 2 39 2 47 2 44 2 60 2 42 -1 -1 2 46 -1 -1 2 45 2 61 2 43 -1 -1 -1 -1 2 49 2 34 2 50 2 20 2 52 2 48 2 56 2 35 2 51 2 21 2 53 -1 -1 2 51 2 48 -1 -1 2 22 2 54 2 50 2 58 2 49 -1 -1 2 23 2 55 -1 -1 2 53 2 38 2 54 2 48 -1 -1 2 52 2 60 2 39 2 55 2 49 -1 -1 -1 -1 2 55 2 52 -1 -1 2 50 -1 -1 2 54 2 62 2 53 -1 -1 2 51 -1 -1 2 49 2 57 2 42 2 58 2 28 2 60 2 56 -1 -1 2 43 2 59 2 29 2 61 2 51 2 59 2 56 -1 -1 2 30 2 62 2 58 -1 -1 2 57 -1 -1 2 31 2 63 2 53 2 61 2 46 2 62 2 56 -1 -1 2 60 -1 -1 2 47 2 63 2 57 -1 -1 2 55 2 63 2 60 -1 -1 2 58 -1 -1 2 62 -1 -1 2 61 -1 -1 2 59 -1 -1 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 0 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 0 64 0 6 50 77 42 73 46 69 6 77 62 44 71 47 68 6 51 76 73 58 48 67 6 76 63 71 60 49 66 6 52 75 43 72 69 54 6 75 64 45 70 68 55 6 53 74 72 59 67 56 6 74 65 70 61 66 57 6 182 269 50 265 62 261 6 269 90 52 263 63 260 6 183 268 265 158 64 259 6 268 91 263 160 65 258 6 184 267 51 264 261 146 6 267 92 53 262 260 147 6 185 266 264 159 259 148 6 266 93 262 161 258 149 6 78 257 166 253 66 249 6 257 178 168 251 67 248 6 79 256 253 106 68 247 6 256 179 251 108 69 246 6 80 255 167 252 249 142 6 255 180 169 250 248 143 6 81 254 252 107 247 144 6 254 181 250 109 246 145 6 178 245 158 241 70 237 6 245 94 160 239 71 236 6 179 244 241 114 72 235 6 244 95 239 116 73 234 6 180 243 159 240 237 138 6 243 96 161 238 236 139 6 181 242 240 115 235 140 6 242 97 238 117 234 141 6 82 233 46 229 150 225 6 233 174 48 227 151 224 6 83 232 229 162 152 223 6 232 175 227 164 153 222 6 84 231 47 228 225 122 6 231 176 49 226 224 123 6 85 230 228 163 223 124 6 230 177 226 165 222 125 6 174 221 54 217 146 213 6 221 98 56 215 147 212 6 175 220 217 154 148 211 6 220 99 215 156 149 210 6 176 219 55 216 213 126 6 219 100 57 214 212 127 6 177 218 216 155 211 128 6 218 101 214 157 210 129 6 86 209 162 205 142 201 6 209 170 164 203 143 200 6 87 208 205 110 144 199 6 208 171 203 112 145 198 6 88 207 163 204 201 130 6 207 172 165 202 200 131 6 89 206 204 111 199 132 6 206 173 202 113 198 133 6 170 197 154 193 138 189 6 197 102 156 191 139 188 6 171 196 193 118 140 187 6 196 103 191 120 141 186 6 172 195 155 192 189 134 6 195 104 157 190 188 135 6 173 194 192 119 187 136 6 194 105 190 121 186 137 256 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 8 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 19 1 0
-3 0 0 0 0 282 0 0 0 4 0 8 2 4 4 1 3 0 5 4 2 6 1 9 4 4 7 3 10 4 5 11 6 7 4 9 10 8 11 4 12 36 16 38 4 36 28 17 39 4 13 37 38 20 4 37 29 39 21 4 14 40 12 42 4 40 18 13 43 4 15 41 42 22 4 41 19 43 23 4 16 44 14 46 4 44 24 15 47 4 17 45 46 30 4 45 25 47 31 4 20 48 18 50 4 48 26 19 51 4 21 49 50 32 4 49 27 51 33 4 22 52 24 54 4 52 34 25 55 4 23 53 54 26 4 53 35 55 27 4 30 56 28 58 4 56 32 29 59 4 31 57 58 34 4 57 33 59 35 4 64 51 62 53 4 47 64 63 52 4 65 50 37 62 4 46 65 36 63 4 62 59 60 49 4 43 62 61 48 4 63 58 45 60 4 42 63 44 61 4 60 55 64 57 4 39 60 65 56 4 61 54 41 64 4 38 61 40 65 4 66 90 70 92 4 90 72 71 93 4 67 91 92 74 4 91 73 93 75 4 68 94 66 96 4 94 76 67 97 4 69 95 96 78 4 95 77 97 79 4 70 98 68 100 4 98 80 69 101 4 71 99 100 82 4 99 81 101 83 4 82 102 72 104 4 102 88 73 105 4 83 103 104 86 4 103 89 105 87 4 78 106 80 108 4 106 86 81 109 4 79 107 108 84 4 107 87 109 85 4 74 110 76 112 4 110 84 77 113 4 75 111 112 88 4 111 85 113 89 4 118 113 116 107 4 101 118 117 106 4 119 112 91 116 4 100 119 90 117 4 116 105 114 111 4 97 116 115 110 4 117 104 99 114 4 96 117 98 115 4 114 109 118 103 4 93 114 119 102 4 115 108 95 118 4 92 115 94 119 4 130 210 72 212 4 210 90 73 213 4 131 211 212 136 4 211 91 213 137 4 76 214 134 216 4 214 132 135 217 4 77 215 216 102 4 215 133 217 103 4 132 218 136 220 4 218 92 137 221 4 133 219 220 104 4 219 93 221 105 4 82 222 78 224 4 222 138 79 225 4 83 223 224 142 4 223 139 225 143 4 138 226 80 228 4 226 94 81 229 4 139 227 228 144 4 227 95 229 145 4 84 230 142 232 4 230 140 143 233 4 85 231 232 106 4 231 141 233 107 4 140 234 144 236 4 234 96 145 237 4 141 235 236 108 4 235 97 237 109 4 86 238 90 240 4 238 146 91 241 4 87 239 240 150 4 239 147 241 151 4 146 242 92 244 4 242 110 93 245 4 147 243 244 152 4 243 111 245 153 4 88 246 150 248 4 246 148 151 249 4 89 247 248 94 4 247 149 249 95 4 148 250 152 252 4 250 112 153 253 4 149 251 252 96 4 251 113 253 97 4 102 254 98 256 4 254 154 99 257 4 103 255 256 158 4 255 155 257 159 4 154 258 100 260 4 258 106 101 261 4 155 259 260 160 4 259 107 261 161 4 104 262 158 264 4 262 156 159 265 4 105 263 264 110 4 263 157 265 111 4 156 266 160 268 4 266 108 161 269 4 157 267 268 112 4 267 109 269 113 4 170 270 166 272 4 270 144 167 273 4 171 271 272 148 4 271 145 273 149 4 136 274 168 276 4 274 170 169 277 4 137 275 276 146 4 275 171 277 147 4 172 278 116 280 4 278 142 117 281 4 173 279 280 166 4 279 143 281 167 4 134 282 114 284 4 282 172 115 285 4 135 283 284 168 4 283 173 285 169 4 166 286 162 288 4 286 160 163 289 4 167 287 288 140 4 287 161 289 141 4 128 290 164 292 4 290 166 165 293 4 129 291 292 138 4 291 167 293 139 4 168 294 132 296 4 294 158 133 297 4 169 295 296 162 4 295 159 297 163 4 126 298 130 300 4 298 168 131 301 4 127 299 300 164 4 299 169 301 165 4 162 302 170 304 4 302 152 171 305 4 163 303 304 156 4 303 153 305 157 4 120 306 172 308 4 306 162 173 309 4 121 307 308 154 4 307 163 309 155 4 164 310 124 312 4 310 150 125 313 4 165 311 312 170 4 311 151 313 171 4 118 314 122 316 4 314 164 123 317 4 119 315 316 172 4 315 165 317 173 4 322 237 320 251 4 305 322 321 250 4 323 236 287 320 4 304 323 286 321 4 320 269 318 235 4 273 320 319 234 4 321 268 303 318 4 272 321 302 319 4 318 253 322 267 4 289 318 323 266 4 319 252 271 322 4 288 319 270 323 4 328 305 326 243 4 221 328 327 242 4 329 304 295 326 4 220 329 294 327 4 326 265 324 303 4 277 326 325 302 4 327 264 219 324 4 276 327 218 325 4 324 245 328 263 4 297 324 329 262 4 325 244 275 328 4 296 325 274 329 4 334 233 332 287 4 309 334 333 286 4 335 232 187 332 4 308 335 186 333 4 332 261 330 231 4 281 332 331 230 4 333 260 307 330 4 280 333 306 331 4 330 289 334 259 4 189 330 335 258 4 331 288 279 334 4 188 331 278 335 4 340 309 338 295 4 217 340 339 294 4 341 308 179 338 4 216 341 178 339 4 338 257 336 307 4 285 338 337 306 4 339 256 215 336 4 284 339 214 337 4 336 297 340 255 4 181 336 341 254 4 337 296 283 340 4 180 337 282 341 4 346 229 344 247 4 313 346 345 246 4 347 228 291 344 4 312 347 290 345 4 344 273 342 227 4 205 344 343 226 4 345 272 311 342 4 204 345 310 343 4 342 249 346 271 4 293 342 347 270 4 343 248 203 346 4 292 343 202 347 4 352 313 350 239 4 213 352 351 238 4 353 312 299 350 4 212 353 298 351 4 350 277 348 311 4 201 350 349 310 4 351 276 211 348 4 200 351 210 349 4 348 241 352 275 4 301 348 353 274 4 349 240 199 352 4 300 349 198 353 4 358 225 356 291 4 317 358 357 290 4 359 224 183 356 4 316 359 182 357 4 356 281 354 223 4 197 356 355 222 4 357 280 315 354 4 196 357 314 355 4 354 293 358 279 4 185 354 359 278 4 355 292 195 358 4 184 355 194 359 4 364 317 362 299 4 209 364 363 298 4 365 316 175 362 4 208 365 174 363 4 362 285 360 315 4 193 362 361 314 4 363 284 207 360 4 192 363 206 361 4 360 301 364 283 4 177 360 365 282 4 361 300 191 364 4 176 361 190 365 564 0 6 8 10 12 14 16 18 20 22 24 26 28 42 44 -1 -1 -1 -1 -1 -1 46 48 -1 -1 -1 -1 -1 -1 50 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 54 56 -1 -1 -1 -1 -1 -1 58 60 -1 -1 -1 -1 -1 -1 62 64 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 282 0 0 0 3 3 3 3 3 3 3 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 0 0 0 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 282 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 65 66 1 0 0 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1128 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 366 0 0 0 2 0 1 2 0 2 2 0 4 2 1 3 2 1 5 2 2 3 2 2 6 2 3 7 2 4 5 2 4 6 2 5 7 2 6 7 2 0 8 2 8 1 2 0 9 2 9 2 2 0 10 2 10 4 2 1 11 2 11 3 2 1 12 2 12 5 2 2 13 2 13 3 2 2 14 2 14 6 2 3 15 2 15 7 2 4 16 2 16 5 2 4 17 2 17 6 2 5 18 2 18 7 2 6 19 2 19 7 2 10 20 2 20 12 2 8 20 2 20 16 2 8 21 2 21 13 2 9 21 2 21 11 2 9 22 2 22 17 2 10 22 2 22 14 2 11 23 2 23 18 2 12 23 2 23 15 2 14 24 2 24 15 2 13 24 2 24 19 2 16 25 2 25 19 2 17 25 2 25 18 2 26 25 2 21 26 2 26 23 2 22 26 2 26 24 2 20 26 2 0 27 2 27 8 2 0 28 2 28 9 2 0 29 2 29 10 2 10 30 2 30 20 2 8 31 2 31 20 2 8 32 2 32 21 2 9 33 2 33 21 2 9 34 2 34 22 2 10 35 2 35 22 2 21 36 2 36 26 2 22 37 2 37 26 2 20 38 2 38 26 2 29 39 2 39 31 2 27 39 2 39 30 2 27 40 2 40 33 2 28 40 2 40 32 2 28 41 2 41 35 2 29 41 2 41 34 2 30 42 2 42 37 2 35 42 2 42 38 2 34 43 2 43 36 2 33 43 2 43 37 2 32 44 2 44 38 2 31 44 2 44 36 2 45 42 2 40 45 2 45 44 2 41 45 2 45 43 2 39 45 2 20 54 2 54 16 2 8 55 2 55 21 2 21 56 2 56 13 2 9 57 2 57 21 2 21 58 2 58 11 2 9 59 2 59 22 2 22 60 2 60 17 2 10 61 2 61 22 2 22 62 2 62 14 2 11 63 2 63 23 2 23 64 2 64 18 2 12 65 2 65 23 2 23 66 2 66 15 2 14 67 2 67 24 2 24 68 2 68 15 2 13 69 2 69 24 2 24 70 2 70 19 2 16 71 2 71 25 2 25 72 2 72 19 2 17 73 2 73 25 2 25 74 2 74 18 2 26 75 2 75 25 2 21 76 2 76 26 2 26 77 2 77 23 2 22 78 2 78 26 2 26 79 2 79 24 2 20 80 2 80 26 2 31 81 2 81 53 2 27 81 2 81 51 2 32 82 2 82 54 2 51 82 2 82 43 2 53 83 2 83 35 2 28 83 2 83 52 2 54 84 2 84 36 2 52 84 2 84 44 2 27 85 2 85 57 2 29 85 2 85 55 2 28 86 2 86 58 2 55 86 2 86 33 2 57 87 2 87 37 2 30 87 2 87 56 2 58 88 2 88 38 2 56 88 2 88 34 2 29 89 2 89 61 2 31 89 2 89 59 2 30 90 2 90 62 2 59 90 2 90 39 2 61 91 2 91 45 2 32 91 2 91 60 2 62 92 2 92 46 2 60 92 2 92 40 2 33 93 2 93 65 2 35 93 2 93 63 2 34 94 2 94 66 2 63 94 2 94 41 2 65 95 2 95 47 2 36 95 2 95 64 2 66 96 2 96 48 2 64 96 2 96 42 2 39 97 2 97 69 2 37 97 2 97 67 2 40 98 2 98 70 2 67 98 2 98 49 2 69 99 2 99 41 2 38 99 2 99 68 2 70 100 2 100 42 2 68 100 2 100 50 2 43 101 2 101 73 2 45 101 2 101 71 2 44 102 2 102 74 2 71 102 2 102 47 2 73 103 2 103 49 2 46 103 2 103 72 2 74 104 2 104 50 2 72 104 2 104 48 2 77 105 2 105 68 2 79 105 2 105 66 2 78 106 2 106 67 2 62 106 2 106 79 2 52 107 2 107 77 2 80 107 2 107 65 2 51 108 2 108 78 2 61 108 2 108 80 2 75 109 2 109 64 2 77 109 2 109 74 2 76 110 2 110 63 2 58 110 2 110 77 2 60 111 2 111 75 2 78 111 2 111 73 2 59 112 2 112 76 2 57 112 2 112 78 2 79 113 2 113 72 2 75 113 2 113 70 2 80 114 2 114 71 2 54 114 2 114 75 2 56 115 2 115 79 2 76 115 2 115 69 2 55 116 2 116 80 2 53 116 2 116 76 2 124 104 2 105 124 2 124 96 2 113 124 2 124 100 2 109 124 2 123 103 2 106 123 2 123 113 2 92 123 2 123 98 2 111 123 2 122 102 2 107 122 2 122 95 2 114 122 2 122 109 2 84 122 2 121 101 2 108 121 2 121 114 2 91 121 2 121 111 2 82 121 2 120 105 2 88 120 2 120 94 2 115 120 2 120 99 2 110 120 2 119 106 2 87 119 2 119 115 2 90 119 2 119 97 2 112 119 2 118 107 2 86 118 2 118 93 2 116 118 2 118 110 2 83 118 2 117 108 2 85 117 2 117 116 2 89 117 2 117 112 2 81 117 366 0 12 14 16 18 20 22 24 26 28 30 32 34 66 -1 68 -1 70 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 72 -1 74 -1 76 -1 78 -1 80 -1 82 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 84 -1 86 -1 88 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 366 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 366 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 113 114 1 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 2.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 125 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 120 0 0 96 0 0 78 0 0 66 0 0 17 3 0 1 8 8 15 3 0 0 7 8 0
+0 3 1 0 0 1 0 0 0 6 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 1 0 0 1 0 -1 0 0 0 3 6 0 2 3 0 4 1 5 4 0 0 2 4 6 1 0 7 1 1 1 0 0 0 1 0 0 0 0 1 0 4294967295 0 0 0 0 0 1 0 0 0 0 0 6 0 1 1 1 1 1 1 2
+1 3 8 0 0 1 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 48 0 -1 -1 1 1 -1 -1 1 2 -1 -1 1 4 1 0 -1 -1 -1 -1 1 3 -1 -1 1 5 -1 -1 1 3 1 0 -1 -1 -1 -1 1 6 1 2 -1 -1 1 1 -1 -1 -1 -1 1 7 -1 -1 1 5 -1 -1 1 6 1 0 -1 -1 1 4 -1 -1 -1 -1 1 7 1 1 -1 -1 -1 -1 1 7 1 4 -1 -1 1 2 -1 -1 1 6 -1 -1 1 5 -1 -1 1 3 -1 -1 8 0 0 1 0 0 0 0 0 0 8 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 3 48 0 14 41 6 37 10 33 41 18 8 35 11 32 15 40 37 22 12 31 40 19 35 24 13 30 16 39 7 36 33 26 39 20 9 34 32 27 17 38 36 23 31 28 38 21 34 25 30 29 32 0 0 2 4 6 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 0 7 0 0 0 0 0 0 0 8 1 1 1 1 1 1 1 1 8 0 1 0 0 0 0 0 0 8 0 0 2 0 0 0 0 0 0 8 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 8 0 0 3 0 0 0 0 0 0 2 48 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
+2 3 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 0 -1 -1 2 1 -1 -1 2 2 -1 -1 2 4 2 0 1 1 -1 -1 2 3 -1 -1 2 5 -1 -1 2 3 2 0 1 2 -1 -1 2 6 2 2 1 1 2 1 1 2 -1 -1 2 7 -1 -1 2 5 -1 -1 2 6 2 0 1 4 2 4 1 1 -1 -1 2 7 2 1 1 4 -1 -1 2 7 2 4 1 2 2 2 1 4 2 6 1 1 2 5 1 2 2 3 1 4 2 1 2 9 -1 -1 2 10 -1 -1 2 12 2 8 -1 -1 -1 -1 2 11 -1 -1 2 13 2 3 2 11 2 8 2 24 -1 -1 2 14 2 10 -1 -1 2 9 2 25 -1 -1 2 15 2 5 2 13 -1 -1 2 14 2 8 2 40 2 12 -1 -1 -1 -1 2 15 2 9 2 41 2 7 2 15 2 12 2 28 2 10 2 42 2 14 -1 -1 2 13 2 29 2 11 2 43 -1 -1 2 17 2 2 2 18 -1 -1 2 20 2 16 2 24 2 3 2 19 -1 -1 2 21 -1 -1 2 19 2 16 -1 -1 -1 -1 2 22 2 18 2 26 2 17 -1 -1 -1 -1 2 23 -1 -1 2 21 2 6 2 22 2 16 2 48 2 20 2 28 2 7 2 23 2 17 2 49 -1 -1 2 23 2 20 -1 -1 2 18 2 50 2 22 2 30 2 21 -1 -1 2 19 2 51 2 17 2 25 2 10 2 26 -1 -1 2 28 2 24 -1 -1 2 11 2 27 -1 -1 2 29 2 19 2 27 2 24 -1 -1 -1 -1 2 30 2 26 -1 -1 2 25 -1 -1 -1 -1 2 31 2 21 2 29 2 14 2 30 2 24 2 56 2 28 -1 -1 2 15 2 31 2 25 2 57 2 23 2 31 2 28 -1 -1 2 26 2 58 2 30 -1 -1 2 29 -1 -1 2 27 2 59 -1 -1 2 33 -1 -1 2 34 2 4 2 36 2 32 2 40 -1 -1 2 35 2 5 2 37 -1 -1 2 35 2 32 2 48 2 6 2 38 2 34 2 42 2 33 2 49 2 7 2 39 -1 -1 2 37 -1 -1 2 38 2 32 -1 -1 2 36 2 44 -1 -1 2 39 2 33 -1 -1 -1 -1 2 39 2 36 2 52 2 34 -1 -1 2 38 2 46 2 37 2 53 2 35 -1 -1 2 33 2 41 -1 -1 2 42 2 12 2 44 2 40 -1 -1 -1 -1 2 43 2 13 2 45 2 35 2 43 2 40 2 56 2 14 2 46 2 42 -1 -1 2 41 2 57 2 15 2 47 2 37 2 45 -1 -1 2 46 2 40 -1 -1 2 44 -1 -1 -1 -1 2 47 2 41 -1 -1 2 39 2 47 2 44 2 60 2 42 -1 -1 2 46 -1 -1 2 45 2 61 2 43 -1 -1 -1 -1 2 49 2 34 2 50 2 20 2 52 2 48 2 56 2 35 2 51 2 21 2 53 -1 -1 2 51 2 48 -1 -1 2 22 2 54 2 50 2 58 2 49 -1 -1 2 23 2 55 -1 -1 2 53 2 38 2 54 2 48 -1 -1 2 52 2 60 2 39 2 55 2 49 -1 -1 -1 -1 2 55 2 52 -1 -1 2 50 -1 -1 2 54 2 62 2 53 -1 -1 2 51 -1 -1 2 49 2 57 2 42 2 58 2 28 2 60 2 56 -1 -1 2 43 2 59 2 29 2 61 2 51 2 59 2 56 -1 -1 2 30 2 62 2 58 -1 -1 2 57 -1 -1 2 31 2 63 2 53 2 61 2 46 2 62 2 56 -1 -1 2 60 -1 -1 2 47 2 63 2 57 -1 -1 2 55 2 63 2 60 -1 -1 2 58 -1 -1 2 62 -1 -1 2 61 -1 -1 2 59 -1 -1 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 0 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 0 3 384 0 50 77 42 73 46 69 77 62 44 71 47 68 51 76 73 58 48 67 76 63 71 60 49 66 52 75 43 72 69 54 75 64 45 70 68 55 53 74 72 59 67 56 74 65 70 61 66 57 182 269 50 265 62 261 269 90 52 263 63 260 183 268 265 158 64 259 268 91 263 160 65 258 184 267 51 264 261 146 267 92 53 262 260 147 185 266 264 159 259 148 266 93 262 161 258 149 78 257 166 253 66 249 257 178 168 251 67 248 79 256 253 106 68 247 256 179 251 108 69 246 80 255 167 252 249 142 255 180 169 250 248 143 81 254 252 107 247 144 254 181 250 109 246 145 178 245 158 241 70 237 245 94 160 239 71 236 179 244 241 114 72 235 244 95 239 116 73 234 180 243 159 240 237 138 243 96 161 238 236 139 181 242 240 115 235 140 242 97 238 117 234 141 82 233 46 229 150 225 233 174 48 227 151 224 83 232 229 162 152 223 232 175 227 164 153 222 84 231 47 228 225 122 231 176 49 226 224 123 85 230 228 163 223 124 230 177 226 165 222 125 174 221 54 217 146 213 221 98 56 215 147 212 175 220 217 154 148 211 220 99 215 156 149 210 176 219 55 216 213 126 219 100 57 214 212 127 177 218 216 155 211 128 218 101 214 157 210 129 86 209 162 205 142 201 209 170 164 203 143 200 87 208 205 110 144 199 208 171 203 112 145 198 88 207 163 204 201 130 207 172 165 202 200 131 89 206 204 111 199 132 206 173 202 113 198 133 170 197 154 193 138 189 197 102 156 191 139 188 171 196 193 118 140 187 196 103 191 120 141 186 172 195 155 192 189 134 195 104 157 190 188 135 173 194 192 119 187 136 194 105 190 121 186 137 256 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 8 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 15 1 0
+3 3 2 1128 0 0 8 2 4 1 3 0 5 2 6 1 9 4 7 3 10 5 11 6 7 9 10 8 11 12 36 16 38 36 28 17 39 13 37 38 20 37 29 39 21 14 40 12 42 40 18 13 43 15 41 42 22 41 19 43 23 16 44 14 46 44 24 15 47 17 45 46 30 45 25 47 31 20 48 18 50 48 26 19 51 21 49 50 32 49 27 51 33 22 52 24 54 52 34 25 55 23 53 54 26 53 35 55 27 30 56 28 58 56 32 29 59 31 57 58 34 57 33 59 35 64 51 62 53 47 64 63 52 65 50 37 62 46 65 36 63 62 59 60 49 43 62 61 48 63 58 45 60 42 63 44 61 60 55 64 57 39 60 65 56 61 54 41 64 38 61 40 65 66 90 70 92 90 72 71 93 67 91 92 74 91 73 93 75 68 94 66 96 94 76 67 97 69 95 96 78 95 77 97 79 70 98 68 100 98 80 69 101 71 99 100 82 99 81 101 83 82 102 72 104 102 88 73 105 83 103 104 86 103 89 105 87 78 106 80 108 106 86 81 109 79 107 108 84 107 87 109 85 74 110 76 112 110 84 77 113 75 111 112 88 111 85 113 89 118 113 116 107 101 118 117 106 119 112 91 116 100 119 90 117 116 105 114 111 97 116 115 110 117 104 99 114 96 117 98 115 114 109 118 103 93 114 119 102 115 108 95 118 92 115 94 119 130 210 72 212 210 90 73 213 131 211 212 136 211 91 213 137 76 214 134 216 214 132 135 217 77 215 216 102 215 133 217 103 132 218 136 220 218 92 137 221 133 219 220 104 219 93 221 105 82 222 78 224 222 138 79 225 83 223 224 142 223 139 225 143 138 226 80 228 226 94 81 229 139 227 228 144 227 95 229 145 84 230 142 232 230 140 143 233 85 231 232 106 231 141 233 107 140 234 144 236 234 96 145 237 141 235 236 108 235 97 237 109 86 238 90 240 238 146 91 241 87 239 240 150 239 147 241 151 146 242 92 244 242 110 93 245 147 243 244 152 243 111 245 153 88 246 150 248 246 148 151 249 89 247 248 94 247 149 249 95 148 250 152 252 250 112 153 253 149 251 252 96 251 113 253 97 102 254 98 256 254 154 99 257 103 255 256 158 255 155 257 159 154 258 100 260 258 106 101 261 155 259 260 160 259 107 261 161 104 262 158 264 262 156 159 265 105 263 264 110 263 157 265 111 156 266 160 268 266 108 161 269 157 267 268 112 267 109 269 113 170 270 166 272 270 144 167 273 171 271 272 148 271 145 273 149 136 274 168 276 274 170 169 277 137 275 276 146 275 171 277 147 172 278 116 280 278 142 117 281 173 279 280 166 279 143 281 167 134 282 114 284 282 172 115 285 135 283 284 168 283 173 285 169 166 286 162 288 286 160 163 289 167 287 288 140 287 161 289 141 128 290 164 292 290 166 165 293 129 291 292 138 291 167 293 139 168 294 132 296 294 158 133 297 169 295 296 162 295 159 297 163 126 298 130 300 298 168 131 301 127 299 300 164 299 169 301 165 162 302 170 304 302 152 171 305 163 303 304 156 303 153 305 157 120 306 172 308 306 162 173 309 121 307 308 154 307 163 309 155 164 310 124 312 310 150 125 313 165 311 312 170 311 151 313 171 118 314 122 316 314 164 123 317 119 315 316 172 315 165 317 173 322 237 320 251 305 322 321 250 323 236 287 320 304 323 286 321 320 269 318 235 273 320 319 234 321 268 303 318 272 321 302 319 318 253 322 267 289 318 323 266 319 252 271 322 288 319 270 323 328 305 326 243 221 328 327 242 329 304 295 326 220 329 294 327 326 265 324 303 277 326 325 302 327 264 219 324 276 327 218 325 324 245 328 263 297 324 329 262 325 244 275 328 296 325 274 329 334 233 332 287 309 334 333 286 335 232 187 332 308 335 186 333 332 261 330 231 281 332 331 230 333 260 307 330 280 333 306 331 330 289 334 259 189 330 335 258 331 288 279 334 188 331 278 335 340 309 338 295 217 340 339 294 341 308 179 338 216 341 178 339 338 257 336 307 285 338 337 306 339 256 215 336 284 339 214 337 336 297 340 255 181 336 341 254 337 296 283 340 180 337 282 341 346 229 344 247 313 346 345 246 347 228 291 344 312 347 290 345 344 273 342 227 205 344 343 226 345 272 311 342 204 345 310 343 342 249 346 271 293 342 347 270 343 248 203 346 292 343 202 347 352 313 350 239 213 352 351 238 353 312 299 350 212 353 298 351 350 277 348 311 201 350 349 310 351 276 211 348 200 351 210 349 348 241 352 275 301 348 353 274 349 240 199 352 300 349 198 353 358 225 356 291 317 358 357 290 359 224 183 356 316 359 182 357 356 281 354 223 197 356 355 222 357 280 315 354 196 357 314 355 354 293 358 279 185 354 359 278 355 292 195 358 184 355 194 359 364 317 362 299 209 364 363 298 365 316 175 362 208 365 174 363 362 285 360 315 193 362 361 314 363 284 207 360 192 363 206 361 360 301 364 283 177 360 365 282 361 300 191 364 176 361 190 365 564 0 6 8 10 12 14 16 18 20 22 24 26 28 42 44 -1 -1 -1 -1 -1 -1 46 48 -1 -1 -1 -1 -1 -1 50 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 54 56 -1 -1 -1 -1 -1 -1 58 60 -1 -1 -1 -1 -1 -1 62 64 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 282 0 3 3 3 3 3 3 3 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282 0 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 42 42 42 42 42 42 42 42 42 42 42 42 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 282 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 65 66 1 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 732 0 0 1 0 2 0 4 1 3 1 5 2 3 2 6 3 7 4 5 4 6 5 7 6 7 0 8 8 1 0 9 9 2 0 10 10 4 1 11 11 3 1 12 12 5 2 13 13 3 2 14 14 6 3 15 15 7 4 16 16 5 4 17 17 6 5 18 18 7 6 19 19 7 10 20 20 12 8 20 20 16 8 21 21 13 9 21 21 11 9 22 22 17 10 22 22 14 11 23 23 18 12 23 23 15 14 24 24 15 13 24 24 19 16 25 25 19 17 25 25 18 26 25 21 26 26 23 22 26 26 24 20 26 0 27 27 8 0 28 28 9 0 29 29 10 10 30 30 20 8 31 31 20 8 32 32 21 9 33 33 21 9 34 34 22 10 35 35 22 21 36 36 26 22 37 37 26 20 38 38 26 29 39 39 31 27 39 39 30 27 40 40 33 28 40 40 32 28 41 41 35 29 41 41 34 30 42 42 37 35 42 42 38 34 43 43 36 33 43 43 37 32 44 44 38 31 44 44 36 45 42 40 45 45 44 41 45 45 43 39 45 20 54 54 16 8 55 55 21 21 56 56 13 9 57 57 21 21 58 58 11 9 59 59 22 22 60 60 17 10 61 61 22 22 62 62 14 11 63 63 23 23 64 64 18 12 65 65 23 23 66 66 15 14 67 67 24 24 68 68 15 13 69 69 24 24 70 70 19 16 71 71 25 25 72 72 19 17 73 73 25 25 74 74 18 26 75 75 25 21 76 76 26 26 77 77 23 22 78 78 26 26 79 79 24 20 80 80 26 31 81 81 53 27 81 81 51 32 82 82 54 51 82 82 43 53 83 83 35 28 83 83 52 54 84 84 36 52 84 84 44 27 85 85 57 29 85 85 55 28 86 86 58 55 86 86 33 57 87 87 37 30 87 87 56 58 88 88 38 56 88 88 34 29 89 89 61 31 89 89 59 30 90 90 62 59 90 90 39 61 91 91 45 32 91 91 60 62 92 92 46 60 92 92 40 33 93 93 65 35 93 93 63 34 94 94 66 63 94 94 41 65 95 95 47 36 95 95 64 66 96 96 48 64 96 96 42 39 97 97 69 37 97 97 67 40 98 98 70 67 98 98 49 69 99 99 41 38 99 99 68 70 100 100 42 68 100 100 50 43 101 101 73 45 101 101 71 44 102 102 74 71 102 102 47 73 103 103 49 46 103 103 72 74 104 104 50 72 104 104 48 77 105 105 68 79 105 105 66 78 106 106 67 62 106 106 79 52 107 107 77 80 107 107 65 51 108 108 78 61 108 108 80 75 109 109 64 77 109 109 74 76 110 110 63 58 110 110 77 60 111 111 75 78 111 111 73 59 112 112 76 57 112 112 78 79 113 113 72 75 113 113 70 80 114 114 71 54 114 114 75 56 115 115 79 76 115 115 69 55 116 116 80 53 116 116 76 124 104 105 124 124 96 113 124 124 100 109 124 123 103 106 123 123 113 92 123 123 98 111 123 122 102 107 122 122 95 114 122 122 109 84 122 121 101 108 121 121 114 91 121 121 111 82 121 120 105 88 120 120 94 115 120 120 99 110 120 119 106 87 119 119 115 90 119 119 97 112 119 118 107 86 118 118 93 116 118 118 110 83 118 117 108 85 117 117 116 89 117 117 112 81 117 366 0 12 14 16 18 20 22 24 26 28 30 32 34 66 -1 68 -1 70 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 72 -1 74 -1 76 -1 78 -1 80 -1 82 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 84 -1 86 -1 88 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 366 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 366 0 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 113 114 1 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1128 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 125 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 1.00000000000000000e+00 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 5.00000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 2.50000000000000000e-01 1.00000000000000000e+00 3 1.00000000000000000e+00 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 7.50000000000000000e-01 1.00000000000000000e+00 1.00000000000000000e+00 3 2.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 5.00000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 5.00000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 5.00000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 5.00000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 5.00000000000000000e-01 1.00000000000000000e+00 3 5.00000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 0.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 0.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 0.00000000000000000e+00 3 0.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 0.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 0.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 2.50000000000000000e-01 3 1.00000000000000000e+00 2.50000000000000000e-01 7.50000000000000000e-01 3 1.00000000000000000e+00 7.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 2.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 2.50000000000000000e-01 3 7.50000000000000000e-01 1.00000000000000000e+00 7.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 2.50000000000000000e-01 1.00000000000000000e+00 3 2.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 1.00000000000000000e+00 3 7.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 5.00000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 5.00000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 5.00000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 5.00000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 2.50000000000000000e-01 3 2.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 2.50000000000000000e-01 7.50000000000000000e-01 3 2.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 3 7.50000000000000000e-01 7.50000000000000000e-01 7.50000000000000000e-01 125 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 120 0 0 96 0 0 78 0 0 66 0 0 17 3 0 1 8 8 15 3 0 0 7 8 0
 
 DEAL::OK

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.