]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Fix a bug.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 6 Jan 2010 09:59:14 +0000 (09:59 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 6 Jan 2010 09:59:14 +0000 (09:59 +0000)
git-svn-id: https://svn.dealii.org/trunk@20303 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/changes.h
deal.II/lac/source/sparsity_pattern.cc
tests/lac/block_sparsity_pattern_02.cc [new file with mode: 0644]
tests/lac/block_sparsity_pattern_02/cmp/generic [new file with mode: 0644]
tests/lac/sparsity_pattern_copy_from.cc [new file with mode: 0644]
tests/lac/sparsity_pattern_copy_from/cmp/generic [new file with mode: 0644]

index 028911f51e72485fc6947da0aca75daff1b1908b..365cbd11dbf026f132b0d89ce12cbedf231b8b74 100644 (file)
@@ -376,15 +376,24 @@ inconvenience this causes.
 <h3>lac</h3>
 
 <ol>
+  <li>
+    <p>
+    Fixed: SparsityPattern::copy_from crashed whenever a compressed sparsity
+    pattern was copied that had either zero rows or zero columns. This is now
+    fixed.
+    </p>
+  <br>
+  (WB 2010/01/06)
+  </li>
 
   <li>
     <p>
-    New: In householder.h the function least_squares can handle BlockVectors as
-    well now. Note that in one place we still have to copy to a Vector to use 
+    New: The function Householder::least_squares can handle BlockVectors as
+    well now. Note that in one place we still have to copy to a Vector to use
     the function backward from FullMatrix.
     </p>
   <br>
-  (Bรคrbel Janssen 2010/01/05)
+  (B&auml;rbel Janssen 2010/01/05)
   </li>
 
   <li>
index c70c9e973f2ea9c7be467158e8697515b7f956f4..6fed1e7b8a463a6fb6556b8a96ba31943d09dbc4 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
+//    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -61,7 +61,7 @@ SparsityPattern::SparsityPattern (const SparsityPattern &s)
   Assert (s.colnums == 0, ExcInvalidConstructorCall());
   Assert (s.rows == 0, ExcInvalidConstructorCall());
   Assert (s.cols == 0, ExcInvalidConstructorCall());
-  
+
   reinit (0,0,0, false);
 }
 
@@ -70,7 +70,7 @@ SparsityPattern::SparsityPattern (const SparsityPattern &s)
 SparsityPattern::SparsityPattern (const unsigned int m,
                                  const unsigned int n,
                                  const unsigned int max_per_row,
-                                 const bool optimize_diag) 
+                                 const bool optimize_diag)
                :
                 max_dim(0),
                 max_vec_len(0),
@@ -88,7 +88,7 @@ SparsityPattern::SparsityPattern (
   const unsigned int m,
   const unsigned int n,
   const std::vector<unsigned int>& row_lengths,
-  const bool optimize_diag) 
+  const bool optimize_diag)
                :
                 max_dim(0),
                 max_vec_len(0),
@@ -116,7 +116,7 @@ SparsityPattern::SparsityPattern (const unsigned int n,
 SparsityPattern::SparsityPattern (
   const unsigned int               m,
   const std::vector<unsigned int>& row_lengths,
-  const bool optimize_diag) 
+  const bool optimize_diag)
                :
                 max_dim(0),
                 max_vec_len(0),
@@ -140,7 +140,7 @@ SparsityPattern::SparsityPattern (const SparsityPattern &original,
   Assert (original.rows==original.cols, ExcNotQuadratic());
   Assert (original.optimize_diagonal(), ExcNotQuadratic());
   Assert (original.is_compressed(), ExcNotCompressed());
-  
+
   reinit (original.rows, original.cols, max_per_row,
          original.optimize_diagonal());
 
@@ -149,8 +149,8 @@ SparsityPattern::SparsityPattern (const SparsityPattern &original,
   for (unsigned int row=0; row<original.rows; ++row)
     {
                                       // copy the elements of this row
-                                      // of the other object 
-                                      // 
+                                      // of the other object
+                                      //
                                       // note that the first object actually
                                       // is the main-diagonal element,
                                       // which we need not copy
@@ -187,7 +187,7 @@ SparsityPattern::SparsityPattern (const SparsityPattern &original,
                             original_row_end,
                             row-extra_off_diagonals) :
           original_row_start);
-      
+
       const unsigned int * const
        original_first_after_side_diagonals
        = (row < rows-extra_off_diagonals-1 ?
@@ -280,7 +280,7 @@ SparsityPattern::reinit (
   const bool optimize_diag)
 {
   AssertDimension (row_lengths.size(), m);
-         
+
   rows = m;
   cols = n;
 
@@ -340,11 +340,11 @@ SparsityPattern::reinit (
          delete[] colnums;
          colnums = 0;
        }
-      
+
       max_vec_len = vec_len;
       colnums = new unsigned int[max_vec_len];
     }
-  
+
   max_row_length = (row_lengths.size() == 0 ?
                    0 :
                    std::min (*std::max_element(row_lengths.begin(),
@@ -353,7 +353,7 @@ SparsityPattern::reinit (
 
   if (diagonal_optimized && (max_row_length==0) && (m!=0))
     max_row_length = 1;
-  
+
                                   // allocate memory for the rowstart
                                   // values, if necessary. even
                                   // though we re-set the pointers
@@ -389,12 +389,12 @@ SparsityPattern::reinit (
          delete[] colnums;
          colnums = 0;
        }
-      
+
       max_vec_len = vec_len;
       colnums = new unsigned int[max_vec_len];
     }
 
-                                  // set the rowstart array 
+                                  // set the rowstart array
   rowstart[0] = 0;
   for (unsigned int i=1; i<=rows; ++i)
     rowstart[i] = rowstart[i-1] +
@@ -431,7 +431,7 @@ SparsityPattern::compress ()
                                   // do nothing if already compressed
   if (compressed)
     return;
-  
+
   unsigned int next_free_entry = 0,
               next_row_start  = 0,
               row_length      = 0;
@@ -451,7 +451,7 @@ SparsityPattern::compress ()
                                   // reserve temporary storage to
                                   // store the entries of one row
   std::vector<unsigned int> tmp_entries (max_row_length);
-  
+
                                   // Traverse all rows
   for (unsigned int line=0; line<rows; ++line)
     {
@@ -466,12 +466,12 @@ SparsityPattern::compress ()
                                       // now @p{rowstart} is
                                       // the number of entries in
                                       // this line
-      
+
                                       // Sort only beginning at the
                                       // second entry, if optimized
                                       // storage of diagonal entries
                                       // is on.
-      
+
                                       // if this line is empty or has
                                       // only one entry, don't sort
       if (row_length > 1)
@@ -479,7 +479,7 @@ SparsityPattern::compress ()
                   ? tmp_entries.begin()+1
                   : tmp_entries.begin(),
                   tmp_entries.begin()+row_length);
-      
+
                                       // insert column numbers
                                       // into the new field
       for (unsigned int j=0; j<row_length; ++j)
@@ -543,7 +543,7 @@ SparsityPattern::compress ()
 
                                   // store the size
   max_vec_len = nonzero_elements;
-  
+
   compressed = true;
 }
 
@@ -552,7 +552,7 @@ SparsityPattern::compress ()
 template <typename CSP>
 void
 SparsityPattern::copy_from (const CSP &csp,
-                           const bool optimize_diag) 
+                           const bool optimize_diag)
 {
                                   // first determine row lengths for
                                   // each row. if the matrix is
@@ -578,23 +578,25 @@ SparsityPattern::copy_from (const CSP &csp,
   reinit (csp.n_rows(), csp.n_cols(), row_lengths, do_diag_optimize);
 
                                   // now enter all the elements into
-                                  // the matrix. note that if the
-                                  // matrix is quadratic, then we
-                                  // already have the diagonal
-                                  // element preallocated
-  for (unsigned int row = 0; row<csp.n_rows(); ++row)
-    {
-      unsigned int *cols = &colnums[rowstart[row]] + (do_diag_optimize ? 1 : 0);
-      typename CSP::row_iterator col_num = csp.row_begin (row), 
-       end_row = csp.row_end (row);
-
-      for (; col_num != end_row; ++col_num)
-       {
-         const unsigned int col = *col_num;
-         if ((col!=row) || !do_diag_optimize)
-           *cols++ = col;
-       }
-    }
+                                  // the matrix, if there are
+                                  // any. note that if the matrix is
+                                  // quadratic, then we already have
+                                  // the diagonal element
+                                  // preallocated
+  if (n_rows() * n_cols() > 0)
+    for (unsigned int row = 0; row<csp.n_rows(); ++row)
+      {
+       unsigned int *cols = &colnums[rowstart[row]] + (do_diag_optimize ? 1 : 0);
+       typename CSP::row_iterator col_num = csp.row_begin (row),
+                                  end_row = csp.row_end (row);
+
+       for (; col_num != end_row; ++col_num)
+         {
+           const unsigned int col = *col_num;
+           if ((col!=row) || !do_diag_optimize)
+             *cols++ = col;
+         }
+      }
 
                                   // do not need to compress the sparsity
                                   // pattern since we already have
@@ -627,7 +629,7 @@ void SparsityPattern::copy_from (const FullMatrix<number> &matrix,
          (matrix.m() == matrix.n()))
        ++entries_per_row[row];
     }
-  
+
   reinit (matrix.m(), matrix.n(), entries_per_row, optimize_diag);
 
                                   // now set entries
@@ -681,7 +683,7 @@ SparsityPattern::empty () const
 
 
 unsigned int
-SparsityPattern::max_entries_per_row () const 
+SparsityPattern::max_entries_per_row () const
 {
                                   // if compress() has not yet been
                                   // called, we can get the maximum
@@ -706,7 +708,7 @@ unsigned int
 SparsityPattern::operator () (const unsigned int i,
                              const unsigned int j) const
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
   Assert (i<rows, ExcIndexRange(i,0,rows));
   Assert (j<cols, ExcIndexRange(j,0,cols));
   Assert (compressed, ExcNotCompressed());
@@ -754,7 +756,7 @@ void
 SparsityPattern::add (const unsigned int i,
                      const unsigned int j)
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
   Assert (i<rows, ExcIndexRange(i,0,rows));
   Assert (j<cols, ExcIndexRange(j,0,cols));
   Assert (compressed==false, ExcMatrixIsCompressed());
@@ -797,7 +799,7 @@ bool
 SparsityPattern::exists (const unsigned int i,
                         const unsigned int j) const
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
   Assert (i<rows, ExcIndexRange(i,0,rows));
   Assert (j<cols, ExcIndexRange(j,0,cols));
 
@@ -843,9 +845,9 @@ SparsityPattern::matrix_position (const unsigned int global_index) const
 
 
 void
-SparsityPattern::symmetrize () 
+SparsityPattern::symmetrize ()
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
   Assert (compressed==false, ExcMatrixIsCompressed());
                                   // Note that we only require a
                                   // quadratic matrix here, no
@@ -888,7 +890,7 @@ SparsityPattern::symmetrize ()
 void
 SparsityPattern::print (std::ostream &out) const
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
 
   AssertThrow (out, ExcIO());
 
@@ -900,7 +902,7 @@ SparsityPattern::print (std::ostream &out) const
          out << ',' << colnums[j];
       out << ']' << std::endl;
     }
-  
+
   AssertThrow (out, ExcIO());
 }
 
@@ -909,10 +911,10 @@ SparsityPattern::print (std::ostream &out) const
 void
 SparsityPattern::print_gnuplot (std::ostream &out) const
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
 
   AssertThrow (out, ExcIO());
-  
+
   for (unsigned int i=0; i<rows; ++i)
     for (unsigned int j=rowstart[i]; j<rowstart[i+1]; ++j)
       if (colnums[j] != invalid_entry)
@@ -933,7 +935,7 @@ SparsityPattern::print_gnuplot (std::ostream &out) const
 unsigned int
 SparsityPattern::bandwidth () const
 {
-  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());  
+  Assert ((rowstart!=0) && (colnums!=0), ExcEmptyObject());
   unsigned int b=0;
   for (unsigned int i=0; i<rows; ++i)
     for (unsigned int j=rowstart[i]; j<rowstart[i+1]; ++j)
@@ -951,7 +953,7 @@ SparsityPattern::bandwidth () const
 
 
 void
-SparsityPattern::block_write (std::ostream &out) const 
+SparsityPattern::block_write (std::ostream &out) const
 {
   AssertThrow (out, ExcIO());
 
@@ -973,7 +975,7 @@ SparsityPattern::block_write (std::ostream &out) const
             reinterpret_cast<const char*>(&colnums[max_vec_len])
             - reinterpret_cast<const char*>(&colnums[0]));
   out << ']';
-  
+
   AssertThrow (out, ExcIO());
 }
 
@@ -1010,7 +1012,7 @@ SparsityPattern::block_read (std::istream &in)
 
   rowstart = new std::size_t[max_dim+1];
   colnums  = new unsigned int[max_vec_len];
-  
+
                                    // then read data
   in.read (reinterpret_cast<char*>(&rowstart[0]),
            reinterpret_cast<char*>(&rowstart[max_dim+1])
@@ -1059,13 +1061,13 @@ template void SparsityPattern::add_entries<const unsigned int*> (const unsigned
                                                                 const unsigned int*,
                                                                 const bool);
 #ifndef DEAL_II_VECTOR_ITERATOR_IS_POINTER
-template void SparsityPattern::add_entries<std::vector<unsigned int>::const_iterator> 
+template void SparsityPattern::add_entries<std::vector<unsigned int>::const_iterator>
 (const unsigned int,
  std::vector<unsigned int>::const_iterator,
  std::vector<unsigned int>::const_iterator,
  const bool);
 #endif
-template void SparsityPattern::add_entries<std::vector<unsigned int>::iterator> 
+template void SparsityPattern::add_entries<std::vector<unsigned int>::iterator>
 (const unsigned int,
  std::vector<unsigned int>::iterator,
  std::vector<unsigned int>::iterator,
diff --git a/tests/lac/block_sparsity_pattern_02.cc b/tests/lac/block_sparsity_pattern_02.cc
new file mode 100644 (file)
index 0000000..af0c294
--- /dev/null
@@ -0,0 +1,78 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2006, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// Test reinit(BlockIndices...)
+
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <lac/block_sparsity_pattern.h>
+
+#include <iomanip>
+#include <fstream>
+
+int main()
+{
+  std::ofstream logfile("block_sparsity_pattern_01/output");
+  logfile.setf(std::ios::fixed);
+  deallog << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  BlockSparsityPattern sparsity;
+  std::vector<unsigned int> row_blocks(4);
+  row_blocks[0] = 4;
+  row_blocks[1] = 5;
+  row_blocks[2] = 1;
+  row_blocks[3] = 4;
+  std::vector<unsigned int> col_blocks(3);
+  col_blocks[0] = 2;
+  col_blocks[1] = 3;
+  col_blocks[2] = 2;
+  BlockIndices rows(row_blocks);
+  BlockIndices cols(col_blocks);
+
+  std::vector<std::vector<unsigned int> >
+    row_length(cols.size(),
+              std::vector<unsigned int>(rows.total_size()));
+  for (unsigned int jb=0;jb<row_length.size();++jb)
+      for (unsigned int i=0;i<row_length[jb].size();++i)
+       {
+         const unsigned int d = col_blocks[jb]-1;
+         row_length[jb][i] = (i+1) % d +1;
+       }
+  
+  for (unsigned int j=0;j<row_length.size();++j)
+    {
+      for (unsigned int i=0;i<row_length[j].size();++i)
+       deallog << ' ' << row_length[j][i];
+      deallog << std::endl;
+    }
+  
+  sparsity.reinit(rows, cols, row_length);
+
+  for (unsigned int ib = 0;ib<rows.size();++ib)
+    for (unsigned int i=0;i<rows.block_size(ib);++i)
+      {
+       const unsigned int ii = rows.local_to_global(ib,i);
+       for (unsigned int jb = 0;jb<cols.size();++jb)
+         for (unsigned int j=0;j<row_length[jb][ii];++j)
+           sparsity.add(ii, cols.local_to_global(jb,j));
+      }
+  
+  sparsity.print(logfile);
+  
+  return 0;
+}
diff --git a/tests/lac/block_sparsity_pattern_02/cmp/generic b/tests/lac/block_sparsity_pattern_02/cmp/generic
new file mode 100644 (file)
index 0000000..71ef847
--- /dev/null
@@ -0,0 +1,18 @@
+
+DEAL:: 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+DEAL:: 2 1 2 1 2 1 2 1 2 1 2 1 2 1
+DEAL:: 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+[0,0,2,3,5]
+[1,0,2,5]
+[2,0,2,3,5]
+[3,0,2,5]
+[4,0,2,3,5]
+[5,0,2,5]
+[6,0,2,3,5]
+[7,0,2,5]
+[8,0,2,3,5]
+[9,0,2,5]
+[10,0,2,3,5]
+[11,0,2,5]
+[12,0,2,3,5]
+[13,0,2,5]
diff --git a/tests/lac/sparsity_pattern_copy_from.cc b/tests/lac/sparsity_pattern_copy_from.cc
new file mode 100644 (file)
index 0000000..0b26905
--- /dev/null
@@ -0,0 +1,49 @@
+//----------------------------  sparsity_pattern_copy_from.cc,v  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2001, 2002, 2003, 2004, 2005, 2010 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  sparsity_pattern_copy_from.cc,v  ---------------------------
+
+
+// SparsityPattern::copy_from crashed when the number of rows or columns
+// was zero
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <lac/sparsity_pattern.h>
+#include <lac/compressed_sparsity_pattern.h>
+#include "testmatrix.h"
+#include <fstream>
+#include <iomanip>
+#include <list>
+#include <set>
+#include <cstdio>
+
+
+int
+main ()
+{
+  std::ofstream logfile("sparsity_pattern_copy_from/output");
+  logfile.setf(std::ios::fixed);
+  deallog << std::setprecision(3);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  CompressedSparsityPattern csp (10, 0);
+
+  SparsityPattern sp;
+  sp.copy_from (csp);
+
+  deallog << "OK" << std::endl;
+}
+
+
+
diff --git a/tests/lac/sparsity_pattern_copy_from/cmp/generic b/tests/lac/sparsity_pattern_copy_from/cmp/generic
new file mode 100644 (file)
index 0000000..b273831
--- /dev/null
@@ -0,0 +1,4577 @@
+
+DEAL::196 196 14 924
+DEAL::3
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::3
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::4
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::5
+DEAL::4
+DEAL::3
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::4
+DEAL::3
+0 0
+1 0
+14 0
+1 -1
+0 -1
+2 -1
+15 -1
+2 -2
+1 -2
+3 -2
+16 -2
+3 -3
+2 -3
+4 -3
+17 -3
+4 -4
+3 -4
+5 -4
+18 -4
+5 -5
+4 -5
+6 -5
+19 -5
+6 -6
+5 -6
+7 -6
+20 -6
+7 -7
+6 -7
+8 -7
+21 -7
+8 -8
+7 -8
+9 -8
+22 -8
+9 -9
+8 -9
+10 -9
+23 -9
+10 -10
+9 -10
+11 -10
+24 -10
+11 -11
+10 -11
+12 -11
+25 -11
+12 -12
+11 -12
+13 -12
+26 -12
+13 -13
+12 -13
+27 -13
+14 -14
+0 -14
+15 -14
+28 -14
+15 -15
+1 -15
+14 -15
+16 -15
+29 -15
+16 -16
+2 -16
+15 -16
+17 -16
+30 -16
+17 -17
+3 -17
+16 -17
+18 -17
+31 -17
+18 -18
+4 -18
+17 -18
+19 -18
+32 -18
+19 -19
+5 -19
+18 -19
+20 -19
+33 -19
+20 -20
+6 -20
+19 -20
+21 -20
+34 -20
+21 -21
+7 -21
+20 -21
+22 -21
+35 -21
+22 -22
+8 -22
+21 -22
+23 -22
+36 -22
+23 -23
+9 -23
+22 -23
+24 -23
+37 -23
+24 -24
+10 -24
+23 -24
+25 -24
+38 -24
+25 -25
+11 -25
+24 -25
+26 -25
+39 -25
+26 -26
+12 -26
+25 -26
+27 -26
+40 -26
+27 -27
+13 -27
+26 -27
+41 -27
+28 -28
+14 -28
+29 -28
+42 -28
+29 -29
+15 -29
+28 -29
+30 -29
+43 -29
+30 -30
+16 -30
+29 -30
+31 -30
+44 -30
+31 -31
+17 -31
+30 -31
+32 -31
+45 -31
+32 -32
+18 -32
+31 -32
+33 -32
+46 -32
+33 -33
+19 -33
+32 -33
+34 -33
+47 -33
+34 -34
+20 -34
+33 -34
+35 -34
+48 -34
+35 -35
+21 -35
+34 -35
+36 -35
+49 -35
+36 -36
+22 -36
+35 -36
+37 -36
+50 -36
+37 -37
+23 -37
+36 -37
+38 -37
+51 -37
+38 -38
+24 -38
+37 -38
+39 -38
+52 -38
+39 -39
+25 -39
+38 -39
+40 -39
+53 -39
+40 -40
+26 -40
+39 -40
+41 -40
+54 -40
+41 -41
+27 -41
+40 -41
+55 -41
+42 -42
+28 -42
+43 -42
+56 -42
+43 -43
+29 -43
+42 -43
+44 -43
+57 -43
+44 -44
+30 -44
+43 -44
+45 -44
+58 -44
+45 -45
+31 -45
+44 -45
+46 -45
+59 -45
+46 -46
+32 -46
+45 -46
+47 -46
+60 -46
+47 -47
+33 -47
+46 -47
+48 -47
+61 -47
+48 -48
+34 -48
+47 -48
+49 -48
+62 -48
+49 -49
+35 -49
+48 -49
+50 -49
+63 -49
+50 -50
+36 -50
+49 -50
+51 -50
+64 -50
+51 -51
+37 -51
+50 -51
+52 -51
+65 -51
+52 -52
+38 -52
+51 -52
+53 -52
+66 -52
+53 -53
+39 -53
+52 -53
+54 -53
+67 -53
+54 -54
+40 -54
+53 -54
+55 -54
+68 -54
+55 -55
+41 -55
+54 -55
+69 -55
+56 -56
+42 -56
+57 -56
+70 -56
+57 -57
+43 -57
+56 -57
+58 -57
+71 -57
+58 -58
+44 -58
+57 -58
+59 -58
+72 -58
+59 -59
+45 -59
+58 -59
+60 -59
+73 -59
+60 -60
+46 -60
+59 -60
+61 -60
+74 -60
+61 -61
+47 -61
+60 -61
+62 -61
+75 -61
+62 -62
+48 -62
+61 -62
+63 -62
+76 -62
+63 -63
+49 -63
+62 -63
+64 -63
+77 -63
+64 -64
+50 -64
+63 -64
+65 -64
+78 -64
+65 -65
+51 -65
+64 -65
+66 -65
+79 -65
+66 -66
+52 -66
+65 -66
+67 -66
+80 -66
+67 -67
+53 -67
+66 -67
+68 -67
+81 -67
+68 -68
+54 -68
+67 -68
+69 -68
+82 -68
+69 -69
+55 -69
+68 -69
+83 -69
+70 -70
+56 -70
+71 -70
+84 -70
+71 -71
+57 -71
+70 -71
+72 -71
+85 -71
+72 -72
+58 -72
+71 -72
+73 -72
+86 -72
+73 -73
+59 -73
+72 -73
+74 -73
+87 -73
+74 -74
+60 -74
+73 -74
+75 -74
+88 -74
+75 -75
+61 -75
+74 -75
+76 -75
+89 -75
+76 -76
+62 -76
+75 -76
+77 -76
+90 -76
+77 -77
+63 -77
+76 -77
+78 -77
+91 -77
+78 -78
+64 -78
+77 -78
+79 -78
+92 -78
+79 -79
+65 -79
+78 -79
+80 -79
+93 -79
+80 -80
+66 -80
+79 -80
+81 -80
+94 -80
+81 -81
+67 -81
+80 -81
+82 -81
+95 -81
+82 -82
+68 -82
+81 -82
+83 -82
+96 -82
+83 -83
+69 -83
+82 -83
+97 -83
+84 -84
+70 -84
+85 -84
+98 -84
+85 -85
+71 -85
+84 -85
+86 -85
+99 -85
+86 -86
+72 -86
+85 -86
+87 -86
+100 -86
+87 -87
+73 -87
+86 -87
+88 -87
+101 -87
+88 -88
+74 -88
+87 -88
+89 -88
+102 -88
+89 -89
+75 -89
+88 -89
+90 -89
+103 -89
+90 -90
+76 -90
+89 -90
+91 -90
+104 -90
+91 -91
+77 -91
+90 -91
+92 -91
+105 -91
+92 -92
+78 -92
+91 -92
+93 -92
+106 -92
+93 -93
+79 -93
+92 -93
+94 -93
+107 -93
+94 -94
+80 -94
+93 -94
+95 -94
+108 -94
+95 -95
+81 -95
+94 -95
+96 -95
+109 -95
+96 -96
+82 -96
+95 -96
+97 -96
+110 -96
+97 -97
+83 -97
+96 -97
+111 -97
+98 -98
+84 -98
+99 -98
+112 -98
+99 -99
+85 -99
+98 -99
+100 -99
+113 -99
+100 -100
+86 -100
+99 -100
+101 -100
+114 -100
+101 -101
+87 -101
+100 -101
+102 -101
+115 -101
+102 -102
+88 -102
+101 -102
+103 -102
+116 -102
+103 -103
+89 -103
+102 -103
+104 -103
+117 -103
+104 -104
+90 -104
+103 -104
+105 -104
+118 -104
+105 -105
+91 -105
+104 -105
+106 -105
+119 -105
+106 -106
+92 -106
+105 -106
+107 -106
+120 -106
+107 -107
+93 -107
+106 -107
+108 -107
+121 -107
+108 -108
+94 -108
+107 -108
+109 -108
+122 -108
+109 -109
+95 -109
+108 -109
+110 -109
+123 -109
+110 -110
+96 -110
+109 -110
+111 -110
+124 -110
+111 -111
+97 -111
+110 -111
+125 -111
+112 -112
+98 -112
+113 -112
+126 -112
+113 -113
+99 -113
+112 -113
+114 -113
+127 -113
+114 -114
+100 -114
+113 -114
+115 -114
+128 -114
+115 -115
+101 -115
+114 -115
+116 -115
+129 -115
+116 -116
+102 -116
+115 -116
+117 -116
+130 -116
+117 -117
+103 -117
+116 -117
+118 -117
+131 -117
+118 -118
+104 -118
+117 -118
+119 -118
+132 -118
+119 -119
+105 -119
+118 -119
+120 -119
+133 -119
+120 -120
+106 -120
+119 -120
+121 -120
+134 -120
+121 -121
+107 -121
+120 -121
+122 -121
+135 -121
+122 -122
+108 -122
+121 -122
+123 -122
+136 -122
+123 -123
+109 -123
+122 -123
+124 -123
+137 -123
+124 -124
+110 -124
+123 -124
+125 -124
+138 -124
+125 -125
+111 -125
+124 -125
+139 -125
+126 -126
+112 -126
+127 -126
+140 -126
+127 -127
+113 -127
+126 -127
+128 -127
+141 -127
+128 -128
+114 -128
+127 -128
+129 -128
+142 -128
+129 -129
+115 -129
+128 -129
+130 -129
+143 -129
+130 -130
+116 -130
+129 -130
+131 -130
+144 -130
+131 -131
+117 -131
+130 -131
+132 -131
+145 -131
+132 -132
+118 -132
+131 -132
+133 -132
+146 -132
+133 -133
+119 -133
+132 -133
+134 -133
+147 -133
+134 -134
+120 -134
+133 -134
+135 -134
+148 -134
+135 -135
+121 -135
+134 -135
+136 -135
+149 -135
+136 -136
+122 -136
+135 -136
+137 -136
+150 -136
+137 -137
+123 -137
+136 -137
+138 -137
+151 -137
+138 -138
+124 -138
+137 -138
+139 -138
+152 -138
+139 -139
+125 -139
+138 -139
+153 -139
+140 -140
+126 -140
+141 -140
+154 -140
+141 -141
+127 -141
+140 -141
+142 -141
+155 -141
+142 -142
+128 -142
+141 -142
+143 -142
+156 -142
+143 -143
+129 -143
+142 -143
+144 -143
+157 -143
+144 -144
+130 -144
+143 -144
+145 -144
+158 -144
+145 -145
+131 -145
+144 -145
+146 -145
+159 -145
+146 -146
+132 -146
+145 -146
+147 -146
+160 -146
+147 -147
+133 -147
+146 -147
+148 -147
+161 -147
+148 -148
+134 -148
+147 -148
+149 -148
+162 -148
+149 -149
+135 -149
+148 -149
+150 -149
+163 -149
+150 -150
+136 -150
+149 -150
+151 -150
+164 -150
+151 -151
+137 -151
+150 -151
+152 -151
+165 -151
+152 -152
+138 -152
+151 -152
+153 -152
+166 -152
+153 -153
+139 -153
+152 -153
+167 -153
+154 -154
+140 -154
+155 -154
+168 -154
+155 -155
+141 -155
+154 -155
+156 -155
+169 -155
+156 -156
+142 -156
+155 -156
+157 -156
+170 -156
+157 -157
+143 -157
+156 -157
+158 -157
+171 -157
+158 -158
+144 -158
+157 -158
+159 -158
+172 -158
+159 -159
+145 -159
+158 -159
+160 -159
+173 -159
+160 -160
+146 -160
+159 -160
+161 -160
+174 -160
+161 -161
+147 -161
+160 -161
+162 -161
+175 -161
+162 -162
+148 -162
+161 -162
+163 -162
+176 -162
+163 -163
+149 -163
+162 -163
+164 -163
+177 -163
+164 -164
+150 -164
+163 -164
+165 -164
+178 -164
+165 -165
+151 -165
+164 -165
+166 -165
+179 -165
+166 -166
+152 -166
+165 -166
+167 -166
+180 -166
+167 -167
+153 -167
+166 -167
+181 -167
+168 -168
+154 -168
+169 -168
+182 -168
+169 -169
+155 -169
+168 -169
+170 -169
+183 -169
+170 -170
+156 -170
+169 -170
+171 -170
+184 -170
+171 -171
+157 -171
+170 -171
+172 -171
+185 -171
+172 -172
+158 -172
+171 -172
+173 -172
+186 -172
+173 -173
+159 -173
+172 -173
+174 -173
+187 -173
+174 -174
+160 -174
+173 -174
+175 -174
+188 -174
+175 -175
+161 -175
+174 -175
+176 -175
+189 -175
+176 -176
+162 -176
+175 -176
+177 -176
+190 -176
+177 -177
+163 -177
+176 -177
+178 -177
+191 -177
+178 -178
+164 -178
+177 -178
+179 -178
+192 -178
+179 -179
+165 -179
+178 -179
+180 -179
+193 -179
+180 -180
+166 -180
+179 -180
+181 -180
+194 -180
+181 -181
+167 -181
+180 -181
+195 -181
+182 -182
+168 -182
+183 -182
+183 -183
+169 -183
+182 -183
+184 -183
+184 -184
+170 -184
+183 -184
+185 -184
+185 -185
+171 -185
+184 -185
+186 -185
+186 -186
+172 -186
+185 -186
+187 -186
+187 -187
+173 -187
+186 -187
+188 -187
+188 -188
+174 -188
+187 -188
+189 -188
+189 -189
+175 -189
+188 -189
+190 -189
+190 -190
+176 -190
+189 -190
+191 -190
+191 -191
+177 -191
+190 -191
+192 -191
+192 -192
+178 -192
+191 -192
+193 -192
+193 -193
+179 -193
+192 -193
+194 -193
+194 -194
+180 -194
+193 -194
+195 -194
+195 -195
+181 -195
+194 -195
+DEAL::196 196 14 1338
+DEAL::4
+DEAL::5
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::6
+DEAL::5
+DEAL::4
+0 0
+1 0
+2 0
+14 0
+1 -1
+0 -1
+2 -1
+3 -1
+15 -1
+2 -2
+0 -2
+1 -2
+3 -2
+4 -2
+16 -2
+3 -3
+1 -3
+2 -3
+4 -3
+5 -3
+17 -3
+4 -4
+2 -4
+3 -4
+5 -4
+6 -4
+18 -4
+5 -5
+3 -5
+4 -5
+6 -5
+7 -5
+19 -5
+6 -6
+4 -6
+5 -6
+7 -6
+8 -6
+20 -6
+7 -7
+5 -7
+6 -7
+8 -7
+9 -7
+21 -7
+8 -8
+6 -8
+7 -8
+9 -8
+10 -8
+22 -8
+9 -9
+7 -9
+8 -9
+10 -9
+11 -9
+23 -9
+10 -10
+8 -10
+9 -10
+11 -10
+12 -10
+24 -10
+11 -11
+9 -11
+10 -11
+12 -11
+13 -11
+25 -11
+12 -12
+10 -12
+11 -12
+13 -12
+14 -12
+26 -12
+13 -13
+11 -13
+12 -13
+14 -13
+15 -13
+27 -13
+14 -14
+0 -14
+12 -14
+13 -14
+15 -14
+16 -14
+28 -14
+15 -15
+1 -15
+13 -15
+14 -15
+16 -15
+17 -15
+29 -15
+16 -16
+2 -16
+14 -16
+15 -16
+17 -16
+18 -16
+30 -16
+17 -17
+3 -17
+15 -17
+16 -17
+18 -17
+19 -17
+31 -17
+18 -18
+4 -18
+16 -18
+17 -18
+19 -18
+20 -18
+32 -18
+19 -19
+5 -19
+17 -19
+18 -19
+20 -19
+21 -19
+33 -19
+20 -20
+6 -20
+18 -20
+19 -20
+21 -20
+22 -20
+34 -20
+21 -21
+7 -21
+19 -21
+20 -21
+22 -21
+23 -21
+35 -21
+22 -22
+8 -22
+20 -22
+21 -22
+23 -22
+24 -22
+36 -22
+23 -23
+9 -23
+21 -23
+22 -23
+24 -23
+25 -23
+37 -23
+24 -24
+10 -24
+22 -24
+23 -24
+25 -24
+26 -24
+38 -24
+25 -25
+11 -25
+23 -25
+24 -25
+26 -25
+27 -25
+39 -25
+26 -26
+12 -26
+24 -26
+25 -26
+27 -26
+28 -26
+40 -26
+27 -27
+13 -27
+25 -27
+26 -27
+28 -27
+29 -27
+41 -27
+28 -28
+14 -28
+26 -28
+27 -28
+29 -28
+30 -28
+42 -28
+29 -29
+15 -29
+27 -29
+28 -29
+30 -29
+31 -29
+43 -29
+30 -30
+16 -30
+28 -30
+29 -30
+31 -30
+32 -30
+44 -30
+31 -31
+17 -31
+29 -31
+30 -31
+32 -31
+33 -31
+45 -31
+32 -32
+18 -32
+30 -32
+31 -32
+33 -32
+34 -32
+46 -32
+33 -33
+19 -33
+31 -33
+32 -33
+34 -33
+35 -33
+47 -33
+34 -34
+20 -34
+32 -34
+33 -34
+35 -34
+36 -34
+48 -34
+35 -35
+21 -35
+33 -35
+34 -35
+36 -35
+37 -35
+49 -35
+36 -36
+22 -36
+34 -36
+35 -36
+37 -36
+38 -36
+50 -36
+37 -37
+23 -37
+35 -37
+36 -37
+38 -37
+39 -37
+51 -37
+38 -38
+24 -38
+36 -38
+37 -38
+39 -38
+40 -38
+52 -38
+39 -39
+25 -39
+37 -39
+38 -39
+40 -39
+41 -39
+53 -39
+40 -40
+26 -40
+38 -40
+39 -40
+41 -40
+42 -40
+54 -40
+41 -41
+27 -41
+39 -41
+40 -41
+42 -41
+43 -41
+55 -41
+42 -42
+28 -42
+40 -42
+41 -42
+43 -42
+44 -42
+56 -42
+43 -43
+29 -43
+41 -43
+42 -43
+44 -43
+45 -43
+57 -43
+44 -44
+30 -44
+42 -44
+43 -44
+45 -44
+46 -44
+58 -44
+45 -45
+31 -45
+43 -45
+44 -45
+46 -45
+47 -45
+59 -45
+46 -46
+32 -46
+44 -46
+45 -46
+47 -46
+48 -46
+60 -46
+47 -47
+33 -47
+45 -47
+46 -47
+48 -47
+49 -47
+61 -47
+48 -48
+34 -48
+46 -48
+47 -48
+49 -48
+50 -48
+62 -48
+49 -49
+35 -49
+47 -49
+48 -49
+50 -49
+51 -49
+63 -49
+50 -50
+36 -50
+48 -50
+49 -50
+51 -50
+52 -50
+64 -50
+51 -51
+37 -51
+49 -51
+50 -51
+52 -51
+53 -51
+65 -51
+52 -52
+38 -52
+50 -52
+51 -52
+53 -52
+54 -52
+66 -52
+53 -53
+39 -53
+51 -53
+52 -53
+54 -53
+55 -53
+67 -53
+54 -54
+40 -54
+52 -54
+53 -54
+55 -54
+56 -54
+68 -54
+55 -55
+41 -55
+53 -55
+54 -55
+56 -55
+57 -55
+69 -55
+56 -56
+42 -56
+54 -56
+55 -56
+57 -56
+58 -56
+70 -56
+57 -57
+43 -57
+55 -57
+56 -57
+58 -57
+59 -57
+71 -57
+58 -58
+44 -58
+56 -58
+57 -58
+59 -58
+60 -58
+72 -58
+59 -59
+45 -59
+57 -59
+58 -59
+60 -59
+61 -59
+73 -59
+60 -60
+46 -60
+58 -60
+59 -60
+61 -60
+62 -60
+74 -60
+61 -61
+47 -61
+59 -61
+60 -61
+62 -61
+63 -61
+75 -61
+62 -62
+48 -62
+60 -62
+61 -62
+63 -62
+64 -62
+76 -62
+63 -63
+49 -63
+61 -63
+62 -63
+64 -63
+65 -63
+77 -63
+64 -64
+50 -64
+62 -64
+63 -64
+65 -64
+66 -64
+78 -64
+65 -65
+51 -65
+63 -65
+64 -65
+66 -65
+67 -65
+79 -65
+66 -66
+52 -66
+64 -66
+65 -66
+67 -66
+68 -66
+80 -66
+67 -67
+53 -67
+65 -67
+66 -67
+68 -67
+69 -67
+81 -67
+68 -68
+54 -68
+66 -68
+67 -68
+69 -68
+70 -68
+82 -68
+69 -69
+55 -69
+67 -69
+68 -69
+70 -69
+71 -69
+83 -69
+70 -70
+56 -70
+68 -70
+69 -70
+71 -70
+72 -70
+84 -70
+71 -71
+57 -71
+69 -71
+70 -71
+72 -71
+73 -71
+85 -71
+72 -72
+58 -72
+70 -72
+71 -72
+73 -72
+74 -72
+86 -72
+73 -73
+59 -73
+71 -73
+72 -73
+74 -73
+75 -73
+87 -73
+74 -74
+60 -74
+72 -74
+73 -74
+75 -74
+76 -74
+88 -74
+75 -75
+61 -75
+73 -75
+74 -75
+76 -75
+77 -75
+89 -75
+76 -76
+62 -76
+74 -76
+75 -76
+77 -76
+78 -76
+90 -76
+77 -77
+63 -77
+75 -77
+76 -77
+78 -77
+79 -77
+91 -77
+78 -78
+64 -78
+76 -78
+77 -78
+79 -78
+80 -78
+92 -78
+79 -79
+65 -79
+77 -79
+78 -79
+80 -79
+81 -79
+93 -79
+80 -80
+66 -80
+78 -80
+79 -80
+81 -80
+82 -80
+94 -80
+81 -81
+67 -81
+79 -81
+80 -81
+82 -81
+83 -81
+95 -81
+82 -82
+68 -82
+80 -82
+81 -82
+83 -82
+84 -82
+96 -82
+83 -83
+69 -83
+81 -83
+82 -83
+84 -83
+85 -83
+97 -83
+84 -84
+70 -84
+82 -84
+83 -84
+85 -84
+86 -84
+98 -84
+85 -85
+71 -85
+83 -85
+84 -85
+86 -85
+87 -85
+99 -85
+86 -86
+72 -86
+84 -86
+85 -86
+87 -86
+88 -86
+100 -86
+87 -87
+73 -87
+85 -87
+86 -87
+88 -87
+89 -87
+101 -87
+88 -88
+74 -88
+86 -88
+87 -88
+89 -88
+90 -88
+102 -88
+89 -89
+75 -89
+87 -89
+88 -89
+90 -89
+91 -89
+103 -89
+90 -90
+76 -90
+88 -90
+89 -90
+91 -90
+92 -90
+104 -90
+91 -91
+77 -91
+89 -91
+90 -91
+92 -91
+93 -91
+105 -91
+92 -92
+78 -92
+90 -92
+91 -92
+93 -92
+94 -92
+106 -92
+93 -93
+79 -93
+91 -93
+92 -93
+94 -93
+95 -93
+107 -93
+94 -94
+80 -94
+92 -94
+93 -94
+95 -94
+96 -94
+108 -94
+95 -95
+81 -95
+93 -95
+94 -95
+96 -95
+97 -95
+109 -95
+96 -96
+82 -96
+94 -96
+95 -96
+97 -96
+98 -96
+110 -96
+97 -97
+83 -97
+95 -97
+96 -97
+98 -97
+99 -97
+111 -97
+98 -98
+84 -98
+96 -98
+97 -98
+99 -98
+100 -98
+112 -98
+99 -99
+85 -99
+97 -99
+98 -99
+100 -99
+101 -99
+113 -99
+100 -100
+86 -100
+98 -100
+99 -100
+101 -100
+102 -100
+114 -100
+101 -101
+87 -101
+99 -101
+100 -101
+102 -101
+103 -101
+115 -101
+102 -102
+88 -102
+100 -102
+101 -102
+103 -102
+104 -102
+116 -102
+103 -103
+89 -103
+101 -103
+102 -103
+104 -103
+105 -103
+117 -103
+104 -104
+90 -104
+102 -104
+103 -104
+105 -104
+106 -104
+118 -104
+105 -105
+91 -105
+103 -105
+104 -105
+106 -105
+107 -105
+119 -105
+106 -106
+92 -106
+104 -106
+105 -106
+107 -106
+108 -106
+120 -106
+107 -107
+93 -107
+105 -107
+106 -107
+108 -107
+109 -107
+121 -107
+108 -108
+94 -108
+106 -108
+107 -108
+109 -108
+110 -108
+122 -108
+109 -109
+95 -109
+107 -109
+108 -109
+110 -109
+111 -109
+123 -109
+110 -110
+96 -110
+108 -110
+109 -110
+111 -110
+112 -110
+124 -110
+111 -111
+97 -111
+109 -111
+110 -111
+112 -111
+113 -111
+125 -111
+112 -112
+98 -112
+110 -112
+111 -112
+113 -112
+114 -112
+126 -112
+113 -113
+99 -113
+111 -113
+112 -113
+114 -113
+115 -113
+127 -113
+114 -114
+100 -114
+112 -114
+113 -114
+115 -114
+116 -114
+128 -114
+115 -115
+101 -115
+113 -115
+114 -115
+116 -115
+117 -115
+129 -115
+116 -116
+102 -116
+114 -116
+115 -116
+117 -116
+118 -116
+130 -116
+117 -117
+103 -117
+115 -117
+116 -117
+118 -117
+119 -117
+131 -117
+118 -118
+104 -118
+116 -118
+117 -118
+119 -118
+120 -118
+132 -118
+119 -119
+105 -119
+117 -119
+118 -119
+120 -119
+121 -119
+133 -119
+120 -120
+106 -120
+118 -120
+119 -120
+121 -120
+122 -120
+134 -120
+121 -121
+107 -121
+119 -121
+120 -121
+122 -121
+123 -121
+135 -121
+122 -122
+108 -122
+120 -122
+121 -122
+123 -122
+124 -122
+136 -122
+123 -123
+109 -123
+121 -123
+122 -123
+124 -123
+125 -123
+137 -123
+124 -124
+110 -124
+122 -124
+123 -124
+125 -124
+126 -124
+138 -124
+125 -125
+111 -125
+123 -125
+124 -125
+126 -125
+127 -125
+139 -125
+126 -126
+112 -126
+124 -126
+125 -126
+127 -126
+128 -126
+140 -126
+127 -127
+113 -127
+125 -127
+126 -127
+128 -127
+129 -127
+141 -127
+128 -128
+114 -128
+126 -128
+127 -128
+129 -128
+130 -128
+142 -128
+129 -129
+115 -129
+127 -129
+128 -129
+130 -129
+131 -129
+143 -129
+130 -130
+116 -130
+128 -130
+129 -130
+131 -130
+132 -130
+144 -130
+131 -131
+117 -131
+129 -131
+130 -131
+132 -131
+133 -131
+145 -131
+132 -132
+118 -132
+130 -132
+131 -132
+133 -132
+134 -132
+146 -132
+133 -133
+119 -133
+131 -133
+132 -133
+134 -133
+135 -133
+147 -133
+134 -134
+120 -134
+132 -134
+133 -134
+135 -134
+136 -134
+148 -134
+135 -135
+121 -135
+133 -135
+134 -135
+136 -135
+137 -135
+149 -135
+136 -136
+122 -136
+134 -136
+135 -136
+137 -136
+138 -136
+150 -136
+137 -137
+123 -137
+135 -137
+136 -137
+138 -137
+139 -137
+151 -137
+138 -138
+124 -138
+136 -138
+137 -138
+139 -138
+140 -138
+152 -138
+139 -139
+125 -139
+137 -139
+138 -139
+140 -139
+141 -139
+153 -139
+140 -140
+126 -140
+138 -140
+139 -140
+141 -140
+142 -140
+154 -140
+141 -141
+127 -141
+139 -141
+140 -141
+142 -141
+143 -141
+155 -141
+142 -142
+128 -142
+140 -142
+141 -142
+143 -142
+144 -142
+156 -142
+143 -143
+129 -143
+141 -143
+142 -143
+144 -143
+145 -143
+157 -143
+144 -144
+130 -144
+142 -144
+143 -144
+145 -144
+146 -144
+158 -144
+145 -145
+131 -145
+143 -145
+144 -145
+146 -145
+147 -145
+159 -145
+146 -146
+132 -146
+144 -146
+145 -146
+147 -146
+148 -146
+160 -146
+147 -147
+133 -147
+145 -147
+146 -147
+148 -147
+149 -147
+161 -147
+148 -148
+134 -148
+146 -148
+147 -148
+149 -148
+150 -148
+162 -148
+149 -149
+135 -149
+147 -149
+148 -149
+150 -149
+151 -149
+163 -149
+150 -150
+136 -150
+148 -150
+149 -150
+151 -150
+152 -150
+164 -150
+151 -151
+137 -151
+149 -151
+150 -151
+152 -151
+153 -151
+165 -151
+152 -152
+138 -152
+150 -152
+151 -152
+153 -152
+154 -152
+166 -152
+153 -153
+139 -153
+151 -153
+152 -153
+154 -153
+155 -153
+167 -153
+154 -154
+140 -154
+152 -154
+153 -154
+155 -154
+156 -154
+168 -154
+155 -155
+141 -155
+153 -155
+154 -155
+156 -155
+157 -155
+169 -155
+156 -156
+142 -156
+154 -156
+155 -156
+157 -156
+158 -156
+170 -156
+157 -157
+143 -157
+155 -157
+156 -157
+158 -157
+159 -157
+171 -157
+158 -158
+144 -158
+156 -158
+157 -158
+159 -158
+160 -158
+172 -158
+159 -159
+145 -159
+157 -159
+158 -159
+160 -159
+161 -159
+173 -159
+160 -160
+146 -160
+158 -160
+159 -160
+161 -160
+162 -160
+174 -160
+161 -161
+147 -161
+159 -161
+160 -161
+162 -161
+163 -161
+175 -161
+162 -162
+148 -162
+160 -162
+161 -162
+163 -162
+164 -162
+176 -162
+163 -163
+149 -163
+161 -163
+162 -163
+164 -163
+165 -163
+177 -163
+164 -164
+150 -164
+162 -164
+163 -164
+165 -164
+166 -164
+178 -164
+165 -165
+151 -165
+163 -165
+164 -165
+166 -165
+167 -165
+179 -165
+166 -166
+152 -166
+164 -166
+165 -166
+167 -166
+168 -166
+180 -166
+167 -167
+153 -167
+165 -167
+166 -167
+168 -167
+169 -167
+181 -167
+168 -168
+154 -168
+166 -168
+167 -168
+169 -168
+170 -168
+182 -168
+169 -169
+155 -169
+167 -169
+168 -169
+170 -169
+171 -169
+183 -169
+170 -170
+156 -170
+168 -170
+169 -170
+171 -170
+172 -170
+184 -170
+171 -171
+157 -171
+169 -171
+170 -171
+172 -171
+173 -171
+185 -171
+172 -172
+158 -172
+170 -172
+171 -172
+173 -172
+174 -172
+186 -172
+173 -173
+159 -173
+171 -173
+172 -173
+174 -173
+175 -173
+187 -173
+174 -174
+160 -174
+172 -174
+173 -174
+175 -174
+176 -174
+188 -174
+175 -175
+161 -175
+173 -175
+174 -175
+176 -175
+177 -175
+189 -175
+176 -176
+162 -176
+174 -176
+175 -176
+177 -176
+178 -176
+190 -176
+177 -177
+163 -177
+175 -177
+176 -177
+178 -177
+179 -177
+191 -177
+178 -178
+164 -178
+176 -178
+177 -178
+179 -178
+180 -178
+192 -178
+179 -179
+165 -179
+177 -179
+178 -179
+180 -179
+181 -179
+193 -179
+180 -180
+166 -180
+178 -180
+179 -180
+181 -180
+182 -180
+194 -180
+181 -181
+167 -181
+179 -181
+180 -181
+182 -181
+183 -181
+195 -181
+182 -182
+168 -182
+180 -182
+181 -182
+183 -182
+184 -182
+183 -183
+169 -183
+181 -183
+182 -183
+184 -183
+185 -183
+184 -184
+170 -184
+182 -184
+183 -184
+185 -184
+186 -184
+185 -185
+171 -185
+183 -185
+184 -185
+186 -185
+187 -185
+186 -186
+172 -186
+184 -186
+185 -186
+187 -186
+188 -186
+187 -187
+173 -187
+185 -187
+186 -187
+188 -187
+189 -187
+188 -188
+174 -188
+186 -188
+187 -188
+189 -188
+190 -188
+189 -189
+175 -189
+187 -189
+188 -189
+190 -189
+191 -189
+190 -190
+176 -190
+188 -190
+189 -190
+191 -190
+192 -190
+191 -191
+177 -191
+189 -191
+190 -191
+192 -191
+193 -191
+192 -192
+178 -192
+190 -192
+191 -192
+193 -192
+194 -192
+193 -193
+179 -193
+191 -193
+192 -193
+194 -193
+195 -193
+194 -194
+180 -194
+192 -194
+193 -194
+195 -194
+195 -195
+181 -195
+193 -195
+194 -195
+DEAL::196 196 195 1722
+DEAL::196
+DEAL::5
+DEAL::6
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::8
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::7
+DEAL::6
+DEAL::5
+0 0
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+10 0
+11 0
+12 0
+13 0
+14 0
+15 0
+16 0
+17 0
+18 0
+19 0
+20 0
+21 0
+22 0
+23 0
+24 0
+25 0
+26 0
+27 0
+28 0
+29 0
+30 0
+31 0
+32 0
+33 0
+34 0
+35 0
+36 0
+37 0
+38 0
+39 0
+40 0
+41 0
+42 0
+43 0
+44 0
+45 0
+46 0
+47 0
+48 0
+49 0
+50 0
+51 0
+52 0
+53 0
+54 0
+55 0
+56 0
+57 0
+58 0
+59 0
+60 0
+61 0
+62 0
+63 0
+64 0
+65 0
+66 0
+67 0
+68 0
+69 0
+70 0
+71 0
+72 0
+73 0
+74 0
+75 0
+76 0
+77 0
+78 0
+79 0
+80 0
+81 0
+82 0
+83 0
+84 0
+85 0
+86 0
+87 0
+88 0
+89 0
+90 0
+91 0
+92 0
+93 0
+94 0
+95 0
+96 0
+97 0
+98 0
+99 0
+100 0
+101 0
+102 0
+103 0
+104 0
+105 0
+106 0
+107 0
+108 0
+109 0
+110 0
+111 0
+112 0
+113 0
+114 0
+115 0
+116 0
+117 0
+118 0
+119 0
+120 0
+121 0
+122 0
+123 0
+124 0
+125 0
+126 0
+127 0
+128 0
+129 0
+130 0
+131 0
+132 0
+133 0
+134 0
+135 0
+136 0
+137 0
+138 0
+139 0
+140 0
+141 0
+142 0
+143 0
+144 0
+145 0
+146 0
+147 0
+148 0
+149 0
+150 0
+151 0
+152 0
+153 0
+154 0
+155 0
+156 0
+157 0
+158 0
+159 0
+160 0
+161 0
+162 0
+163 0
+164 0
+165 0
+166 0
+167 0
+168 0
+169 0
+170 0
+171 0
+172 0
+173 0
+174 0
+175 0
+176 0
+177 0
+178 0
+179 0
+180 0
+181 0
+182 0
+183 0
+184 0
+185 0
+186 0
+187 0
+188 0
+189 0
+190 0
+191 0
+192 0
+193 0
+194 0
+195 0
+1 -1
+0 -1
+2 -1
+3 -1
+15 -1
+2 -2
+0 -2
+1 -2
+3 -2
+4 -2
+16 -2
+3 -3
+0 -3
+1 -3
+2 -3
+4 -3
+5 -3
+17 -3
+4 -4
+0 -4
+2 -4
+3 -4
+5 -4
+6 -4
+18 -4
+5 -5
+0 -5
+3 -5
+4 -5
+6 -5
+7 -5
+19 -5
+6 -6
+0 -6
+4 -6
+5 -6
+7 -6
+8 -6
+20 -6
+7 -7
+0 -7
+5 -7
+6 -7
+8 -7
+9 -7
+21 -7
+8 -8
+0 -8
+6 -8
+7 -8
+9 -8
+10 -8
+22 -8
+9 -9
+0 -9
+7 -9
+8 -9
+10 -9
+11 -9
+23 -9
+10 -10
+0 -10
+8 -10
+9 -10
+11 -10
+12 -10
+24 -10
+11 -11
+0 -11
+9 -11
+10 -11
+12 -11
+13 -11
+25 -11
+12 -12
+0 -12
+10 -12
+11 -12
+13 -12
+14 -12
+26 -12
+13 -13
+0 -13
+11 -13
+12 -13
+14 -13
+15 -13
+27 -13
+14 -14
+0 -14
+12 -14
+13 -14
+15 -14
+16 -14
+28 -14
+15 -15
+0 -15
+1 -15
+13 -15
+14 -15
+16 -15
+17 -15
+29 -15
+16 -16
+0 -16
+2 -16
+14 -16
+15 -16
+17 -16
+18 -16
+30 -16
+17 -17
+0 -17
+3 -17
+15 -17
+16 -17
+18 -17
+19 -17
+31 -17
+18 -18
+0 -18
+4 -18
+16 -18
+17 -18
+19 -18
+20 -18
+32 -18
+19 -19
+0 -19
+5 -19
+17 -19
+18 -19
+20 -19
+21 -19
+33 -19
+20 -20
+0 -20
+6 -20
+18 -20
+19 -20
+21 -20
+22 -20
+34 -20
+21 -21
+0 -21
+7 -21
+19 -21
+20 -21
+22 -21
+23 -21
+35 -21
+22 -22
+0 -22
+8 -22
+20 -22
+21 -22
+23 -22
+24 -22
+36 -22
+23 -23
+0 -23
+9 -23
+21 -23
+22 -23
+24 -23
+25 -23
+37 -23
+24 -24
+0 -24
+10 -24
+22 -24
+23 -24
+25 -24
+26 -24
+38 -24
+25 -25
+0 -25
+11 -25
+23 -25
+24 -25
+26 -25
+27 -25
+39 -25
+26 -26
+0 -26
+12 -26
+24 -26
+25 -26
+27 -26
+28 -26
+40 -26
+27 -27
+0 -27
+13 -27
+25 -27
+26 -27
+28 -27
+29 -27
+41 -27
+28 -28
+0 -28
+14 -28
+26 -28
+27 -28
+29 -28
+30 -28
+42 -28
+29 -29
+0 -29
+15 -29
+27 -29
+28 -29
+30 -29
+31 -29
+43 -29
+30 -30
+0 -30
+16 -30
+28 -30
+29 -30
+31 -30
+32 -30
+44 -30
+31 -31
+0 -31
+17 -31
+29 -31
+30 -31
+32 -31
+33 -31
+45 -31
+32 -32
+0 -32
+18 -32
+30 -32
+31 -32
+33 -32
+34 -32
+46 -32
+33 -33
+0 -33
+19 -33
+31 -33
+32 -33
+34 -33
+35 -33
+47 -33
+34 -34
+0 -34
+20 -34
+32 -34
+33 -34
+35 -34
+36 -34
+48 -34
+35 -35
+0 -35
+21 -35
+33 -35
+34 -35
+36 -35
+37 -35
+49 -35
+36 -36
+0 -36
+22 -36
+34 -36
+35 -36
+37 -36
+38 -36
+50 -36
+37 -37
+0 -37
+23 -37
+35 -37
+36 -37
+38 -37
+39 -37
+51 -37
+38 -38
+0 -38
+24 -38
+36 -38
+37 -38
+39 -38
+40 -38
+52 -38
+39 -39
+0 -39
+25 -39
+37 -39
+38 -39
+40 -39
+41 -39
+53 -39
+40 -40
+0 -40
+26 -40
+38 -40
+39 -40
+41 -40
+42 -40
+54 -40
+41 -41
+0 -41
+27 -41
+39 -41
+40 -41
+42 -41
+43 -41
+55 -41
+42 -42
+0 -42
+28 -42
+40 -42
+41 -42
+43 -42
+44 -42
+56 -42
+43 -43
+0 -43
+29 -43
+41 -43
+42 -43
+44 -43
+45 -43
+57 -43
+44 -44
+0 -44
+30 -44
+42 -44
+43 -44
+45 -44
+46 -44
+58 -44
+45 -45
+0 -45
+31 -45
+43 -45
+44 -45
+46 -45
+47 -45
+59 -45
+46 -46
+0 -46
+32 -46
+44 -46
+45 -46
+47 -46
+48 -46
+60 -46
+47 -47
+0 -47
+33 -47
+45 -47
+46 -47
+48 -47
+49 -47
+61 -47
+48 -48
+0 -48
+34 -48
+46 -48
+47 -48
+49 -48
+50 -48
+62 -48
+49 -49
+0 -49
+35 -49
+47 -49
+48 -49
+50 -49
+51 -49
+63 -49
+50 -50
+0 -50
+36 -50
+48 -50
+49 -50
+51 -50
+52 -50
+64 -50
+51 -51
+0 -51
+37 -51
+49 -51
+50 -51
+52 -51
+53 -51
+65 -51
+52 -52
+0 -52
+38 -52
+50 -52
+51 -52
+53 -52
+54 -52
+66 -52
+53 -53
+0 -53
+39 -53
+51 -53
+52 -53
+54 -53
+55 -53
+67 -53
+54 -54
+0 -54
+40 -54
+52 -54
+53 -54
+55 -54
+56 -54
+68 -54
+55 -55
+0 -55
+41 -55
+53 -55
+54 -55
+56 -55
+57 -55
+69 -55
+56 -56
+0 -56
+42 -56
+54 -56
+55 -56
+57 -56
+58 -56
+70 -56
+57 -57
+0 -57
+43 -57
+55 -57
+56 -57
+58 -57
+59 -57
+71 -57
+58 -58
+0 -58
+44 -58
+56 -58
+57 -58
+59 -58
+60 -58
+72 -58
+59 -59
+0 -59
+45 -59
+57 -59
+58 -59
+60 -59
+61 -59
+73 -59
+60 -60
+0 -60
+46 -60
+58 -60
+59 -60
+61 -60
+62 -60
+74 -60
+61 -61
+0 -61
+47 -61
+59 -61
+60 -61
+62 -61
+63 -61
+75 -61
+62 -62
+0 -62
+48 -62
+60 -62
+61 -62
+63 -62
+64 -62
+76 -62
+63 -63
+0 -63
+49 -63
+61 -63
+62 -63
+64 -63
+65 -63
+77 -63
+64 -64
+0 -64
+50 -64
+62 -64
+63 -64
+65 -64
+66 -64
+78 -64
+65 -65
+0 -65
+51 -65
+63 -65
+64 -65
+66 -65
+67 -65
+79 -65
+66 -66
+0 -66
+52 -66
+64 -66
+65 -66
+67 -66
+68 -66
+80 -66
+67 -67
+0 -67
+53 -67
+65 -67
+66 -67
+68 -67
+69 -67
+81 -67
+68 -68
+0 -68
+54 -68
+66 -68
+67 -68
+69 -68
+70 -68
+82 -68
+69 -69
+0 -69
+55 -69
+67 -69
+68 -69
+70 -69
+71 -69
+83 -69
+70 -70
+0 -70
+56 -70
+68 -70
+69 -70
+71 -70
+72 -70
+84 -70
+71 -71
+0 -71
+57 -71
+69 -71
+70 -71
+72 -71
+73 -71
+85 -71
+72 -72
+0 -72
+58 -72
+70 -72
+71 -72
+73 -72
+74 -72
+86 -72
+73 -73
+0 -73
+59 -73
+71 -73
+72 -73
+74 -73
+75 -73
+87 -73
+74 -74
+0 -74
+60 -74
+72 -74
+73 -74
+75 -74
+76 -74
+88 -74
+75 -75
+0 -75
+61 -75
+73 -75
+74 -75
+76 -75
+77 -75
+89 -75
+76 -76
+0 -76
+62 -76
+74 -76
+75 -76
+77 -76
+78 -76
+90 -76
+77 -77
+0 -77
+63 -77
+75 -77
+76 -77
+78 -77
+79 -77
+91 -77
+78 -78
+0 -78
+64 -78
+76 -78
+77 -78
+79 -78
+80 -78
+92 -78
+79 -79
+0 -79
+65 -79
+77 -79
+78 -79
+80 -79
+81 -79
+93 -79
+80 -80
+0 -80
+66 -80
+78 -80
+79 -80
+81 -80
+82 -80
+94 -80
+81 -81
+0 -81
+67 -81
+79 -81
+80 -81
+82 -81
+83 -81
+95 -81
+82 -82
+0 -82
+68 -82
+80 -82
+81 -82
+83 -82
+84 -82
+96 -82
+83 -83
+0 -83
+69 -83
+81 -83
+82 -83
+84 -83
+85 -83
+97 -83
+84 -84
+0 -84
+70 -84
+82 -84
+83 -84
+85 -84
+86 -84
+98 -84
+85 -85
+0 -85
+71 -85
+83 -85
+84 -85
+86 -85
+87 -85
+99 -85
+86 -86
+0 -86
+72 -86
+84 -86
+85 -86
+87 -86
+88 -86
+100 -86
+87 -87
+0 -87
+73 -87
+85 -87
+86 -87
+88 -87
+89 -87
+101 -87
+88 -88
+0 -88
+74 -88
+86 -88
+87 -88
+89 -88
+90 -88
+102 -88
+89 -89
+0 -89
+75 -89
+87 -89
+88 -89
+90 -89
+91 -89
+103 -89
+90 -90
+0 -90
+76 -90
+88 -90
+89 -90
+91 -90
+92 -90
+104 -90
+91 -91
+0 -91
+77 -91
+89 -91
+90 -91
+92 -91
+93 -91
+105 -91
+92 -92
+0 -92
+78 -92
+90 -92
+91 -92
+93 -92
+94 -92
+106 -92
+93 -93
+0 -93
+79 -93
+91 -93
+92 -93
+94 -93
+95 -93
+107 -93
+94 -94
+0 -94
+80 -94
+92 -94
+93 -94
+95 -94
+96 -94
+108 -94
+95 -95
+0 -95
+81 -95
+93 -95
+94 -95
+96 -95
+97 -95
+109 -95
+96 -96
+0 -96
+82 -96
+94 -96
+95 -96
+97 -96
+98 -96
+110 -96
+97 -97
+0 -97
+83 -97
+95 -97
+96 -97
+98 -97
+99 -97
+111 -97
+98 -98
+0 -98
+84 -98
+96 -98
+97 -98
+99 -98
+100 -98
+112 -98
+99 -99
+0 -99
+85 -99
+97 -99
+98 -99
+100 -99
+101 -99
+113 -99
+100 -100
+0 -100
+86 -100
+98 -100
+99 -100
+101 -100
+102 -100
+114 -100
+101 -101
+0 -101
+87 -101
+99 -101
+100 -101
+102 -101
+103 -101
+115 -101
+102 -102
+0 -102
+88 -102
+100 -102
+101 -102
+103 -102
+104 -102
+116 -102
+103 -103
+0 -103
+89 -103
+101 -103
+102 -103
+104 -103
+105 -103
+117 -103
+104 -104
+0 -104
+90 -104
+102 -104
+103 -104
+105 -104
+106 -104
+118 -104
+105 -105
+0 -105
+91 -105
+103 -105
+104 -105
+106 -105
+107 -105
+119 -105
+106 -106
+0 -106
+92 -106
+104 -106
+105 -106
+107 -106
+108 -106
+120 -106
+107 -107
+0 -107
+93 -107
+105 -107
+106 -107
+108 -107
+109 -107
+121 -107
+108 -108
+0 -108
+94 -108
+106 -108
+107 -108
+109 -108
+110 -108
+122 -108
+109 -109
+0 -109
+95 -109
+107 -109
+108 -109
+110 -109
+111 -109
+123 -109
+110 -110
+0 -110
+96 -110
+108 -110
+109 -110
+111 -110
+112 -110
+124 -110
+111 -111
+0 -111
+97 -111
+109 -111
+110 -111
+112 -111
+113 -111
+125 -111
+112 -112
+0 -112
+98 -112
+110 -112
+111 -112
+113 -112
+114 -112
+126 -112
+113 -113
+0 -113
+99 -113
+111 -113
+112 -113
+114 -113
+115 -113
+127 -113
+114 -114
+0 -114
+100 -114
+112 -114
+113 -114
+115 -114
+116 -114
+128 -114
+115 -115
+0 -115
+101 -115
+113 -115
+114 -115
+116 -115
+117 -115
+129 -115
+116 -116
+0 -116
+102 -116
+114 -116
+115 -116
+117 -116
+118 -116
+130 -116
+117 -117
+0 -117
+103 -117
+115 -117
+116 -117
+118 -117
+119 -117
+131 -117
+118 -118
+0 -118
+104 -118
+116 -118
+117 -118
+119 -118
+120 -118
+132 -118
+119 -119
+0 -119
+105 -119
+117 -119
+118 -119
+120 -119
+121 -119
+133 -119
+120 -120
+0 -120
+106 -120
+118 -120
+119 -120
+121 -120
+122 -120
+134 -120
+121 -121
+0 -121
+107 -121
+119 -121
+120 -121
+122 -121
+123 -121
+135 -121
+122 -122
+0 -122
+108 -122
+120 -122
+121 -122
+123 -122
+124 -122
+136 -122
+123 -123
+0 -123
+109 -123
+121 -123
+122 -123
+124 -123
+125 -123
+137 -123
+124 -124
+0 -124
+110 -124
+122 -124
+123 -124
+125 -124
+126 -124
+138 -124
+125 -125
+0 -125
+111 -125
+123 -125
+124 -125
+126 -125
+127 -125
+139 -125
+126 -126
+0 -126
+112 -126
+124 -126
+125 -126
+127 -126
+128 -126
+140 -126
+127 -127
+0 -127
+113 -127
+125 -127
+126 -127
+128 -127
+129 -127
+141 -127
+128 -128
+0 -128
+114 -128
+126 -128
+127 -128
+129 -128
+130 -128
+142 -128
+129 -129
+0 -129
+115 -129
+127 -129
+128 -129
+130 -129
+131 -129
+143 -129
+130 -130
+0 -130
+116 -130
+128 -130
+129 -130
+131 -130
+132 -130
+144 -130
+131 -131
+0 -131
+117 -131
+129 -131
+130 -131
+132 -131
+133 -131
+145 -131
+132 -132
+0 -132
+118 -132
+130 -132
+131 -132
+133 -132
+134 -132
+146 -132
+133 -133
+0 -133
+119 -133
+131 -133
+132 -133
+134 -133
+135 -133
+147 -133
+134 -134
+0 -134
+120 -134
+132 -134
+133 -134
+135 -134
+136 -134
+148 -134
+135 -135
+0 -135
+121 -135
+133 -135
+134 -135
+136 -135
+137 -135
+149 -135
+136 -136
+0 -136
+122 -136
+134 -136
+135 -136
+137 -136
+138 -136
+150 -136
+137 -137
+0 -137
+123 -137
+135 -137
+136 -137
+138 -137
+139 -137
+151 -137
+138 -138
+0 -138
+124 -138
+136 -138
+137 -138
+139 -138
+140 -138
+152 -138
+139 -139
+0 -139
+125 -139
+137 -139
+138 -139
+140 -139
+141 -139
+153 -139
+140 -140
+0 -140
+126 -140
+138 -140
+139 -140
+141 -140
+142 -140
+154 -140
+141 -141
+0 -141
+127 -141
+139 -141
+140 -141
+142 -141
+143 -141
+155 -141
+142 -142
+0 -142
+128 -142
+140 -142
+141 -142
+143 -142
+144 -142
+156 -142
+143 -143
+0 -143
+129 -143
+141 -143
+142 -143
+144 -143
+145 -143
+157 -143
+144 -144
+0 -144
+130 -144
+142 -144
+143 -144
+145 -144
+146 -144
+158 -144
+145 -145
+0 -145
+131 -145
+143 -145
+144 -145
+146 -145
+147 -145
+159 -145
+146 -146
+0 -146
+132 -146
+144 -146
+145 -146
+147 -146
+148 -146
+160 -146
+147 -147
+0 -147
+133 -147
+145 -147
+146 -147
+148 -147
+149 -147
+161 -147
+148 -148
+0 -148
+134 -148
+146 -148
+147 -148
+149 -148
+150 -148
+162 -148
+149 -149
+0 -149
+135 -149
+147 -149
+148 -149
+150 -149
+151 -149
+163 -149
+150 -150
+0 -150
+136 -150
+148 -150
+149 -150
+151 -150
+152 -150
+164 -150
+151 -151
+0 -151
+137 -151
+149 -151
+150 -151
+152 -151
+153 -151
+165 -151
+152 -152
+0 -152
+138 -152
+150 -152
+151 -152
+153 -152
+154 -152
+166 -152
+153 -153
+0 -153
+139 -153
+151 -153
+152 -153
+154 -153
+155 -153
+167 -153
+154 -154
+0 -154
+140 -154
+152 -154
+153 -154
+155 -154
+156 -154
+168 -154
+155 -155
+0 -155
+141 -155
+153 -155
+154 -155
+156 -155
+157 -155
+169 -155
+156 -156
+0 -156
+142 -156
+154 -156
+155 -156
+157 -156
+158 -156
+170 -156
+157 -157
+0 -157
+143 -157
+155 -157
+156 -157
+158 -157
+159 -157
+171 -157
+158 -158
+0 -158
+144 -158
+156 -158
+157 -158
+159 -158
+160 -158
+172 -158
+159 -159
+0 -159
+145 -159
+157 -159
+158 -159
+160 -159
+161 -159
+173 -159
+160 -160
+0 -160
+146 -160
+158 -160
+159 -160
+161 -160
+162 -160
+174 -160
+161 -161
+0 -161
+147 -161
+159 -161
+160 -161
+162 -161
+163 -161
+175 -161
+162 -162
+0 -162
+148 -162
+160 -162
+161 -162
+163 -162
+164 -162
+176 -162
+163 -163
+0 -163
+149 -163
+161 -163
+162 -163
+164 -163
+165 -163
+177 -163
+164 -164
+0 -164
+150 -164
+162 -164
+163 -164
+165 -164
+166 -164
+178 -164
+165 -165
+0 -165
+151 -165
+163 -165
+164 -165
+166 -165
+167 -165
+179 -165
+166 -166
+0 -166
+152 -166
+164 -166
+165 -166
+167 -166
+168 -166
+180 -166
+167 -167
+0 -167
+153 -167
+165 -167
+166 -167
+168 -167
+169 -167
+181 -167
+168 -168
+0 -168
+154 -168
+166 -168
+167 -168
+169 -168
+170 -168
+182 -168
+169 -169
+0 -169
+155 -169
+167 -169
+168 -169
+170 -169
+171 -169
+183 -169
+170 -170
+0 -170
+156 -170
+168 -170
+169 -170
+171 -170
+172 -170
+184 -170
+171 -171
+0 -171
+157 -171
+169 -171
+170 -171
+172 -171
+173 -171
+185 -171
+172 -172
+0 -172
+158 -172
+170 -172
+171 -172
+173 -172
+174 -172
+186 -172
+173 -173
+0 -173
+159 -173
+171 -173
+172 -173
+174 -173
+175 -173
+187 -173
+174 -174
+0 -174
+160 -174
+172 -174
+173 -174
+175 -174
+176 -174
+188 -174
+175 -175
+0 -175
+161 -175
+173 -175
+174 -175
+176 -175
+177 -175
+189 -175
+176 -176
+0 -176
+162 -176
+174 -176
+175 -176
+177 -176
+178 -176
+190 -176
+177 -177
+0 -177
+163 -177
+175 -177
+176 -177
+178 -177
+179 -177
+191 -177
+178 -178
+0 -178
+164 -178
+176 -178
+177 -178
+179 -178
+180 -178
+192 -178
+179 -179
+0 -179
+165 -179
+177 -179
+178 -179
+180 -179
+181 -179
+193 -179
+180 -180
+0 -180
+166 -180
+178 -180
+179 -180
+181 -180
+182 -180
+194 -180
+181 -181
+0 -181
+167 -181
+179 -181
+180 -181
+182 -181
+183 -181
+195 -181
+182 -182
+0 -182
+168 -182
+180 -182
+181 -182
+183 -182
+184 -182
+183 -183
+0 -183
+169 -183
+181 -183
+182 -183
+184 -183
+185 -183
+184 -184
+0 -184
+170 -184
+182 -184
+183 -184
+185 -184
+186 -184
+185 -185
+0 -185
+171 -185
+183 -185
+184 -185
+186 -185
+187 -185
+186 -186
+0 -186
+172 -186
+184 -186
+185 -186
+187 -186
+188 -186
+187 -187
+0 -187
+173 -187
+185 -187
+186 -187
+188 -187
+189 -187
+188 -188
+0 -188
+174 -188
+186 -188
+187 -188
+189 -188
+190 -188
+189 -189
+0 -189
+175 -189
+187 -189
+188 -189
+190 -189
+191 -189
+190 -190
+0 -190
+176 -190
+188 -190
+189 -190
+191 -190
+192 -190
+191 -191
+0 -191
+177 -191
+189 -191
+190 -191
+192 -191
+193 -191
+192 -192
+0 -192
+178 -192
+190 -192
+191 -192
+193 -192
+194 -192
+193 -193
+0 -193
+179 -193
+191 -193
+192 -193
+194 -193
+195 -193
+194 -194
+0 -194
+180 -194
+192 -194
+193 -194
+195 -194
+195 -195
+0 -195
+181 -195
+193 -195
+194 -195
+DEAL::0 0 0 0 

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.